{ "info": { "author": "Douglas Thor", "author_email": "doug.thor@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", "Topic :: Software Development :: Build Tools" ], "description": "=======\npynuget\n=======\n\n.. image:: https://img.shields.io/travis/dougthor42/pynuget.svg\n :alt: Travis\n :target: https://travis-ci.org/dougthor42/pynuget\n\n\nA port of Daniel15's `simple-nuget-server`_ because I\ndon't know PHP or Nginx. Runs on Flask and Apache. Python 3.5+\n\n.. _simple-nuget-server: https://github.com/Daniel15/simple-nuget-server/\n\n\nInstallation\n------------\n\n\n1. Install the Prerequisites\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf you're savvy, you could use nginx instead. I am not savvy.\n\n.. code-block:: shell\n\n $ sudo apt install apache2\n $ sudo apt install libapache2-mod-wsgi-py3\n\n\n2. Create a Virtual Environment\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis is highly recommended. I also haven't bothered to figure out how to do\na non-venv install so... If you want to do that you're on your own! When\nyou figure it out, please submit a PR for this documentation. :smile:\n\n.. code-block:: shell\n\n $ python3 -m venv /usr/local/venv-pynuget/ # or anywhere\n $ . /usr/local/venv-pynuget/bin/activate\n\n\n3. Install the Package\n^^^^^^^^^^^^^^^^^^^^^^\n\nIf I've done things correctly, all the requirements should be automatically\ninstalled.\n\n.. code-block:: shell\n\n $ pip install pynuget\n\n\n4. Run the Initial Setup Script\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTo (hopefully) make things easier, I've included a CLI command that\ninitializes the server with some reasonable defaults. This is pretty\nundocumented at this time, but my hope is that it will eventually support\nfull customization of the server.\n\n.. code-block:: shell\n\n $ sudo -E /usr/local/venv-pynuget/bin/pynuget init\n\n.. important::\n\n Note the ``-E`` flag on ``sudo``! This preserves environment variables.\n We're specifically interested in the ``VIRTUAL_ENV`` variable, as that's\n needed to update the WSGI file.\n\n.. note::\n\n TODO: Instructions for a system install.\n\n+ Sorry that this needs sudo! I haven't come up with a better way\n around this. Suggestions or PRs welcome!\n+ This will do various things including but not limited to:\n + Creating ``/var/www/pynuget``, populating it with the WSGI file and\n repository folders and adjusting permissions\n + Copying over the example apache config and enabling the site\n + Restarting apache\n\n\n5. Test Things\n^^^^^^^^^^^^^^\n\n1. ``curl localhost`` should return a short blurb about nuget\n2. On Windows::\n\n nuget.exe push Foo.nupkg -ApiKey YourApiKey -Source http://your.server.com\n\n3. On Linux with Mono::\n\n mono /path/to/nuget.exe push Foo.nupkg -ApiKey YourApiKey -Source http://your.server.address\n\n4. If your server has a Window manager, you can open up a web browser and\n navigate to ``http://localhost`` and you should see the PyNuGet landing\n page.\n\n\n6. Change your Secrets!\n^^^^^^^^^^^^^^^^^^^^^^^\n\nMake sure to change your secret keys to random values. One way to do so is\noutlined in the `flask tutorial`_. You'll need to change 2 values in\n``/var/www/pynuget/config.py``::\n\n SECRET_KEY\n API_KEYS\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dougthor42/pynuget/", "keywords": "nuget packaging c# csharp", "license": "", "maintainer": "", "maintainer_email": "", "name": "PyNuGet", "package_url": "https://pypi.org/project/PyNuGet/", "platform": "", "project_url": "https://pypi.org/project/PyNuGet/", "project_urls": { "Homepage": "https://github.com/dougthor42/pynuget/" }, "release_url": "https://pypi.org/project/PyNuGet/0.2.5/", "requires_dist": [ "sqlalchemy (>=1.2.7)", "flask (>=0.12.2)", "lxml (>=4.2.1)", "requests (>=2.19.1)" ], "requires_python": ">=3.5", "summary": "A Python-based NuGet Server", "version": "0.2.5" }, "last_serial": 4106813, "releases": { "0.0.1a1": [ { "comment_text": "", "digests": { "md5": "2c1a55bb63b48b434a5a403c69be0073", "sha256": "1d4c923ea79f438fc0973573ca6e92fb1dfd3a6f09e74357356917d90108d0b1" }, "downloads": -1, "filename": "PyNuGet-0.0.1a1-py3-none-any.whl", "has_sig": false, "md5_digest": "2c1a55bb63b48b434a5a403c69be0073", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 22160, "upload_time": "2018-05-31T16:35:09", "url": "https://files.pythonhosted.org/packages/38/c3/6a746592955983dec242bedefd06e20e206b0e0882427e389d2ca7f2ff1a/PyNuGet-0.0.1a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0654208effa16be8747bb22327daea08", "sha256": "7c81d1b1098e51c12a256af90f5857c9f1dd11a386f8421b6b3ea306abd2e67c" }, "downloads": -1, "filename": "PyNuGet-0.0.1a1.tar.gz", "has_sig": false, "md5_digest": "0654208effa16be8747bb22327daea08", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 18432, "upload_time": "2018-05-31T16:35:11", "url": "https://files.pythonhosted.org/packages/92/2f/67dcacdbb215e052f9f9bebb6f925d5b608b9e5ad3e623bd94b3cc95b38c/PyNuGet-0.0.1a1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "83d29e290fc2a1d3c85942dd3c85549d", "sha256": "8e60e9b2a11318f30b58a74041d0ad3e57da2f8b50954665d2c626cc7c256a86" }, "downloads": -1, "filename": "pynuget-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "83d29e290fc2a1d3c85942dd3c85549d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 27895, "upload_time": "2018-07-17T23:18:10", "url": "https://files.pythonhosted.org/packages/6d/8a/3c52106438ecf65e7684953a4404a90808a8a535c4fc45a6931019607fc1/pynuget-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3a33c65c9ec8856cd25ae8399f5f0ce", "sha256": "de54e7ccc051fca9e331ef1ca74d4a7926635f5acf6f9394c9d95f460df6e74d" }, "downloads": -1, "filename": "pynuget-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e3a33c65c9ec8856cd25ae8399f5f0ce", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 22634, "upload_time": "2018-07-17T23:18:11", "url": "https://files.pythonhosted.org/packages/12/21/35c54aac2425f4a3840c57af1724bbde47bdf9b6aeed006279c76ed75669/pynuget-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "05b9793dd175e6bf50d9b2c3c47e76fa", "sha256": "6fdd56675402451664b555fd00d32f4917f223d671eca08e8d29634ecac276d6" }, "downloads": -1, "filename": "pynuget-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "05b9793dd175e6bf50d9b2c3c47e76fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 29122, "upload_time": "2018-07-23T19:36:37", "url": "https://files.pythonhosted.org/packages/00/2b/7b4be0fc20891d61913cbf723205e1161eeca178da881bc9248f8bf25ea8/pynuget-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9516bca0145c91bc98ec24268da4df9", "sha256": "66a85c18cb4d450a194fa1f32830dc7b518922825b7031febec143b10e6947e3" }, "downloads": -1, "filename": "pynuget-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e9516bca0145c91bc98ec24268da4df9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 23867, "upload_time": "2018-07-23T19:36:38", "url": "https://files.pythonhosted.org/packages/2a/90/4f094f9800b7ce05c0f40671ffd65cef94aef52f4f3b7643f11a6f014026/pynuget-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "8e1e33bd130871ce0c30b97037b766ab", "sha256": "80300c1b8c1b2aeccd24664186f1c0c25c54458185aea31df0e31f5081e1be17" }, "downloads": -1, "filename": "pynuget-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8e1e33bd130871ce0c30b97037b766ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 29146, "upload_time": "2018-07-25T17:12:47", "url": "https://files.pythonhosted.org/packages/57/5f/bfe06bf1e1dde3e464b0af809763ab6f6ac53227e3ec8bdbcfabe200782f/pynuget-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d2548b1ec67169ec27f1535950cf38c", "sha256": "04e6a35a3907f590ab6eb4a44ce7dca5201c32cb68851641c08e2e0f8bb95269" }, "downloads": -1, "filename": "pynuget-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2d2548b1ec67169ec27f1535950cf38c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 23908, "upload_time": "2018-07-25T17:12:48", "url": "https://files.pythonhosted.org/packages/74/cd/a7db260c6cc83b3c28e6b7a76d84a7c340e7c93c0308ecfd7efae62de845/pynuget-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "57c7629f8a42f13c3fd3f3ff617d03f1", "sha256": "60979532bb3fba7c7623ca6467069438a57c271639c9a7dfaec0bc559c7299fa" }, "downloads": -1, "filename": "pynuget-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "57c7629f8a42f13c3fd3f3ff617d03f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 29835, "upload_time": "2018-07-26T22:52:31", "url": "https://files.pythonhosted.org/packages/bb/68/e2f82afc8613a9d989cb0bb1fdf47c27035a25ea5d4f09d7daa104306637/pynuget-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "033bf8f14ff7173d65ec7d3b85ec3d78", "sha256": "49005b3473114ada1a438d9ce84e7e00abbaf4ac60025b6696a8e20b46a191da" }, "downloads": -1, "filename": "pynuget-0.2.2.tar.gz", "has_sig": false, "md5_digest": "033bf8f14ff7173d65ec7d3b85ec3d78", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24630, "upload_time": "2018-07-26T22:52:32", "url": "https://files.pythonhosted.org/packages/5a/48/05837507ca1db0bd7f75e30698f52ef18c4e8fd907798d1fcf3c287bae7a/pynuget-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "c1bee10a65c201b14175d2af84a1e859", "sha256": "8eea0c20c37a9812670e40668cb3a16caecf6620ec6462c31bc840cb4ef35560" }, "downloads": -1, "filename": "pynuget-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c1bee10a65c201b14175d2af84a1e859", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 29843, "upload_time": "2018-07-26T23:11:28", "url": "https://files.pythonhosted.org/packages/77/17/fa364c1cb2e68e35e4fac6d5003bf01a96f8bdd56b10e033d6242ae53544/pynuget-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0690c421e2a19fa5d7c4b1a853cff5b", "sha256": "59a3548cde5b7225c8282576ac7f11b9099aadc31a73108b548e05ed250b2682" }, "downloads": -1, "filename": "pynuget-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b0690c421e2a19fa5d7c4b1a853cff5b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24640, "upload_time": "2018-07-26T23:11:29", "url": "https://files.pythonhosted.org/packages/5a/fa/3b2ef4c238314bf8f722ef4f0a60ef38b430689d96ef0646f8c9e6911462/pynuget-0.2.3.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "d94257e23e11c53bd36550f9df6acc15", "sha256": "2d0916f90f9ee848575efaea973e0b19675b9d0485b4c636fa647972be3fcb85" }, "downloads": -1, "filename": "pynuget-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d94257e23e11c53bd36550f9df6acc15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 29863, "upload_time": "2018-07-26T23:40:18", "url": "https://files.pythonhosted.org/packages/09/3f/b4fd189716bcbb16a65ab3c2fc91d54fec6e942b4c97aadc48acbe3a0da2/pynuget-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08bdf261f4d92cc62f67cb6562a38a0a", "sha256": "d7f64830fe5b678e870a24251e0e599201604d2c06f27af72ee34a0e99a6c53c" }, "downloads": -1, "filename": "pynuget-0.2.5.tar.gz", "has_sig": false, "md5_digest": "08bdf261f4d92cc62f67cb6562a38a0a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24653, "upload_time": "2018-07-26T23:40:19", "url": "https://files.pythonhosted.org/packages/1d/30/7f184a15798f36111a7ae149d758b6e6b948001a2589383b76a9c5c1f89e/pynuget-0.2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d94257e23e11c53bd36550f9df6acc15", "sha256": "2d0916f90f9ee848575efaea973e0b19675b9d0485b4c636fa647972be3fcb85" }, "downloads": -1, "filename": "pynuget-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d94257e23e11c53bd36550f9df6acc15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 29863, "upload_time": "2018-07-26T23:40:18", "url": "https://files.pythonhosted.org/packages/09/3f/b4fd189716bcbb16a65ab3c2fc91d54fec6e942b4c97aadc48acbe3a0da2/pynuget-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08bdf261f4d92cc62f67cb6562a38a0a", "sha256": "d7f64830fe5b678e870a24251e0e599201604d2c06f27af72ee34a0e99a6c53c" }, "downloads": -1, "filename": "pynuget-0.2.5.tar.gz", "has_sig": false, "md5_digest": "08bdf261f4d92cc62f67cb6562a38a0a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24653, "upload_time": "2018-07-26T23:40:19", "url": "https://files.pythonhosted.org/packages/1d/30/7f184a15798f36111a7ae149d758b6e6b948001a2589383b76a9c5c1f89e/pynuget-0.2.5.tar.gz" } ] }