* gnu/packages/check.scm (python-covdefaults): New variable. --- gnu/packages/check.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index c71edc7655..c2435a78af 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -1081,6 +1081,37 @@ same arguments.") `(("python2-mock" ,python2-mock) ,@(package-propagated-inputs base)))))) +(define-public python-covdefaults + (package + (name "python-covdefaults") + (version "1.1.0") + (source + (origin + ;; The PyPI tarball does not include tests. + (method git-fetch) + (uri (git-reference + (url "https://github.com/asottile/covdefaults") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11a24c0wzv01n55fy4kdpnyqna4m9k0mp58kmhiaks34xw4k37hq")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "pytest" "-vv") + #t))))) + (propagated-inputs + `(("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/asottile/covdefaults") + (synopsis "Coverage plugin to provide sensible default settings") + (description + "Covdefaults is a coverage plugin to provide sensible default settings.") + (license license:expat))) + (define-public python-pytest-xdist (package (name "python-pytest-xdist") -- 2.20.1
* gnu/packages/python-xyz.scm (python-cfgv): New variable. --- gnu/packages/python-xyz.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 300277f045..ac839a4e16 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -17210,6 +17210,39 @@ Let's Encrypt.") (define-public python2-dns-lexicon (package-with-python2 python-dns-lexicon)) +(define-public python-cfgv + (package + (name "python-cfgv") + (version "3.1.0") + (source + (origin + ;; There are no tests in the PyPI tarball. + (method git-fetch) + (uri (git-reference + (url "https://github.com/asottile/cfgv") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1vvkkqw92sak4b28bpscpppq483amy52ch2yqy1i2m23q7xjkabx")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "pytest" "-vv") + #t))))) + (native-inputs + `(("python-covdefaults" ,python-covdefaults) + ("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/asottile/cfgv") + (synopsis "Validate configuration and produce human readable error messages") + (description + "This library helps to validate configuration and produce human readable +error messages.") + (license license:expat))) + (define-public python-commandlines (package (name "python-commandlines") -- 2.20.1
* gnu/packages/python-xyz.scm (python-identify): New variable. --- gnu/packages/python-xyz.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index ac839a4e16..045ee833ff 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -161,6 +161,7 @@ #:use-module (gnu packages terminals) #:use-module (gnu packages tex) #:use-module (gnu packages texinfo) + #:use-module (gnu packages textutils) #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) @@ -17119,6 +17120,40 @@ library to allow local file system access via @code{file://} URLs.") (define-public python2-requests-file (package-with-python2 python-requests-file)) +(define-public python-identify + (package + (name "python-identify") + (version "1.4.20") + (source + (origin + ;; There are no tests in the PyPI tarball. + (method git-fetch) + (uri (git-reference + (url "https://github.com/chriskuehl/identify") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ivafv83ivjgyan10yf0calbzraknps60n2v841n7jfazracr8v2")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "pytest" "-vv") + #t))))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-editdistance" ,python-editdistance))) + (home-page "https://github.com/chriskuehl/identify") + (synopsis "File identification library for Python") + (description + "File identification library for Python. Given a file (or some information +about a file), return a set of standardized tags identifying what the file is.") + (license license:expat))) + (define-public python-tldextract (package (name "python-tldextract") -- 2.20.1
* gnu/packages/python-xyz.scm (python-nodeenv): New variable. --- gnu/packages/python-xyz.scm | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 045ee833ff..9eac0ff74f 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -17187,6 +17187,44 @@ Public Suffix List's private domains as well.") (define-public python2-tldextract (package-with-python2 python-tldextract)) +(define-public python-nodeenv + (package + (name "python-nodeenv") + (version "1.4.0") + (source + (origin + ;; There's no tarball in PyPI. + (method git-fetch) + (uri (git-reference + (url "https://github.com/ekalinin/nodeenv") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0y443icx0w7jlzmxmmcm4q8dqfiwgafbb9cp8jpm68mbqxbz40a7")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; This test fails. It tries to open a network socket. + (invoke "pytest" "-vv" "-k" "not test_smoke") + #t))))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-flake8" ,python-flake8) + ("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-tox" ,python-tox))) + (home-page "https://ekalinin.github.io/nodeenv/") + (synopsis "Tool to create isolated node.js environments") + (description + "Nodeenv (node.js virtual environment) is a tool to create isolated +node.js environments. It creates an environment that has its own installation +directories, that doesn't share libraries with other node.js virtual +environments.") + (license license:bsd-3))) + (define-public python-pynamecheap (package (name "python-pynamecheap") -- 2.20.1
* gnu/packages/check.scm (python-pytest-env): New variable. --- gnu/packages/check.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index c2435a78af..f03d1f42fe 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -933,6 +933,26 @@ and many external plugins.") ("python-py" ,python2-py) ("python-wcwidth" ,python2-wcwidth)))))) +(define-public python-pytest-env + (package + (name "python-pytest-env") + (version "0.6.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-env" version)) + (sha256 + (base32 "1hl0ln0cicdid4qjk7mv90lw9xkb0v71dlj7q7rn89vzxxm9b53y")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/MobileDynasty/pytest-env") + (synopsis "Pytest plugin that allows you to add environment variables") + (description + "This is a py.test plugin that enables you to set environment variables +in the pytest.ini file.") + (license license:expat))) + (define-public python-pytest-cov (package (name "python-pytest-cov") -- 2.20.1
* gnu/packages/python-xyz.scm (python-pre-commit): New variable. --- gnu/packages/python-xyz.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 9eac0ff74f..972eb64d8e 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -16852,6 +16852,34 @@ Glob2 currently based on the glob code from Python 3.3.1.") (define-public python2-glob2 (package-with-python2 python-glob2)) +(define-public python-pre-commit + (package + (name "python-pre-commit") + (version "2.5.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pre_commit" version)) + (sha256 + (base32 "1ivl921kdk9wga2cix4j9ydvs3dryqaaayq496pzjmz2y3w3qins")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;tests require python-tox >= 3.13 + (propagated-inputs + `(("python-cfgv" ,python-cfgv) + ("python-identify" ,python-identify) + ("python-nodeenv" ,python-nodeenv) + ("python-pyyaml" ,python-pyyaml) + ("python-toml" ,python-toml) + ("python-virtualenv" ,python-virtualenv))) + (home-page "https://pre-commit.com/") + (synopsis "Framework for managing and maintaining multi-language pre-commit hooks") + (description + "Pre-commit is a multi-language package manager for pre-commit hooks. You +specify a list of hooks you want and pre-commit manages the installation and +execution of any hook written in any language before every commit.") + (license license:expat))) + (define-public python-gipc (package (name "python-gipc") -- 2.20.1
[-- Attachment #1: Type: text/plain, Size: 2406 bytes --] Hi Vinicius, Sorry for the slow response. The series look great overall, but I have a few nitpicks. :-) Vinicius Monego <monego@posteo.net> writes: > * gnu/packages/check.scm (python-covdefaults): New variable. We now have a 'python-check.scm' which is preferable to check.scm. Can you add this library there instead? Ideally we'd move the current Python test libraries over too, but that's another issue. [...] > +(define-public python-covdefaults > + (package > + (name "python-covdefaults") > + (version "1.1.0") > + (source > + (origin > + ;; The PyPI tarball does not include tests. > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/asottile/covdefaults") > + (commit (string-append "v" version)))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 "11a24c0wzv01n55fy4kdpnyqna4m9k0mp58kmhiaks34xw4k37hq")))) > + (build-system python-build-system) > + (arguments > + `(#:phases > + (modify-phases %standard-phases > + (replace 'check > + (lambda _ > + (invoke "pytest" "-vv") > + #t))))) Note: invoke returns #t on success, so no need for the explicit return (though it does not hurt). > + (propagated-inputs > + `(("python-coverage" ,python-coverage) > + ("python-pytest" ,python-pytest))) Should pytest be propagated here? Also, as this package is a plugin for coverage, maybe it should not propagate coverage either. The reason is that propagating prevents it from being (easily) used with other versions of coverage. Let's say that a package needs a newer coverage than the default in Guix + this plugin, propagation here would bring in the wrong coverage version. > + (home-page "https://github.com/asottile/covdefaults") > + (synopsis "Coverage plugin to provide sensible default settings") > + (description > + "Covdefaults is a coverage plugin to provide sensible default settings.") I know it's a lot to ask :-) but can you try to expand on how it differs from the apparently unreasonable defaults in coverage? "Sensible" also borders on "marketing speak", perhaps "opinionated" is a better term. This was more text than I intended for an otherwise good-looking patch! Will comment on the others too. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
[-- Attachment #1: Type: text/plain, Size: 428 bytes --] Vinicius Monego <monego@posteo.net> writes: > * gnu/packages/python-xyz.scm (python-cfgv): New variable. [...] > + (synopsis "Validate configuration and produce human readable error messages") Maybe just 'Configuration validation library'. > + (description > + "This library helps to validate configuration and produce human readable > +error messages.") *configuration files (I think?) Otherwise LGTM, thanks! [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
[-- Attachment #1: Type: text/plain, Size: 117 bytes --] Vinicius Monego <monego@posteo.net> writes: > * gnu/packages/python-xyz.scm (python-identify): New variable. LGTM! [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
[-- Attachment #1: Type: text/plain, Size: 930 bytes --] Vinicius Monego <monego@posteo.net> writes: > * gnu/packages/python-xyz.scm (python-nodeenv): New variable. We often omit the python- prefix for packages that are not used as a library, i.e. Python packages that produce a "normal program". Is that the case here? Perhaps it would make sense to place this in (gnu packages node) as simply "nodeenv"? [...] > + (native-inputs > + `(("python-coverage" ,python-coverage) > + ("python-flake8" ,python-flake8) > + ("python-mock" ,python-mock) > + ("python-pytest" ,python-pytest) > + ("python-tox" ,python-tox))) 'python-tox' can probably be removed since we call out to pytest directly. Some packages needlessly test for it though, in that case you can remove it from requirements-dev.txt with substitute*. > + (home-page "https://ekalinin.github.io/nodeenv/") > + (synopsis "Tool to create isolated node.js environments") s/Tool to c/C/ [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
[-- Attachment #1: Type: text/plain, Size: 1079 bytes --] Vinicius Monego <monego@posteo.net> writes: > * gnu/packages/check.scm (python-pytest-env): New variable. python-check.scm is better here too, even though pytest lives elsewhere. [...] > +(define-public python-pytest-env > + (package > + (name "python-pytest-env") > + (version "0.6.2") > + (source > + (origin > + (method url-fetch) > + (uri (pypi-uri "pytest-env" version)) > + (sha256 > + (base32 "1hl0ln0cicdid4qjk7mv90lw9xkb0v71dlj7q7rn89vzxxm9b53y")))) > + (build-system python-build-system) > + (propagated-inputs > + `(("python-pytest" ,python-pytest))) As mentioned in another patch, it's good not to propagate the package that this one "plugs in to", in order to allow using it with other versions. > + (home-page "https://github.com/MobileDynasty/pytest-env") > + (synopsis "Pytest plugin that allows you to add environment variables") > + (description > + "This is a py.test plugin that enables you to set environment variables > +in the pytest.ini file.") @command{py.test} and @file{pytest.ini}. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
[-- Attachment #1: Type: text/plain, Size: 2078 bytes --] Vinicius Monego <monego@posteo.net> writes: > * gnu/packages/python-xyz.scm (python-pre-commit): New variable. [...] > +(define-public python-pre-commit > + (package > + (name "python-pre-commit") > + (version "2.5.1") > + (source > + (origin > + (method url-fetch) > + (uri (pypi-uri "pre_commit" version)) > + (sha256 > + (base32 "1ivl921kdk9wga2cix4j9ydvs3dryqaaayq496pzjmz2y3w3qins")))) > + (build-system python-build-system) > + (arguments > + `(#:tests? #f)) ;tests require python-tox >= 3.13 Do they really require Tox directly? Tox is fairly redundant in Guix, as all it does is create an isolated environment for running tests, which Guix already does. So the usual approach is to copy the command for running tests out of tox.ini and run it directly in the check phase. Is that an option here? > + (propagated-inputs > + `(("python-cfgv" ,python-cfgv) > + ("python-identify" ,python-identify) > + ("python-nodeenv" ,python-nodeenv) > + ("python-pyyaml" ,python-pyyaml) > + ("python-toml" ,python-toml) > + ("python-virtualenv" ,python-virtualenv))) Does this program produce a regular executable? I.e. it's not intended for use as a library? In that case you can simply add these as regular inputs, and the executable will be "wrapped" with the correct PYTHONPATH. Also, maybe we can omit the python- prefix here too, and perhaps place it in version-control.scm? > + (home-page "https://pre-commit.com/") > + (synopsis "Framework for managing and maintaining multi-language pre-commit hooks") > + (description > + "Pre-commit is a multi-language package manager for pre-commit hooks. You > +specify a list of hooks you want and pre-commit manages the installation and > +execution of any hook written in any language before every commit.") Woow, a package manager for pre-commit hooks, amazing. LGTM. :-) Can you send a v2 series? By the way, great job at enabling tests for the other packages. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
Em seg, 2020-07-20 às 23:13 +0200, Marius Bakke escreveu: > Hi Vinicius, Hello Marius, Thanks for the tips! > We now have a 'python-check.scm' which is preferable to > check.scm. Can > you add this library there instead? Sure. I overlooked that file. I sent another series of 6 pytest patches before this, and will send a v2 for that as well. > Should pytest be propagated here? > > Also, as this package is a plugin for coverage, maybe it should not > propagate coverage either. The reason is that propagating prevents > it > from being (easily) used with other versions of coverage. Let's say > that a package needs a newer coverage than the default in Guix + this > plugin, propagation here would bring in the wrong coverage version. Oh, I thought that the pytest binary should be available as an executable for the plugin to be used, similar to how APT has pytest as a dependency for plugins. Maybe it's just me thinking in terms of traditional package management. The PyPI importer will propagate pytest by default, and it's common to see it propagated in other plugins in check.scm. But now I see that many plugins do not propagate it. Should pytest not be an input at all (unless the plugin uses it for its own tests, in which case it should be a native input)? > I know it's a lot to ask :-) but can you try to expand on how it > differs > from the apparently unreasonable defaults in coverage? "Sensible" > also > borders on "marketing speak", perhaps "opinionated" is a better term. That's a slight rewording of the author's description in the repository, and that's the only verbal information I could find about the project. The differences can be seen in the README and in the source code, but I don't know what to write about them, or even why the changes are 'more sensible'.
Em seg, 2020-07-20 às 23:25 +0200, Marius Bakke escreveu: > We often omit the python- prefix for packages that are not used as a > library, i.e. Python packages that produce a "normal program". Is > that > the case here? It does provide an executable. It's a tool like virtualenv, but for Node packages instead of Python. > Perhaps it would make sense to place this in (gnu packages node) as > simply "nodeenv"? IIUC the {language} modules are for packages affiliated with the foundation behind the language, or other compiler or interpreter implementations. That's not the case here. > > + (native-inputs > > + `(("python-coverage" ,python-coverage) > > + ("python-flake8" ,python-flake8) > > + ("python-mock" ,python-mock) > > + ("python-pytest" ,python-pytest) > > + ("python-tox" ,python-tox))) > > 'python-tox' can probably be removed since we call out to pytest > directly. Some packages needlessly test for it though, in that case > you > can remove it from requirements-dev.txt with substitute*. Removed. I also removed flake8, since it's only used in the tox.ini file.
Em seg, 2020-07-20 às 23:36 +0200, Marius Bakke escreveu: > Do they really require Tox directly? Tox is fairly redundant in > Guix, > as all it does is create an isolated environment for running tests, > which Guix already does. So the usual approach is to copy the > command > for running tests out of tox.ini and run it directly in the check > phase. Is that an option here? I read CONTRIBUTING.md and those were the instructions. I was running into weird error messages and assumed the cause was tox not being used. But, nevermind. It was simply that, like in the previous packages, the PyPI tarball does not include tests. I downloaded a git checkout and now the tests are running, though with many deselections. > Does this program produce a regular executable? I.e. it's not > intended > for use as a library? In that case you can simply add these as > regular > inputs, and the executable will be "wrapped" with the correct > PYTHONPATH. That's correct. It provides a regular executable. > Also, maybe we can omit the python- prefix here too, and perhaps > place > it in version-control.scm? That makes sense to me. > Can you send a v2 series? I will bump some versions, enable tests here and send a v2 by the weekend.
[-- Attachment #1: Type: text/plain, Size: 2479 bytes --] Vinicius Monego <monego@posteo.net> writes: > Em seg, 2020-07-20 às 23:13 +0200, Marius Bakke escreveu: >> Hi Vinicius, > > Hello Marius, > > Thanks for the tips! > >> We now have a 'python-check.scm' which is preferable to >> check.scm. Can >> you add this library there instead? > > Sure. I overlooked that file. I sent another series of 6 pytest patches > before this, and will send a v2 for that as well. Excellent, thank you. >> Should pytest be propagated here? >> >> Also, as this package is a plugin for coverage, maybe it should not >> propagate coverage either. The reason is that propagating prevents >> it >> from being (easily) used with other versions of coverage. Let's say >> that a package needs a newer coverage than the default in Guix + this >> plugin, propagation here would bring in the wrong coverage version. > > Oh, I thought that the pytest binary should be available as an > executable for the plugin to be used, similar to how APT has pytest as > a dependency for plugins. Maybe it's just me thinking in terms of > traditional package management. > > The PyPI importer will propagate pytest by default, and it's common to > see it propagated in other plugins in check.scm. But now I see that > many plugins do not propagate it. Should pytest not be an input at all > (unless the plugin uses it for its own tests, in which case it should > be a native input)? There are differing opinions on this matter :-) I would say that pytest should _not_ be propagated in this case, so that the plugin can be used with custom versions of pytest. Others might say that the plugin is useless without pytest, and so it _should_ be propagated. I'll leave the final say to you. :-) >> I know it's a lot to ask :-) but can you try to expand on how it >> differs >> from the apparently unreasonable defaults in coverage? "Sensible" >> also >> borders on "marketing speak", perhaps "opinionated" is a better term. > > That's a slight rewording of the author's description in the > repository, and that's the only verbal information I could find about > the project. The differences can be seen in the README and in the > source code, but I don't know what to write about them, or even why the > changes are 'more sensible'. Right, not great. We should at least try and stay neutral (see the "Synopses and Descriptions" section of the manual). So s/sensible/opinionated/ is good enough for me. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
* gnu/packages/python-check.scm (python-covdefaults): New variable. --- Do not propagate pytest and coverage. gnu/packages/python-check.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index 200bce6ced..be9b1def26 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -125,6 +125,37 @@ detect the absence of a cassette file and once again record all HTTP interactions, which will update them to correspond to the new API.") (license license:expat))) +(define-public python-covdefaults + (package + (name "python-covdefaults") + (version "1.1.0") + (source + (origin + ;; The PyPI tarball does not include tests. + (method git-fetch) + (uri (git-reference + (url "https://github.com/asottile/covdefaults") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11a24c0wzv01n55fy4kdpnyqna4m9k0mp58kmhiaks34xw4k37hq")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "pytest" "-vv")))))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/asottile/covdefaults") + (synopsis "Coverage plugin to provide opinionated default settings") + (description + "Covdefaults is a coverage plugin to provide opinionated default +settings.") + (license license:expat))) + (define-public python-pytest-vcr (package (name "python-pytest-vcr") -- 2.20.1
* gnu/packages/python-xyz.scm (python-cfgv): New variable. --- Update synposys and description. gnu/packages/python-xyz.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 074ea394e1..0bc2b06cf5 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -17360,6 +17360,38 @@ Let's Encrypt.") (define-public python2-dns-lexicon (package-with-python2 python-dns-lexicon)) +(define-public python-cfgv + (package + (name "python-cfgv") + (version "3.1.0") + (source + (origin + ;; There are no tests in the PyPI tarball. + (method git-fetch) + (uri (git-reference + (url "https://github.com/asottile/cfgv") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1vvkkqw92sak4b28bpscpppq483amy52ch2yqy1i2m23q7xjkabx")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "pytest" "-vv")))))) + (native-inputs + `(("python-covdefaults" ,python-covdefaults) + ("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/asottile/cfgv") + (synopsis "Configuration validation library") + (description + "This library helps to validate configuration files and produce human +readable error messages.") + (license license:expat))) + (define-public python-commandlines (package (name "python-commandlines") -- 2.20.1
* gnu/packages/python-xyz.scm (python-identify): New variable. --- Update to 1.4.25. gnu/packages/python-xyz.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 0bc2b06cf5..87ea9fcaa2 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -162,6 +162,7 @@ #:use-module (gnu packages terminals) #:use-module (gnu packages tex) #:use-module (gnu packages texinfo) + #:use-module (gnu packages textutils) #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) @@ -17269,6 +17270,39 @@ library to allow local file system access via @code{file://} URLs.") (define-public python2-requests-file (package-with-python2 python-requests-file)) +(define-public python-identify + (package + (name "python-identify") + (version "1.4.25") + (source + (origin + ;; There are no tests in the PyPI tarball. + (method git-fetch) + (uri (git-reference + (url "https://github.com/chriskuehl/identify") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1fqgci6skckcq0x5pnxh6k2qjzn1ndsrgha1j6wwv1ld4g9bd3hz")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "pytest" "-vv")))))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-editdistance" ,python-editdistance))) + (home-page "https://github.com/chriskuehl/identify") + (synopsis "File identification library for Python") + (description + "File identification library for Python. Given a file (or some information +about a file), return a set of standardized tags identifying what the file is.") + (license license:expat))) + (define-public python-tldextract (package (name "python-tldextract") -- 2.20.1
* gnu/packages/python-xyz.scm (python-nodeenv): New variable. --- I decided to leave this package in the same file and format of virtualenv. Removed python-tox and python-flake8 from native inputs. Fixed synopsis. gnu/packages/python-xyz.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 87ea9fcaa2..a8bdc90f44 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -17336,6 +17336,41 @@ Public Suffix List's private domains as well.") (define-public python2-tldextract (package-with-python2 python-tldextract)) +(define-public python-nodeenv + (package + (name "python-nodeenv") + (version "1.4.0") + (source + (origin + ;; There's no tarball in PyPI. + (method git-fetch) + (uri (git-reference + (url "https://github.com/ekalinin/nodeenv") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0y443icx0w7jlzmxmmcm4q8dqfiwgafbb9cp8jpm68mbqxbz40a7")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; This test fails. It tries to open a network socket. + (invoke "pytest" "-vv" "-k" "not test_smoke")))))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-mock" ,python-mock) + ("python-pytest" ,python-pytest))) + (home-page "https://ekalinin.github.io/nodeenv/") + (synopsis "Create isolated node.js environments") + (description + "Nodeenv (node.js virtual environment) is a tool to create isolated +node.js environments. It creates an environment that has its own installation +directories, that doesn't share libraries with other node.js virtual +environments.") + (license license:bsd-3))) + (define-public python-pynamecheap (package (name "python-pynamecheap") -- 2.20.1
* gnu/packages/python-check.scm (python-pytest-env): New variable. --- Do not propagate pytest. gnu/packages/python-check.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index be9b1def26..d6e38bd88b 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -438,6 +438,26 @@ rounds that are calibrated to the chosen timer.") "This pytest plugin provides fixtures to simplify Flask app testing.") (license license:expat))) +(define-public python-pytest-env + (package + (name "python-pytest-env") + (version "0.6.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-env" version)) + (sha256 + (base32 "1hl0ln0cicdid4qjk7mv90lw9xkb0v71dlj7q7rn89vzxxm9b53y")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/MobileDynasty/pytest-env") + (synopsis "Pytest plugin that allows you to add environment variables") + (description + "This is a @code{py.test} plugin that enables you to set environment +variables in the @file{pytest.ini} file.") + (license license:expat))) + (define-public python-codacy-coverage (package (name "python-codacy-coverage") -- 2.20.1
* gnu/packages/version-control.scm (pre-commit): New variable. --- Enable tests. Update to 2.6.0. Language tests require interpreters/compilers and build systems as inputs and downloading packages online (e.g. 'go get'), hence disabled. gnu/packages/version-control.scm | 113 +++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 5151e63ee1..d36b7c013e 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -29,6 +29,7 @@ ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 John D. Boy <jboy@bius.moe> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1418,6 +1419,118 @@ also walk each side of a merge and test those changes individually.") control to Git repositories.") (license license:gpl2))) +(define-public pre-commit + (package + (name "pre-commit") + (version "2.6.0") + (source + (origin + ;; No tests in the PyPI tarball. + (method git-fetch) + (uri (git-reference + (url "https://github.com/pre-commit/pre-commit") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "144hcnz8vz07nkx7hk8a3ac822186ardwxa8jnl6s8qvm5ip92f2")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'set-up-git + (lambda _ + ;; Change from /homeless-shelter to /tmp for write permission. + (setenv "HOME" "/tmp") + ;; Environment variables used in the tests. + (setenv "GIT_AUTHOR_NAME" "Your Name") + (setenv "GIT_COMMITTER_NAME" "Your Name") + (setenv "GIT_AUTHOR_EMAIL" "you@example.com") + (setenv "GIT_COMMITTER_EMAIL" "you@example.com") + (invoke "git" "config" "--global" "user.name" "Your Name") + (invoke "git" "config" "--global" "user.email" "you@example.com") + #t)) + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "tests" "-k" + (string-append + ;; Disable conda tests. + "not test_conda_hook" + " and not test_conda_with_additional_dependencies_hook" + " and not test_local_conda_additional_dependencies" + ;; Disable cpan tests. + " and not test_local_perl_additional_dependencies" + " and not test_perl_hook" + ;; Disable Ruby tests. + " and not test_additional_ruby_dependencies_installed" + " and not test_install_rbenv" + " and not test_install_rbenv_with_version" + " and not test_run_a_ruby_hook" + " and not test_run_ruby_hook_with_disable_shared_gems" + " and not test_run_versioned_ruby_hook" + ;; Disable Cargo tests + " and not test_additional_rust_cli_dependencies_installed" + " and not test_additional_rust_lib_dependencies_installed" + " and not test_local_rust_additional_dependencies" + " and not test_rust_hook" + ;; Disable python2 test. + " and not test_switch_language_versions_doesnt_clobber" + ;; These tests try to open a network socket. + " and not test_additional_golang_dependencies_installed" + " and not test_additional_node_dependencies_installed" + " and not test_golang_hook" + " and not test_golang_hook_still_works_when_gobin_is_set" + " and not test_local_golang_additional_dependencies" + " and not test_main" + " and not test_node_hook_with_npm_userconfig_set" + " and not test_run_a_node_hook" + " and not test_run_versioned_node_hook" + ;; Tests failing with a permission error. + ;; They try to write to the filesystem. + " and not test_autoupdate_hook_disappearing_repo" + " and not test_hook_disppearing_repo_raises" + " and not test_img_conflict" + " and not test_img_something_unstaged" + " and not test_installed_from_venv" + " and not test_too_new_version" + " and not test_try_repo_uncommitted_changes" + " and not test_versions_ok" + ;; This test tries to activate a virtualenv + " and not test_healthy_venv_creator" + ;; Fatal error: Not a Git repository. + " and not test_all_cmds" + " and not test_try_repo" + ;; No module named 'pip._internal.cli.main' + " and not test_additional_dependencies_roll_forward" + ; Assertion errors + " and not test_install_existing_hooks_no_overwrite" + " and not test_uninstall_restores_legacy_hooks")))) + (add-before 'reset-gzip-timestamps 'make-files-writable + (lambda* (#:key outputs #:allow-other-keys) + ;; Make sure .gz files are writable so that the + ;; 'reset-gzip-timestamps' phase can do its work. + (let ((out (assoc-ref outputs "out"))) + (for-each make-file-writable + (find-files out "\\.gz$")) + #t)))))) + (native-inputs + `(("git" ,git) + ("python-pytest" ,python-pytest))) + (inputs + `(("python-cfgv" ,python-cfgv) + ("python-identify" ,python-identify) + ("python-nodeenv" ,python-nodeenv) + ("python-pyyaml" ,python-pyyaml) + ("python-toml" ,python-toml) + ("python-virtualenv" ,python-virtualenv))) + (home-page "https://pre-commit.com/") + (synopsis "Framework for managing and maintaining multi-language pre-commit hooks") + (description + "Pre-commit is a multi-language package manager for pre-commit hooks. You +specify a list of hooks you want and pre-commit manages the installation and +execution of any hook written in any language before every commit.") + (license license:expat))) + (define (mercurial-patch name revision hash) (origin (method url-fetch) -- 2.20.1
merge 42082 42083 42084 42085 42086 42087
[-- Attachment #1: Type: text/plain, Size: 365 bytes --] Vinicius Monego <monego@posteo.net> writes: > * gnu/packages/python-xyz.scm (python-identify): New variable. [...] > + (description > + "File identification library for Python. Given a file (or some information > +about a file), return a set of standardized tags identifying what the file is.") I turned this into "@code{identify} is a [...]". Applied! [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
[-- Attachment #1: Type: text/plain, Size: 4043 bytes --] Vinicius Monego <monego@posteo.net> writes: > * gnu/packages/version-control.scm (pre-commit): New variable. > --- > Enable tests. Update to 2.6.0. > > Language tests require interpreters/compilers and build systems as inputs > and downloading packages online (e.g. 'go get'), hence disabled. Makes sense. [...] > + (replace 'check > + (lambda* (#:key inputs outputs #:allow-other-keys) > + (add-installed-pythonpath inputs outputs) > + (invoke "pytest" "tests" "-k" > + (string-append > + ;; Disable conda tests. > + "not test_conda_hook" > + " and not test_conda_with_additional_dependencies_hook" > + " and not test_local_conda_additional_dependencies" > + ;; Disable cpan tests. > + " and not test_local_perl_additional_dependencies" > + " and not test_perl_hook" > + ;; Disable Ruby tests. > + " and not test_additional_ruby_dependencies_installed" > + " and not test_install_rbenv" > + " and not test_install_rbenv_with_version" > + " and not test_run_a_ruby_hook" > + " and not test_run_ruby_hook_with_disable_shared_gems" > + " and not test_run_versioned_ruby_hook" > + ;; Disable Cargo tests > + " and not test_additional_rust_cli_dependencies_installed" > + " and not test_additional_rust_lib_dependencies_installed" > + " and not test_local_rust_additional_dependencies" > + " and not test_rust_hook" > + ;; Disable python2 test. > + " and not test_switch_language_versions_doesnt_clobber" > + ;; These tests try to open a network socket. > + " and not test_additional_golang_dependencies_installed" > + " and not test_additional_node_dependencies_installed" > + " and not test_golang_hook" > + " and not test_golang_hook_still_works_when_gobin_is_set" > + " and not test_local_golang_additional_dependencies" > + " and not test_main" > + " and not test_node_hook_with_npm_userconfig_set" > + " and not test_run_a_node_hook" > + " and not test_run_versioned_node_hook" > + ;; Tests failing with a permission error. > + ;; They try to write to the filesystem. > + " and not test_autoupdate_hook_disappearing_repo" > + " and not test_hook_disppearing_repo_raises" > + " and not test_img_conflict" > + " and not test_img_something_unstaged" > + " and not test_installed_from_venv" > + " and not test_too_new_version" > + " and not test_try_repo_uncommitted_changes" > + " and not test_versions_ok" > + ;; This test tries to activate a virtualenv > + " and not test_healthy_venv_creator" > + ;; Fatal error: Not a Git repository. > + " and not test_all_cmds" > + " and not test_try_repo" > + ;; No module named 'pip._internal.cli.main' > + " and not test_additional_dependencies_roll_forward" > + ; Assertion errors > + " and not test_install_existing_hooks_no_overwrite" > + " and not test_uninstall_restores_legacy_hooks")))) Wooooow, nice work! I've applied this and the other patches in the series. Thanks again! :-) [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]