Modify

Opened 7 years ago

Closed 41 hours ago

#13400 closed defect (fixed)

Missing package namespace declaration

Reported by: Ryan J Ollos Owned by: Jun Omae
Priority: normal Component: TracPygit2Plugin
Severity: normal Keywords:
Cc: Trac Release:

Description

Is TracPygit2Plugin intended to be a namespace package?

I'm still trying to understand namespace packages. The packaging documentation says:

Every distribution that uses the namespace package must include an identical __init__.py. If any distribution does not, it will cause the namespace logic to fail and the other sub-packages will not be importable. Any additional code in __init__.py will be inaccessible.

Here is the layout for TracMercurial:

$ cat tracext/__init__.py
__import__('pkg_resources').declare_namespace(__name__)
$ python setup.py bdist_wheel
[...]
$ pip install dist/TracMercurial-0.12.0.31.dev0-py2-none-any.whl
[...]
$ find pve/lib/python2.7/site-packages/tracext/ -name "*.py"
pve/lib/python2.7/site-packages/tracext/hg/hooks.py
pve/lib/python2.7/site-packages/tracext/hg/backend.py
pve/lib/python2.7/site-packages/tracext/hg/__init__.py

Note there is no __init__.py in pve/lib/python2.7/site-packages/tracext.

TracPygit2Plugin yields:

$ cat tracext/__init__.py
$ python setup.py bdist_wheel
[...]
$ pip install dist/TracPygit2Plugin-0.12.0.1-py2-none-any.whl
[...]
$ find pve/lib/python2.7/site-packages/tracext/ -name "*.py"
$ pve/lib/python2.7/site-packages/tracext/pygit2/pygit2_fs.py
$ pve/lib/python2.7/site-packages/tracext/pygit2/__init__.py
$ pve/lib/python2.7/site-packages/tracext/pygit2/translation.py
$ pve/lib/python2.7/site-packages/tracext/__init__.py
$ pve/lib/python2.7/site-packages/tracext/hg/hooks.py
$ pve/lib/python2.7/site-packages/tracext/hg/backend.py
$ pve/lib/python2.7/site-packages/tracext/hg/__init__.py

With patch, now there is again no __init__.py in pve/lib/python2.7/site-packages/tracext.

  • setup.py

     
    1414        'author': 'Jun Omae',
    1515        'author_email': 'jun66j5@gmail.com',
    1616        'packages': find_packages(exclude=['*.tests*']),
     17        'namespace_packages': ['tracext'],
    1718        'package_data': {
    1819            'tracext.pygit2': ['locale/*/LC_MESSAGES/*.mo'],
    1920        },
  • tracext/__init__.py

     
     1__import__('pkg_resources').declare_namespace(__name__)
$ python setup.py bdist_wheel
[...]
$ pip install dist/TracPygit2Plugin-0.12.0.1-py2-none-any.whl
[...]
$ find pve/lib/python2.7/site-packages/tracext/ -name "*.py"
pve/lib/python2.7/site-packages/tracext/pygit2/pygit2_fs.py
pve/lib/python2.7/site-packages/tracext/pygit2/__init__.py
pve/lib/python2.7/site-packages/tracext/pygit2/translation.py
pve/lib/python2.7/site-packages/tracext/hg/hooks.py
pve/lib/python2.7/site-packages/tracext/hg/backend.py
pve/lib/python2.7/site-packages/tracext/hg/__init__.py

Attachments (0)

Change History (2)

comment:1 Changed 7 years ago by Ryan J Ollos

comment:2 Changed 41 hours ago by Jun Omae

Resolution: fixed
Status: newclosed

In 18704:

TracPygit2Plugin: add package namespace declaration (closes #13400)

Patch by: Ryan J Ollos

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Jun Omae.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.