{ "info": { "author": "Rok Garbas, Cillian de R\u00f3iste, Jaka Hudoklin", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "pypi2nix - generate Nix expressions for Python packages\n=======================================================\n\n``pypi2nix`` is a command line tool that generates `Nix expressions`_ from\ndifferent ``requirements.txt``. This is useful for:\n\n- Building a Nix derivation for a program written in Python as part of\n packaging it.\n\n- Setting up a development environment to hack on a program written in Python.\n\n The only way we can fix bugs with pypi2nix is if you report them. Please\n create an issue if you discover problems.\n\n``pypi2nix`` will (until further notice) only work with latest *unstable*\nchannel. This is due to ongoing changes in Python infrastructure happening in\nNixpkgs.\n\nThe `Nixpkgs manual section about Python\n`_ makes good reading if you\nhaven't seen it already.\n\n.. contents::\n\n\n1. Installation\n---------------\n\n``pypi2nix`` is part of ``nixpkgs``. If you just want to use\n``pypi2nix`` on your system, it is recommended that you install it via\nthe regular means, e.g. ``nix-env -iA nixos.pypi2nix`` on NixOS or\n``nix-env -iA nixpkgs.pypi2nix`` on other systems utilizing nix.\n\nSystem Requirements\n^^^^^^^^^^^^^^^^^^^\n\nMake sure Nix is installed::\n\n % curl https://nixos.org/nix/install | sh\n\nCurrently ``pypi2nix`` is only tested against ``linux`` systems.\nSupported ``nixpkgs`` channels are ``nixos-19.09`` and\n``nixos-unstable``. Due to the nature of ``nixos-unstable`` the\noccasional breakage of ``pypi2nix`` is to be expected. We try to\nprovide fixes in that regard in a timely manner.\n\n\nAd hoc Installation (Simple)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nFor just installing the package with a command, use `nix-env`_::\n\n nix-env -if https://github.com/nix-community/pypi2nix/tarball/master\n\nDeclarative Installation (Advanced)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf you prefer to explicitly declare each installed package in your\nNix(OS) or project configuration, you can do the following:\n\nFirst, import the package from its ``default.nix`` by fetching the\nwhole git repository with ``pkgs.fetchgit``. Afterwards you can just\nadd the imported attribute the list of installed software.\n\nBelow you find an example for NixOS' ``configuration.nix``. Other\nmethods like `home-manager`_ work similar::\n\n let\n pypi2nix = import (pkgs.fetchgit {\n url = \"https://github.com/nix-community/pypi2nix\";\n # adjust rev and sha256 to desired version\n rev = \"v2.0.1\";\n sha256 = \"sha256:0mxh3x8bck3axdfi9vh9mz1m3zvmzqkcgy6gxp8f9hhs6qg5146y\";\n }) {};\n in\n environment.systemPackages = [\n # your other packages\n pypi2nix\n ];\n\n\n\n2. Usage\n--------\n\nThe easiest way to generate a Nix expressions is to invoke::\n\n % pypi2nix -e packageA -e packageB==0.1\n\nIf you also have a ``requirements.txt`` file for your Python project you can use\nthe ``-r`` option.\n\n::\n\n % pypi2nix -e packageA -e packageB==0.1 \\\n -r requirements.txt -r requirements-dev.txt\n\n\nWhat is being generated\n^^^^^^^^^^^^^^^^^^^^^^^\n\nOption ``-V`` tells pypi2nix which python version to be used. To see which\nPython versions are available consult ``pypi2nix --help``.\n\nOnce Nix expressions are generated you should be able to see 3 new files:\n\n- ``requirements_frozen.txt`` - full frozen set for your for your pypi2nix call.\n This is the output you would expect from ``pip freeze``.\n\n- ``requirements.nix`` is a file which contains a nix expression to for the package set that was built.\n\n- ``requirements_override.nix`` - this is an empty file which lets you\n override generated nix expressions.\n\n\nBuilding generated packages\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nBuild one package::\n\n % nix build -f requirements.nix packages.empy\n\nBuild all packages::\n\n % nix build -f requirements.nix packages\n\nBuild python interpreter with all packages loaded::\n\n % nix build -f requirements.nix interpreter\n % ./result/bin/python -c \"import empy\"\n\nEnter development environment::\n\n % nix run -f requirements.nix interpreter\n [user@localhost:~/dev/nixos/pypi2nix) % python -c \"import empy\"\n\n\nUsing generated packages\n^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf you are working on a project where its dependencies are defined in\n``requirements.txt`` then you can create a ``default.nix`` and add generated\npackages as ``buildInputs``, as demonstrated here::\n\n {}:\n let\n python = import ./requirements.nix { inherit pkgs; };\n in python.mkDerivation {\n name = \"ProjectA-1.0.0\";\n src = ./.;\n buildInputs = [\n python.packages.\"coverage\"\n python.packages.\"flake8\"\n python.packages.\"mock\"\n python.packages.\"pytest\"\n python.packages.\"pytest-asyncio\"\n python.packages.\"pytest-cov\"\n python.packages.\"pytest-mock\"\n python.packages.\"pytest-xdist\"\n python.packages.\"virtualenv\"\n ];\n propagatedBuildInputs = [\n python.packages.\"aiohttp\"\n python.packages.\"arrow\"\n python.packages.\"defusedxml\"\n python.packages.\"frozendict\"\n python.packages.\"jsonschema\"\n python.packages.\"taskcluster\"\n python.packages.\"virtualenv\"\n ];\n ...\n }\n\n\nAs you can see you can access all packages via ``python.packages.\"\"``. If\nyou want to depend on *all* packages you can even do::\n\n\n propagatedBuildInputs = builtins.attrValues python.packages;\n\nCommand line options\n^^^^^^^^^^^^^^^^^^^^\n\n``-v``\n Increase amount and detail of information output to the user.\n Verbosity levels are ``ERROR``, ``WARNING``, ``INFO`` and\n ``DEBUG`` in that order. The default verbosity is ``INFO``.\n\n``-q``\n Reduce amount and detail of information output to the user. See\n ``-v`` for more information.\n\n``-I/--nix-path TEXT``\n Add entries to the ``NIX_PATH`` environment variable similarly to\n how ``-I`` works with ``nix`` executables like ``nix-build``.\n This can be useful for generating package sets based on a\n different ``nixpkgs`` version than the one used one the local\n system.\n\n``--nix-shell PATH``\n Path to an alternative version of the ``nix-shell`` command. The\n default is the first executable that will be found in the current\n ``PATH`` of the system.\n\n``--version``\n Show the current version of ``pypi2nix``\n\n``--basename TEXT``\n This option determins the name the produced files. So with\n ``--basename environment`` you would get the files\n ``environment.nix``, ``environment_frozen.nix`` and\n ``environment_override.nix``.\n\n``--extra-build-inputs/-E TEXT``\n Extra build inputs that the required python packages need to run,\n e.g. ``libffi`` or ``libgl``. In that case you would provide ``-E\n \"libffi libgl\"``. These nix packages will be available in the\n build environment for the wheels.\n\n``--emit-extra-build-inputs/--no-emit-extra-build-inputs``\n These options let you control if external build dependencies\n specified via ``-E`` will end up in the generated nix package set.\n Please note that if you select this option, your overrides need to\n make sure that python packages find their respective external\n dependencies.\n\n``--extra-env/-N TEXT``\n Extra environment variables that will be passed to the build\n environment. Note that you can use nix expressions in this\n string, e.g. ``-N 'BERKELEYDB_DIR=${pkgs.db.dev}'``.\n\n``--enable-tests/-T``\n Specify this flag if you want to enable the check phase of all\n packages in the generated nix expression. Please note that this\n feature is highly exprimental and will probably not work for your\n use case.\n\n``--python-version/-V``\n Specify the python version you want the requirement set to be\n built with. The default is ``3`` which translates to the\n ``python3`` derivation of ``nixpkgs``.\n\n``--requirements/-r FILE``\n Specify a requirements file, similar as you would with ``pip``.\n ``pypi2nix`` tries to be fully compatible with the file format of\n ``pip``.\n\n``--editable/-e TEXT``\n This option allows you to specify individual requirements that get\n added to the requirement set, e.g. ``pypi2nix -e attrs``,\n ``pypi2nix -e $HOME/src/myproject#egg=myproject`` or ``pypi2nix -e .#egg=myegg``.\n\n``--setup-requires/-s TEXT``\n Allows you to specify python packages that need to be present in\n the build environment of other packages, a good example of this\n would be ``setuptools-scm``. Note that ``pypi2nix`` tries to\n detect these dependencies on its own. You only need to specify\n this flag in cases where a package author or maintainer forgot to\n mention build time dependencies in their setup or neither\n ``setup.cfg`` nor ``pyproject.toml`` is used.\n\n``--overrides/-O URL``\n Allows you to specify additional overrides that conform to the\n general structure of ``requirements_override.nix``. We support\n regular URLs with ``http`` and ``https`` scheme and also ``git``.\n An example for using ``https`` would be ``pypi2nix -O\n https://myoverrides.test/overrides.nix``. Reusing an overlay from\n a git repository would be done like so: ``pypi2nix -O\n git+https://github.com/nix-community/pypi2nix.git&path=requirement_override.nix``.\n Please keep in mind that these overrides are incorporated in a nix\n expression with a precalculated hash value. So if the file\n changes upstream your generated package can not be built anymore.\n\n``--default-overrides/--no-default-overrides``\n Pull in overrides from\n ``https://github.com/nix-community/pypi2nix-overrides``. This\n feature is enabled by default.\n\n``--wheels-cache/-W TEXT``\n A location where prebuilt wheels can be found. This option will\n ultimately be passed to ``pip --find-links``. Only point to\n wheels that are built through ``pypi2nix`` on your own or a very\n similar system.\n\n``--build-directory TEXT``\n **Warning** A bug in ``pypi2nix`` currently prevents some packages\n from being built with this option set. It is recommended to not\n use this flag.\n\n The directory where pypi2nix would build the python environment to\n generate the desired nix expression. If not specified, the build\n directory will be temporary and is deleted before the program\n exits.\n\n\n3. When it doesn't work\n-----------------------\n\nI hope nobody is expecting ``pypi2nix`` to do always a perfect job. In Python\npackaging, there are just too many different cases that we will never be able to\ncover. What ``pypi2nix`` tries to do is to get you very close.\n\nSometimes ``pypi2nix`` fails entirely. If this happens, open a bug --\nit's almost always a bug in ``pypi2nix``. However, sometimes\n``pypi2nix`` succeeds but the resulting ``requirements.nix`` file\nfails during the building of your Python package. Depending on what\nthe problem is, this section may be helpful.\n\nNon-Python/system dependencies\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nQuite a few Python packages require non-Python dependencies to be\npresent at build time. These packages will fail to build with error\nmessages about not being able to find ``foo.h`` or some ``fooconfig``\nfile. To work around this, ``pypi2nix`` has ``-E`` options which can\nbe used to include extra non-Python dependencies.\n\nFor example, ``psycopg2`` requires ``pg_config`` binary to be present at installation time::\n\n % pypi2nix -v -V 2.7 -e psycopg2 -E postgresql\n\n``lxml`` requires ``libxml2`` and ``libxslt`` system package::\n\n % pypi2nix -v -V 2.7 -e lxml -E libxml2 -E libxslt\n\n\nAdditional environment variables\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSome packages expect additional environment variables to be set::\n\n % pypi2nix -v -V 2.7 -e bsddb3 -N 'BERKELEYDB_DIR=${pkgs.db.dev}'\n\n\nUsing requirements_override.nix\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSome other failures might be caused because the derivation that\n``pypi2nix`` wrote was incomplete. A very common situation is that\n``pypi2nix`` didn't include all the dependencies of some package. As\nan example, ``execnet`` depends on ``setuptools-scm``, but\n``pypi2nix`` may not detect this.\n\nWhen this happens, Nix will fail to build ``execnet``, perhaps with an\nerror message from distutils/setuptools complaining that it can't find\na distribution for ``setuptools-scm``. What's happening here is that\nnormally ``execnet`` would fetch ``setuptools-scm`` from PyPI, but Nix\ndisables network access to guarantee reproducability. So when you\nbuild ``execnet``, it fails to find ``setuptools-scm``.\n\nFor these situations, ``pypi2nix`` provides a\n``requirements_override.nix`` file, which lets you override anything\nthat it generated. You can even add new packages to the dependency set\nthis way.\n\nAs an example, let's add ``setuptools-scm`` as a build-time dependency\nof ``execnet``. Here's the ``requirements_override.nix``::\n\n { pkgs, python }:\n\n self: super: {\n\n \"execnet\" = python.overrideDerivation super.\"execnet\" (old: {\n buildInputs = old.buildInputs ++ [ self.\"setuptools-scm\" ];\n });\n\n }\n\n\nIn a similar way, you can add or remove any Python package.\n\nShared overrides\n^^^^^^^^^^^^^^^^\n\nIn addition to the empty autogenerated ``requirements_overrides.nix``\nfile, you can include pre-existing overrides files. These overrides\nwill be included the same way as your ``requirements_overrides.nix``.\n\nThe ``pypi2nix`` author also maintains a set of \"default\" overrides at\nhttps://github.com/nix-community/pypi2nix-overrides/blob/master/overrides.nix --\nyou can include these by using the ``--default-overrides`` argument to\n``pypi2nix``. These overrides are designed in such a way that they\nonly override dependencies that were already present in your\n``requirements.nix``.\n\nYou can also include an overrides file using the ``-O`` command line\nargument. ``pypi2nix`` can fetch these overrides from a local file or\nover certain common protocols.\n\n``http`` and ``https``\n ``pypi2nix -V 3 --overrides https://raw.githubusercontent.com/nix-community/pypi2nix-overrides/master/overrides.nix``\n\n Note that the generated Nix expression will check if contents of\n the overrides file differs from when the Nix expression was built, and\n fail if this was the case (or the file does not exist anymore).\n\nLocal files\n ``pypi2nix -V 3 --override ../some/relative/path --override /some/absolute/path``\n\nGit repositories\n ``pypi2nix -V 3 --override git+https://github.com/nix-community/pypi2nix.git#path=overrides.nix``\n\n If you want to import a file from a specific git repository you have\n to prefix its URL with ``git+``, quite similar to how you would do\n in a ``requirements.txt`` file for ``pip``.\n\n4. Advanced Use\n---------------\n\nCreating default.nix for your project\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nNothing speaks better than an example::\n\n { }:\n\n let\n pkgs = import {};\n python = import ./requirements.nix { inherit pkgs; };\n in python.mkDerivation {\n name = \"projectA-1.0.0\";\n src = ./.;\n buildInputs = [\n python.packages.\"coverage\"\n python.packages.\"flake8\"\n python.packages.\"mock\"\n python.packages.\"pytest\"\n python.packages.\"pytest-asyncio\"\n python.packages.\"pytest-cov\"\n python.packages.\"pytest-mock\"\n python.packages.\"pytest-xdist\"\n ];\n propagatedBuildInputs = [\n python.packages.\"aiohttp\"\n python.packages.\"arrow\"\n python.packages.\"defusedxml\"\n python.packages.\"frozendict\"\n python.packages.\"jsonschema\"\n ];\n checkPhase = ''\n export NO_TESTS_OVER_WIRE=1\n export PYTHONDONTWRITEBYTECODE=1\n\n flake8 src/\n py.test --cov=src -cov-report term-missing\n coverage html\n '';\n }\n\n\nImportant to know here is that you instantiate all generated packages\nas ``python = import ./requirements.nix { inherit pkgs; };`` which\ngives you a Python environment with all the packages generated by\n``pypi2nix`` as well as some common utilities.\n\nTo create a package you use ``python.mkDerivation`` which works like\nthe ``pythonPackages.buildPythonPackage`` function in ``nixpkgs``. All\ngenerated packages are available as one attribute set under\n``python.packages``.\n\n.. TODO explain withPackages and show some example\n\nOne of future goals of ``pypi2nix`` project is to also improve the UX of our\nPython tooling in nixpkgs. While this is very hard to do within ``nixpkgs`` it\nis almost trivial to experiment with this outside ``nixpkgs``.\n\n\nConvert generated requirements.nix into nixpkgs overlay\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nA working example is worth 1000 words.\n\noverlay.nix::\n\n self: super:\n {\n customPython =\n (import ./requirements.nix { pkgs = self; });\n }\n\nshell.nix::\n\n with (import { overlays = [ (import ./overlay.nix) ]; });\n customPython.interpreter\n\n\n5. Help developing pypi2nix\n---------------------------\n\nClone `pypi2nix repository`_ and using ``nix-shell`` command enter development\nenvironment.::\n\n % git clone https://github.com/nix-community/pypi2nix\n % cd pypi2nix\n % nix-shell\n\nCode is located in ``src/pypi2nix``.\n\nTesting\n^^^^^^^\n\nPypi2nix comes with two kinds of tests: unit tests and integration\ntests. They can be found in the folders ``/unittests`` and\n``/integrationtests`` respectively.\n\nUnit tests are straight forward. They are run via `pytest`_ and (try\nto) follow `pytest`_ best practices. Idealy all of pypi2nix's code\nshould be covered by unittests. If possible unittests should not go\nonline and fetch data from the internet. If this cannot be avoided\nuse the ``@nix`` decorator, found in ``unittests.switches`` to mark\ntests that require network access.\n\nIntegration tests\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nIntegration tests are a little bit more involved. We implemented a\nsmall framework to write new tests and maintain old ones. Check out\n``integrationtests.framework`` for information on how to write custom\nintegration tests. To run all integration tests run\n``run_integration_tests.py`` from the ``scripts`` directory. If you\nuse ``nix-shell`` to create your development environment then the\n``scripts`` directory should be in you ``PATH`` variable.\n\nPlease note that all integration test cases are classes deriving from\n``integrationtests.framework.IntegrationTest``. Also all these tests\nmust end with ``TestCase``, e.g. ``MyCustomTestCase``.\n\nMaintainance scripts\n^^^^^^^^^^^^^^^^^^^^\n\nThe ``scripts`` folder contains programs that help to maintain the\nrepository. We expect the user to have all the packages from the\nbuild environment of pypi2nix installed. We register the ``scripts``\ndirectory in the users ``PATH`` if they choose to enter ``nix-shell`` in\nthe top level directory of this project.\n\nVersion bumping\n^^^^^^^^^^^^^^^\n\nWe use ``bumpv`` to manage the current version of this project. This\nprogram should be part of the development environment.\n\n\n.. _`Nix expressions`: http://nixos.org/nix/manual/#chap-writing-nix-expressions\n.. _`pypi2nix repository`: https://github.com/nix-community/pypi2nix\n.. _`examples/Makefile`: https://github.com/nix-community/pypi2nix/blob/master/examples/Makefile\n.. _`nix-env`: http://nixos.org/nix/manual/#sec-nix-env\n.. _`pytest`: https://pytest.org\n.. _`home-manager`: https://github.com/rycee/home-manager\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nix-community/pypi2nix", "keywords": "nixos,nix,packaging", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "pypi2nix", "package_url": "https://pypi.org/project/pypi2nix/", "platform": "", "project_url": "https://pypi.org/project/pypi2nix/", "project_urls": { "Homepage": "https://github.com/nix-community/pypi2nix" }, "release_url": "https://pypi.org/project/pypi2nix/2.0.4/", "requires_dist": [ "attrs", "click", "jinja2", "nix-prefetch-github", "packaging", "Parsley", "setuptools", "toml", "jsonschema" ], "requires_python": "", "summary": "A tool that generates nix expressions for your python packages, so you do not have to.", "version": "2.0.4", "yanked": false, "yanked_reason": null }, "last_serial": 6496093, "releases": { "1.8.1": [ { "comment_text": "", "digests": { "md5": "db28dcfc29165a1ba69470ca3b3d4b31", "sha256": "71c629e53b8afe2e9eddf8cf0d84497240260c5cf65c9035efda4964f929a9df" }, "downloads": -1, "filename": "pypi2nix-1.8.1.tar.gz", "has_sig": false, "md5_digest": "db28dcfc29165a1ba69470ca3b3d4b31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20538, "upload_time": "2017-10-25T13:23:47", "upload_time_iso_8601": "2017-10-25T13:23:47.766957Z", "url": "https://files.pythonhosted.org/packages/19/27/44b621a6c3c993fdb7296c8a73f6f7ee63e780d6de30f1a465015303a56c/pypi2nix-1.8.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "620acb5a5b2db5dcec775433f25d1bcc", "sha256": "99973a88f3f7955f8597fcc8724ef16ce457e334f7c253997a94c94a9d124fdf" }, "downloads": -1, "filename": "pypi2nix-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "620acb5a5b2db5dcec775433f25d1bcc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49047, "upload_time": "2019-10-26T21:00:14", "upload_time_iso_8601": "2019-10-26T21:00:14.151320Z", "url": "https://files.pythonhosted.org/packages/85/45/7ee7e09b8f78cdd4230f371e5016a1489d01b18c104410e08c4d5639cea5/pypi2nix-2.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "73abe936d08bbc887a2ad43341e02924", "sha256": "399b5fb5433d8c3c6cc77b0d3cd63a63744efeebe829098630493bdbe6013f71" }, "downloads": -1, "filename": "pypi2nix-2.0.0.tar.gz", "has_sig": false, "md5_digest": "73abe936d08bbc887a2ad43341e02924", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26771056, "upload_time": "2019-10-26T21:00:34", "upload_time_iso_8601": "2019-10-26T21:00:34.077274Z", "url": "https://files.pythonhosted.org/packages/a8/d2/799eb6e6a08ef85d8300b74035d22b87cfef4b8fdde042f48cb33d09011e/pypi2nix-2.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "1e2a5b07263c8b62b0ea170f7d1f98fc", "sha256": "d88cbd3eb82a2f7b11d48c34343f147375cf10a2b30b33c5baf124a5e569437e" }, "downloads": -1, "filename": "pypi2nix-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1e2a5b07263c8b62b0ea170f7d1f98fc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55165, "upload_time": "2019-11-10T20:14:43", "upload_time_iso_8601": "2019-11-10T20:14:43.857998Z", "url": "https://files.pythonhosted.org/packages/11/02/1edf2dd4d9a97d4c1b056365ac8b7445efc23eb0889344e20a97a6fde482/pypi2nix-2.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bb07b7a6d95c855e7dc741a34913aa63", "sha256": "932037bd0173b1360eae343f32a111182148dd72441735b8516edacf46e30e8d" }, "downloads": -1, "filename": "pypi2nix-2.0.1.tar.gz", "has_sig": false, "md5_digest": "bb07b7a6d95c855e7dc741a34913aa63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26780072, "upload_time": "2019-11-10T20:15:37", "upload_time_iso_8601": "2019-11-10T20:15:37.802779Z", "url": "https://files.pythonhosted.org/packages/46/3a/5b65e82a9fb3bcbebc847f932366b536d993e295eb14055715c972f82019/pypi2nix-2.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "bac7fb01e1c0f2b74d65f0b33e4334e9", "sha256": "8a8004e666ef4abc067a1e0ce66c939cbf489d4a77aa2acdb3a1bdabf69808a4" }, "downloads": -1, "filename": "pypi2nix-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bac7fb01e1c0f2b74d65f0b33e4334e9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59800, "upload_time": "2019-12-08T01:24:20", "upload_time_iso_8601": "2019-12-08T01:24:20.882275Z", "url": "https://files.pythonhosted.org/packages/c9/cc/698b7247d1f138439dde99fbf4797f4ca9b29fc35a267fed7e5cf2ae57b8/pypi2nix-2.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e402f3c6299535efa08d05f3b0ac14ea", "sha256": "5bdb13e466a72a58b5199939a6e99c103d6665453d9fd66d4232918eb3f2d6cf" }, "downloads": -1, "filename": "pypi2nix-2.0.2.tar.gz", "has_sig": false, "md5_digest": "e402f3c6299535efa08d05f3b0ac14ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50570, "upload_time": "2019-12-08T01:24:23", "upload_time_iso_8601": "2019-12-08T01:24:23.096463Z", "url": "https://files.pythonhosted.org/packages/a0/0a/90b9855ffcd3a2084e27eeec1595953fbc4b0df5bf0ea39dfdd94d664126/pypi2nix-2.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "540042192b6e089b5e73086745d2d801", "sha256": "2ff642a7b30588bd593aa496d5fdc5251c99ee6a471d5dc9befa9dd80c7ac6e3" }, "downloads": -1, "filename": "pypi2nix-2.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "540042192b6e089b5e73086745d2d801", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59867, "upload_time": "2020-01-18T00:06:33", "upload_time_iso_8601": "2020-01-18T00:06:33.185027Z", "url": "https://files.pythonhosted.org/packages/5e/3b/b923d29c2292d0f60c1f79c4f0778d773d07e1df7f2dcef98177417ababf/pypi2nix-2.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6603f28b3decede70abc52ce9e328a48", "sha256": "ae2179001d6c6e5f9d3444f099ce39f6486d6719146ca08da69102460b464a56" }, "downloads": -1, "filename": "pypi2nix-2.0.3.tar.gz", "has_sig": false, "md5_digest": "6603f28b3decede70abc52ce9e328a48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50761, "upload_time": "2020-01-18T00:06:35", "upload_time_iso_8601": "2020-01-18T00:06:35.213847Z", "url": "https://files.pythonhosted.org/packages/55/fd/68f1a9c188b386ff534b3fdf676448060f8868c6632790edcf7df062d271/pypi2nix-2.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "cda0e59c3f6abd91c1eec9d6fcadab2c", "sha256": "8952549f6669e3d5a8a62b5360480a3747400a4004277a1bb4bd89dd42bb399b" }, "downloads": -1, "filename": "pypi2nix-2.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cda0e59c3f6abd91c1eec9d6fcadab2c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 60370, "upload_time": "2020-01-21T20:15:37", "upload_time_iso_8601": "2020-01-21T20:15:37.345728Z", "url": "https://files.pythonhosted.org/packages/4e/fd/ed9b8bed69bb30e09c903d87799e4aca49ad7fc8fcc765b1f9eed9402340/pypi2nix-2.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "55241c58ab838445305397a4aced0faa", "sha256": "0df899d737f565347eb5affd769ab22dbcacbd014119891a64b07c19d99c9f78" }, "downloads": -1, "filename": "pypi2nix-2.0.4.tar.gz", "has_sig": false, "md5_digest": "55241c58ab838445305397a4aced0faa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51145, "upload_time": "2020-01-21T20:15:39", "upload_time_iso_8601": "2020-01-21T20:15:39.701619Z", "url": "https://files.pythonhosted.org/packages/05/76/4acabae987c7f3c8c86cf558bc91245f5c2804e63c29c00b5bcc6ad773d9/pypi2nix-2.0.4.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cda0e59c3f6abd91c1eec9d6fcadab2c", "sha256": "8952549f6669e3d5a8a62b5360480a3747400a4004277a1bb4bd89dd42bb399b" }, "downloads": -1, "filename": "pypi2nix-2.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cda0e59c3f6abd91c1eec9d6fcadab2c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 60370, "upload_time": "2020-01-21T20:15:37", "upload_time_iso_8601": "2020-01-21T20:15:37.345728Z", "url": "https://files.pythonhosted.org/packages/4e/fd/ed9b8bed69bb30e09c903d87799e4aca49ad7fc8fcc765b1f9eed9402340/pypi2nix-2.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "55241c58ab838445305397a4aced0faa", "sha256": "0df899d737f565347eb5affd769ab22dbcacbd014119891a64b07c19d99c9f78" }, "downloads": -1, "filename": "pypi2nix-2.0.4.tar.gz", "has_sig": false, "md5_digest": "55241c58ab838445305397a4aced0faa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51145, "upload_time": "2020-01-21T20:15:39", "upload_time_iso_8601": "2020-01-21T20:15:39.701619Z", "url": "https://files.pythonhosted.org/packages/05/76/4acabae987c7f3c8c86cf558bc91245f5c2804e63c29c00b5bcc6ad773d9/pypi2nix-2.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }