- 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

Reply via email to