Giter Club home page Giter Club logo

Comments (8)

sanzoghenzo avatar sanzoghenzo commented on August 25, 2024 1

Hi,
as stated in #80 (comment), you can use extra_requires to specify the dependencies, for example:

setup(
    name="memacs",
    ...
    extras_require={
        "lastfm":  ["pylast"],
        "twitter": ["twython"],
    }
)

so a user can pip install memacs[lastfm] if you only need lastfm functionality.

Another option is to split it in separate packages, but having them under the same namespace by using namespace packages.

from memacs.

novoid avatar novoid commented on August 25, 2024

Thanks @sanzoghenzo, this is really good input here!
Are you feeling confident to contribute a modified setup.py? If you could do me this favor, I'd be very glad since you seem to have some experiments with this option while I don't...

from memacs.

sanzoghenzo avatar sanzoghenzo commented on August 25, 2024

Hi @novoid ,
honestly I moved to other stuff an I didn't have the time to look at this project...

If I have some spare time I'll look into that. Since I didn't write any of the code, it could take me quite some time and I can incur in errors; also, I don't know what granularity you wish to achieve (does every single module need to be installed separately?)

That said, I'll try to do it.

from memacs.

sanzoghenzo avatar sanzoghenzo commented on August 25, 2024

Also note that, for the scripts to be installed as dependencies, and to ensure cross platform compatibility, I need to change #96 and move the script definition to the "console_script" of "entry_points" argument as I explained in #80 (comment).

from memacs.

novoid avatar novoid commented on August 25, 2024

With the latest contribution of @sanzoghenzo, at least specific module dependencies could be installed optionally. This definitively solves some issues we had.

However, the main question still applies for other reasons as well:

Wouldn't it be better to split the main framework and the modules to separate Git(Hub) repositories?


This would have several advantages:

  • Third-party modules can be maintained by their original authors much better: clear authorship/owners, issue notifications, ...
  • A cleaner separation between the Memacs framework and the modules.
    • Even in this repository, I added some "works-on-my-machine"/standalone modules in the tmp sub-hierarchy. Those should be replaced by proper modules but I don't feel too much pressure for now.
  • more? (add comment)

Disadvantages:

  • There could be Memacs modules that require older and specific Memacs framework versions.
    • This issue might also apply on a combined repository.
  • more? (add comment)

In case the repo should be splitted, what are the main tasks to be done?

  • Notify external authors
  • Keep this repo as framework repo
  • Move my own modules to separate repos
    • Losing all their history?
  • How to inform the Memacs users of this change properly?

from memacs.

novoid avatar novoid commented on August 25, 2024

See #114 (comment) for an idea on splitting up within the same repo in order to install a module like pip install memacs[photos]

from memacs.

sanzoghenzo avatar sanzoghenzo commented on August 25, 2024

See #114 (comment) for an idea on splitting up within the same repo in order to install a module like pip install memacs[photos]

Hi @novoid ,
the things I stated in that comment are exactly the same as we discussed here, there's no new information there (I didn't remember any of this 😅) - without splitting the project into multiple sub-packages, memacs will be installed in full and only the dependencies can be selectively installed.

The way to go is still to split the code:

setup.py
memacs/
    # No __init__.py here.
    photos/
        # Sub-packages have __init__.py.
        __init__.py
        photos.py

with setup.py containing:

from setuptools import setup, find_namespace_packages

setup(
    name='memacs-photos',
    ...
    packages=find_namespace_packages(include=['memacs.*'])
)

What is up to you is to decide if all these sub packages need to stay in the same repository (this one), or if you can/want create one repo per sub-package.

The latter could be a bit overkill (especially if a sub package consists of only one module) and you will loose the git history, but can be useful for transitioning (especially if you call the new metapackage something different from memacs, so they can live simultaneously on pypi).

from memacs.

novoid avatar novoid commented on August 25, 2024

Hi @novoid , the things I stated in that comment are exactly the same as we discussed here, there's no new information there (I didn't remember any of this sweat_smile) - without splitting the project into multiple sub-packages, memacs will be installed in full and only the dependencies can be selectively installed.

Thanks for the clarification so that even I was able to understand the implications of your suggested change. ;-)

In this case, I reopen #114 because it does not split up the Memacs modules into separate repositories, allowing for different authors to keep their authorship.

This issue here still follows the idea of separating the Memacs modules, #114 follows the idea of letting the user decide which dependencies she wants to set up.

from memacs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.