mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 06:39:38 +07:00
There are 3 types of directories: plain directories, ordinary packages (with __init__.py) and PEP 420 namespace packages. There are 3 types of imports: absolute (from a root), same directory (absolute import from the current directory when it's not explicitly marked as a root) and relative imports (imports that start with dot). Absolute imports are correct in all kinds of directories. Same directory imports are correct in Python 2 in all cases and in Python 3 if we have the directory containing the script with this import in Python path at runtime. Users of Python 3 often face the problem when they can run the script from the console because the directory containing this script got into Python path but still have red underline and an unresolved reference error in the same directory import because PyCharm didn't know that this file will be used as a program's entry point. Previously, the way to fix such a problem was marking it as a source root. But this action was not so obvious, especially for newcomers. With this feature, such imports resolve successfully and now it is not necessary to mark directories as source roots. Relative imports are correct only in Python 3 namespace or ordinary packages and should not be used in plain directories. If we have a relative import in plain directory we highlight it with a weak warning and suggest 2 ways of fixing that: marking directory as a namespace package explicitly (with quick fix or with Mark As | Namespace Package) or changing this import to the same directory import with a quickfix or manually. Explicitly marking namespace packages can later be used for automatically running files from them and ordinary packages with "-m". The new resolve policy and explicit namespace packages can be disabled with the Registry flag "python.explicit.namespace.packages". These changes also address PY-40396. Namely, now any directory with __init__.py inside or explicitly marked as a namespace package has a package icon, regardless of its name or parents. GitOrigin-RevId: 310fa562eb60121243cb6d68386ffc3e45c73245
0 lines
0 B
Python
0 lines
0 B
Python
The file is empty.