Subject: [bug#49834] Add dynaconf

From: Sarah Morgensen <[email-masked]>
Date: Sat, 28 Aug 2021 15:46:14 -0700

Hi Giacomo,

Giacomo Leidi <[email-masked]> writes:

> Dear Sarah,
>
> thank you for your review!

Thank you for your continued work on this.  I know it can be a long and
sometimes discouraging process, and we often end up with abandoned
patches because of it.

>
> On 8/4/21 8:26 PM, Sarah Morgensen wrote:
>> The pyproject.toml file does say this is "MIT" (= expat), but there's no
>> actual license file in the project. I don't think this is sufficient as
>> far as Guix is concerned (perhaps an actual maintainer/committer can
>> comment?)
>
> First of all I opened an upstream PR [0] to add an actual LICENSE file: I hope
> that, given its simplicity, it will get merged soon.

Fingers crossed!

>
> I'm no expert about this but I tried building dynaconf without flake8-debugger
> and it seems to work flawlessly. The dependency was put there by the python
> importer, probably the developers have it in some dev-dependencies declaration
> needed to commit well-formatted code in the repository.
>
> Since flake8-debugger doesn't appear to be required for the inclusion of
> dynaconf maybe we can exclude it for this time and whenever the PR will 
> be merged I'll open another Guix issue to add it.
>
> What do you think about this approach? (I'm attaching an updated patch-set
> without flake8-debugger and rebased on current master).

Did you receive my other email?  I found that in fact none of the flake8
packages, as well as some others, are actually required.  I apologise if
merging these bugs caused it to get lost!  I'll quote it below.

Sarah Morgensen <[email-masked]> writes:

> Hi,
>
> Thanks again for your work on packaging this!
>
> Giacomo Leidi <[email-masked]> writes:
>
>> * gnu/packages/python-xyz.scm (python-colorama-0.4.1): New variable,
>> (python-dotenv-0.13.0): New variable,
>> (dynaconf): New variable.
>
> Packages typically get one commit per package (so this would be three
> commits).
>
>>  * gnu/packages/patches/dynaconf-Unvendor-dependencies.patch: New file.
>   ^ an extra space slipped in here.
>
>> [...]
>> +    (arguments
>> +     `(#:phases
>> +       (modify-phases %standard-phases
>> +         (replace 'check
>> +           (lambda* (#:key tests? outputs #:allow-other-keys)
>> +             (when tests?
>> +               (setenv "PATH"
>> +                       (string-append (assoc-ref outputs "out") "/bin:"
>> +                                      (getenv "PATH")))
>> +               ;; These tests depend on hvac and a
>> +               ;; live Vault process.
>> +               (delete-file "tests/test_vault.py")
>> +               (invoke "make" "test_only"))
>> +             #t)))))
>                 ^ Nitpick: phases no longer have to end in #t, though it
>                 doesn't hurt.
>
>> +    (propagated-inputs
>> +     `(("python-click" ,python-click)
>> +       ("python-dotenv" ,python-dotenv-0.13.0)
>> +       ("python-ruamel.yaml" ,python-ruamel.yaml)
>> +       ("python-toml" ,python-toml)))
>> +    (native-inputs
>> +     `(("make" ,gnu-make)
>> +       ("python-codecov" ,python-codecov)
>> +       ("python-configobj" ,python-configobj)
>> +       ("python-colorama" ,python-colorama-0.4.1)
>> +       ("python-django" ,python-django)
>> +       ("python-flake8" ,python-flake8)
>> +       ("python-flake8-debugger" ,python-flake8-debugger)
>> +       ("python-flake8-print" ,python-flake8-print)
>> +       ("python-flake8-todo" ,python-flake8-todo)
>> +       ("python-flask" ,python-flask)
>> +       ("python-future" ,python-future)
>> +       ("python-pep8-naming" ,python-pep8-naming)
>> +       ("python-pytest" ,python-pytest-6)
>> +       ("python-pytest-cov" ,python-pytest-cov)
>> +       ("python-pytest-forked" ,python-pytest-forked)
>> +       ("python-pytest-mock" ,python-pytest-mock)
>> +       ("python-pytest-xdist" ,python-pytest-xdist)
>> +       ("python-radon" ,python-radon)))
>
> With the test_only target, I think only a few of these are actually
> required. Also, configobj should probably be a propagated input as
> dynaconf uses it for ini files. I've attached a patch below.
>
> Notably, this seems to make python-flake8-debugger, python-flake8-todo,
> python-pep8-naming and python-colorama-0.4.1 unneccessary (I think
> because they are used for code linting, and the test_only target doesn't
> do linting). WDYT?
>
> (Even if they aren't necessary for packaging dynaconf, you're still
> welcome to send them as separate patches :)
>
>> +    (home-page
>> +     "https://github.com/rochacbruno/dynaconf")
>        ^ Nitpick: this can go on one line
>        
>> +    (synopsis
>> +     "The dynamic configurator for your Python Project")
>        ^ Likewise
>        
>> +    (description
>> +     "This package provides @code{dynaconf} the dynamic configurator for
>> +your Python Project.")
>
> Even as someone who has used python a lot before, this doesn't tell me
> anything about what dynaconf actually does or why I might want to
> install it. (Or, is it even an end-user package?) For examples, take a
> look at pretty much any package which has more than two lines in its
> description (like, say, python-seaborn). I know writing a good
> description can be difficult, but they tend to stick around and read by
> lots of people, so getting it right the first time is important!
>
>
>
> diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
> index f4f3b7fb3f..58defd9fcc 100644
> --- a/gnu/packages/python-xyz.scm
> +++ b/gnu/packages/python-xyz.scm
> @@ -26380,28 +26380,16 @@ It implements advanced Python dictionaries with dot notation access.")
>               #t)))))
>      (propagated-inputs
>       `(("python-click" ,python-click)
> +       ("python-configobj" ,python-configobj)
>         ("python-dotenv" ,python-dotenv-0.13.0)
>         ("python-ruamel.yaml" ,python-ruamel.yaml)
>         ("python-toml" ,python-toml)))
>      (native-inputs
> -     `(("make" ,gnu-make)
> -       ("python-codecov" ,python-codecov)
> -       ("python-configobj" ,python-configobj)
> -       ("python-colorama" ,python-colorama-0.4.1)
> -       ("python-django" ,python-django)
> -       ("python-flake8" ,python-flake8)
> -       ("python-flake8-debugger" ,python-flake8-debugger)
> -       ("python-flake8-print" ,python-flake8-print)
> -       ("python-flake8-todo" ,python-flake8-todo)
> +     `(("python-django" ,python-django)
>         ("python-flask" ,python-flask)
> -       ("python-future" ,python-future)
> -       ("python-pep8-naming" ,python-pep8-naming)
>         ("python-pytest" ,python-pytest-6)
>         ("python-pytest-cov" ,python-pytest-cov)
> -       ("python-pytest-forked" ,python-pytest-forked)
> -       ("python-pytest-mock" ,python-pytest-mock)
> -       ("python-pytest-xdist" ,python-pytest-xdist)
> -       ("python-radon" ,python-radon)))
> +       ("python-pytest-mock" ,python-pytest-mock)))
>      (home-page
>       "https://github.com/rochacbruno/dynaconf")
>      (synopsis
>
>
> --
> Sarah