Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cope with Pycharm's oddity in detecting namespace packages #43116

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion airflow/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from __future__ import annotations

# Make `airflow` a namespace package, supporting installing
# airflow.providers.* in different locations (i.e. one in site, and one in user
# lib.) This is required by some IDEs to resolve the import paths.
# And it _has_ to be the first code line too. Sad panda
__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore

from __future__ import annotations # noqa: F404
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although:

Python mandates that future-imports must appear in the module before any other code except docstrings

https://peps.python.org/pep-0008/#module-level-dunder-names

Copy link
Contributor

@shahar1 shahar1 Oct 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question to the audience - can we live with it (or similar workaround) for now until we find a better alternative?

Partial answer - mypy and some static checks don't like it...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This really does feel like a massive bug in pycharm :(

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, for now I think we can live with that bug.

Once we move a good number of things from Airflow to SDK, maybe the airflow/__init__.py file won't have much content left to keep from __future__ import annotations!


__version__ = "3.0.0.dev0"

import os
Expand Down
4 changes: 3 additions & 1 deletion providers/src/airflow/providers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@
# specific language governing permissions and limitations
# under the License.

from __future__ import annotations

# Make `airflow` a namespace package, supporting installing
# airflow.providers.* in different locations (i.e. one in site, and one in user
# lib.) This is required by some IDEs to resolve the import paths.
# And it _has_ to be the first code line too. Sad panda
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐼☹

#
# Note: this file is not installed or distributed in any distribution!
__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore

from __future__ import annotations # noqa: F404
Loading