Hi,

I'm working on a Pyramid project composed of different tiers:

- Pyramid REST API
- Asynchronous Celery tasks

Since my REST API and asynchronous tasks targets the same database, I
set my data models in their own package. My project is therefore
structured this way:


    /
    ├─ myproj/
    │  ├─ common/
    │  │  ├─ utils/
    │  │  ├─ vendor/
    │  │  └─ __init__.py
    │  ├─ data/
    │  │  ├─ models/
    │  │  ├─ queries/
    │  │  ├─ schemas/
    │  │  └─ __init__.py
    │  ├─ server/
    │  │  ├─ views/
    │  │  ├─ ...
    │  │  └─ __init__.py
    │  ├─ tasks/
    │  │  ├─ common/
    │  │  │  ├─ __init__.py
    │  │  │  └─ celery.py
    │  │  ├─ task1/
    │  │  │  ├─ ...
    │  │  │  └─ __init__.py
    │  │  ├─ task2/
    │  │  │  ├─ ...
    │  │  │  └─ __init__.py
    │  │  └─ __init__.py
    │  └─ __init__.py
    └─ setup.py


``myproj`` and ``myproj.tasks`` are two `namespace packages
<https://packaging.python.org/guides/packaging-namespace-packages/#pkgutil-style-namespace-packages>`_
with the ``__init__.py`` file only containing the following:


    __path__ = __import__('pkgutil').extend_path(__path__, __name__)


This way, I can build a clear dependency graph for example:

* ``myproj.server`` depends on ``myproj.common`` and ``myproj.data``.
* Any tasks will depend on ``myproj.tasks.common`` and optionally on
``myproj.common`` or ``myproj.data``.

Now come the hard part. Our team is too small to get the project
divided in multiple sub-projects and I would also like to keep
distribution as simple as possible meaning keeping only one
``setup.py`` so that with one ``./setup.py bdist``, I can create
**all** the packages I need to distribute the project.

And indeed I'd like to have multiple packages for this one project so
I can install only the required dependencies for each subsystem. In
the end, I'd like to get a distribution package for the following:

* myproj.common
* myproj.data
* myproj.server
* myproj.tasks.common
* myproj.tasks.task1
* myproj.tasks.task2

Any idea how I can get this far keeping the overall project management
as simple as possible?

Regards,
Jimmy

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to pylons-discuss+unsubscr...@googlegroups.com.
To post to this group, send email to pylons-discuss@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/CAMqSRmBmsR__suMNLS%2Bu1BEAw9X5UPqfA6e5s%3D54EF%2BR5r4EQw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to