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

Pyreverse: working without without __init__.py files #2763

Open
azzamsa opened this issue Feb 22, 2019 · 11 comments
Open

Pyreverse: working without without __init__.py files #2763

azzamsa opened this issue Feb 22, 2019 · 11 comments
Labels
Enhancement ✨ Improvement to a component namespace-package pyreverse Related to pyreverse component

Comments

@azzamsa
Copy link

azzamsa commented Feb 22, 2019

This ability already requested in #842, But I think it's only for Pylint, not Pyreverse.

With PEP 420 -- Implicit Namespace Packages I can work seamlessly without ever needed the __init__.py files. But when it comes to generating class diagram with Pyreverse, I have to add them unless it didn't work

My current dirty-solution is to add __init__.py to all my project folder temporarily, then stash them back and forth. Indeed it's not convenience experience.

Hope Pyreverse will work without __init__.py

Step to reproduce

With this directory structure

Myproject.py
├── Controllers
├── Model
├── Resources
│   ├── img
│   └── ui
└── Views

and $ pyreverse -my -A -o png -p myprojectname .

Thank you for Pyreverse.

@PCManticore
Copy link
Contributor

Sounds like a good suggestion, thanks for reporting it!

@PCManticore PCManticore added Enhancement ✨ Improvement to a component pyreverse Related to pyreverse component labels Feb 22, 2019
@azzamsa
Copy link
Author

azzamsa commented Feb 23, 2019

We give a lot of hope to Pyreverse. Hope I can contribute back.

I don't know why in such tremendous amount of library in Python ecosystem, where choosing between them is so confusing. We have one and the only UML generating library that works. Other lib last release is years years ago.

@PCManticore
Copy link
Contributor

Thanks for the kind words @azzamsa If you want to open a PR, I'd be happy to review or offer suggestions.

@ThomasHagebols
Copy link

Is anyone still looking into this? Haven't spend much time on it yet but explicit namespacing seems to be enforced in the function defined here

https://github.com/PyCQA/pylint/blob/30b2ae713eb4453b305407772b29ea68d7c3d074/pylint/pyreverse/inspector.py#L332

More specifically in line:

https://github.com/PyCQA/pylint/blob/30b2ae713eb4453b305407772b29ea68d7c3d074/pylint/pyreverse/inspector.py#L354

Do you agree? I might be interested to pick up this issue

arcivanov added a commit to arcivanov/pybuilder that referenced this issue Oct 12, 2021
arcivanov added a commit to arcivanov/pybuilder that referenced this issue Oct 13, 2021
arcivanov added a commit to pybuilder/pybuilder that referenced this issue Oct 13, 2021
@RobinLanglois
Copy link

Hello, is this still open ? Since it was referenced in commits ? But it doesn't seem to work 😕

@Pierre-Sassoulas
Copy link
Member

The commit are from the pybuilder repository not pylint, no one worked on it yet :)

@jxramos
Copy link

jxramos commented Jun 2, 2022

Yah line 343 seems to be making the hard association to package folders being defined by the presence of __init__.py

https://github.com/PyCQA/pylint/blob/30b2ae713eb4453b305407772b29ea68d7c3d074/pylint/pyreverse/inspector.py#L340-L345

I wonder how things would work if that condition is simply removed. How's the testing on this project, I'm curious to tinker around with things with a simple deletion and running of unit tests and see how things go.

@jxramos
Copy link

jxramos commented Jun 2, 2022

Should this issue have the namespace-package label applied?

To help others with @azzamsa current dirty solution they can run find foo/bar -type d -exec touch {}/__init__.py \; to get going quickly if they are on a nix system.

@Pierre-Sassoulas
Copy link
Member

I'm curious to tinker around with things with a simple deletion and running of unit tests and see how things go.

You can check the contributor guide, please let us know if it's not clear. We did not invest a lot of time in it right now as we focussed on the user documentation for 2.14.

@DudeNr33
Copy link
Collaborator

DudeNr33 commented Jun 2, 2022

How's the testing on this project, I'm curious to tinker around with things with a simple deletion and running of unit tests and see how things go.

You can find the existing tests under tests/pyreverse.
A lot of the test data that is used there for all tests except test_pyreverse_functional.py is found under tests/data.
As test_writer.py generates all possible diagrams with different output formats from this test data, you should be aware that adding e. g. a new subpackage without __init__.py there would mean that you have to update the expected output for the other tests as well.
So for this feature I would probably go for creating a simple package structure dynamically in the test by using the tmpdir fixture.

Tests are run with pytest. After forking and cloning the repository you should run pip install -r requirements_test.txt to install all necessary dependencies. See also our documentation for more details.

Let me know if you need help!

@astronasko
Copy link

Could someone confirm if #7153 fixes this issue for them?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement ✨ Improvement to a component namespace-package pyreverse Related to pyreverse component
Projects
None yet
Development

No branches or pull requests

8 participants