Path: csiph.com!optima2.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!1.eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Marko Rauhamaa Newsgroups: comp.lang.python Subject: Re: module dependencies issues Date: Thu, 09 Jul 2015 23:36:38 +0300 Organization: A noiseless patient Spider Lines: 20 Message-ID: <87wpy96pbd.fsf@elektro.pacujo.net> References: <10ADE079-3F0F-4EA8-9312-06F7FCDB6130@free.fr> <85B68343-326C-4768-A236-3459299AD129@free.fr> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="b7cb1518d23ec19d482dcc9c31d30fdd"; logging-data="19788"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Mhamz146E7QA1JHQHJFg+" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Cancel-Lock: sha1:H7+22OkXMtOGxCinbpxR2HAz4Z4= sha1:eKNFISMLWcAZfhKxD8M4inAdwRQ= Xref: csiph.com comp.lang.python:93606 Chris Angelico : > How do you expect the end result to work? Will it be that your code > imports one version of a module, but other code imports another? You > would have to rename one of them or something. At work, we have created an analogous component system that has solved this issue the way I think it should be solved. Component B ver 1.1 must declare (ABI) backward-compatibility with B ver 1.0. That allows the component system to resolve such natural dependency discrepancies in a safe manner. The application (or component) C, which was created at B ver 1.0 time, can't depend on >= B-1.0 because C has no way of knowing if, say, B-2.0 will be backward-compatible with B-1.0. The compatibility declaration belongs to B. Marko