- I'm not at all familiar with composer. - For DNF - I assume you mean CNF, logical expression format generally used in SAT solvers (not DNF as in I did-not-finish the blog post I'm working on on this yet).
If the question is why backtracking rather than SAT solving, I start to get into that in background here <https://github.com/awwad/depresolve/blob/master/docs/background.md#sat-solving-vs-blind-backtracking>. I'm hesitant to link to this scribbling. I'll have a broader summary with data later - I've run some comparisons using enthought/depsolver's SAT solver, along with some backtrackers (the pip patch previously linked to and a currently-flawed one of my own). On Fri, Jun 3, 2016 at 12:46 PM Daniel Holth <[email protected]> wrote: > Tell me what you know about SAT solvers, dnf and composer. > > On Fri, Jun 3, 2016, 12:28 Sebastien Awwad <[email protected]> > wrote: > >> This ties into what I've been working on to fix the package dependency >> conflict resolution problem for pip >> <https://github.com/pypa/pip/issues/988>, actually: >> >> You may be able to use a tool I wrote to automatically extract >> requirements from setup.py, without installing (knowing that setup.py is >> arbitrary code and that dependencies are not strictly static). I opted >> to go with an admittedly drastic method of patching pip 8 to extract >> dependency data from each source distribution it touches in download mode >> when called by my dependency scraper. I decided that in the absence of >> static requirements for source distributions, the best I could really do in >> practice was to parse requirements exactly the way pip does. If you want, >> you can run the scraper from my project, which is here (project itself >> still a WIP). In particular, if you install it and run 'python >> depresolve/scrape_deps_and_detect_conflicts.py >> "some-package-name(1.0.0)"', it'll spit out the dependencies to a json >> file for the sdist for version 1.0.0 of some-package-name (more >> instructions here >> <https://github.com/awwad/depresolve#instructions-for-use-scraper> - it >> can also operate with local sdists or indexes). >> >> In my case, for pypa/pip:issue988, I needed to harvest mass dependency >> info to test a few different dependency conflict resolvers on. I'm working >> on writing up some of what I've learned and will probably end up >> recommending a basic integrated backtracking resolver within pip - probably >> an updated version of rbtcollins' backtracking resolver pip patches >> <https://github.com/pypa/pip/pull/2716> (which I'd be happy to rework >> and send a PR to pip on, if Robert doesn't have the bandwidth for it). >> >> Sebastien >> > On Jun 3, 2016, at 09:58, Daniel Holth <[email protected]> wrote: >> >> Here is how you can write setup_requires and test_requires to a file, by >> adding a plugin to egg_info.writers in setuptools. >> >> https://gist.github.com/dholth/59e4c8a0c0d963b019d81e18bf0a89e3 >> >> On Fri, Jun 3, 2016 at 9:29 AM Paul Moore <[email protected]> wrote: >> >>> On 3 June 2016 at 14:24, Christopher Baines <[email protected]> wrote: >>> > On 03/06/16 14:19, Paul Moore wrote: >>> >> On 3 June 2016 at 13:20, Christopher Baines <[email protected]> wrote: >>> >>> I'm trying to write a script to get information about a source >>> >>> distributions requirements (from the source distribution), but I'm >>> not >>> >>> sure how to access the tests_require and setup_requires that can >>> >>> sometimes be found in the setup.py? >>> >>> >>> >>> Apologies if this is really simple, and I've just missed the answer, >>> but >>> >>> I've searched for it a few times now, and not come up with anything. >>> >> >>> >> If I understand what you're trying to achieve, the only way of getting >>> >> the "final" information (i.e, what will actually get used to install) >>> >> is by running the setup.py script. That's basically the key issue with >>> >> the executable setup.py format - there's no way to know the >>> >> information without running the script. >>> >> >>> >> You may be able to get the information without doing a full install by >>> >> using the "setup.py egg_info" subcommand provided by setuptools. >>> >> That's what pip uses, for example (but pip doesn't look at >>> >> tests_require or setup_requires, so you'd have to check if that >>> >> information was available by that route). >>> > >>> > As far as I can see (I checked setuptools and flake8), neither >>> > tests_require or setup_requires are present in the egg_info metadata >>> > directory. >>> > >>> > Is there no way of getting setuptools to write the data out to a file? >>> >>> Maybe you could write your own command class? Or monkeypatch >>> setuptools.setup() to write its arguments to a file? >>> >>> I don't know of any non-ugly way, though, sorry... >>> Paul >>> _______________________________________________ >>> Distutils-SIG maillist - [email protected] >>> https://mail.python.org/mailman/listinfo/distutils-sig >>> >> _______________________________________________ >> Distutils-SIG maillist - [email protected] >> https://mail.python.org/mailman/listinfo/distutils-sig >> >>
_______________________________________________ Distutils-SIG maillist - [email protected] https://mail.python.org/mailman/listinfo/distutils-sig
