diff --git a/tests/json_api_response.json b/tests/json_api_response.json deleted file mode 100644 index 273afba..0000000 --- a/tests/json_api_response.json +++ /dev/null @@ -1,538 +0,0 @@ -{ - "info": { - "author": "", - "author_email": "Bradley Reynolds ", - "bugtrack_url": null, - "classifiers": [], - "description": "# letsbuilda-pypi\n\nA wrapper for [PyPI's API and RSS feeds](https://warehouse.pypa.io/api-reference/index.html).\n", - "description_content_type": "text/markdown", - "docs_url": null, - "download_url": "", - "downloads": { - "last_day": -1, - "last_month": -1, - "last_week": -1 - }, - "home_page": "", - "keywords": "", - "license": "MIT", - "maintainer": "", - "maintainer_email": "", - "name": "letsbuilda-pypi", - "package_url": "https://pypi.org/project/letsbuilda-pypi/", - "platform": null, - "project_url": "https://pypi.org/project/letsbuilda-pypi/", - "project_urls": { - "documentation": "https://docs.letsbuilda.dev/letsbuilda-pypi/", - "repository": "https://github.com/letsbuilda/letsbuilda-pypi/" - }, - "release_url": "https://pypi.org/project/letsbuilda-pypi/4.0.0/", - "requires_dist": [ - "aiohttp", - "xmltodict", - "pendulum", - "black ; extra == 'dev'", - "isort ; extra == 'dev'", - "ruff ; extra == 'dev'", - "sphinx ; extra == 'docs'", - "furo ; extra == 'docs'", - "sphinx-autoapi ; extra == 'docs'", - "releases ; extra == 'docs'", - "toml ; extra == 'docs'", - "pytest ; extra == 'tests'" - ], - "requires_python": ">=3.10", - "summary": "A wrapper for PyPI's API and RSS feed", - "version": "4.0.0", - "yanked": false, - "yanked_reason": null - }, - "last_serial": 18988479, - "releases": { - "1.0.0": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "fae1b817cb1b4fe134635d02d35f195d7936d19c27df5bd203e998c2fd3623b2", - "md5": "efb9b64768a195fe2bc927e6c5f037d2", - "sha256": "0b927e62279d5ebd6cca79576bc585af85b27d58a1f6d40f8fcf2cca7544821f" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-1.0.0-py3-none-any.whl", - "has_sig": false, - "md5_digest": "efb9b64768a195fe2bc927e6c5f037d2", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.10", - "size": 3259, - "upload_time": "2023-03-29T22:13:10", - "upload_time_iso_8601": "2023-03-29T22:13:10.358483Z", - "url": "https://files.pythonhosted.org/packages/fa/e1/b817cb1b4fe134635d02d35f195d7936d19c27df5bd203e998c2fd3623b2/letsbuilda_pypi-1.0.0-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "7dae153fa833cf09dc812cca3bf3e1448e1dd316034259e40cbe3970cb5a20aa", - "md5": "42fa62b3a5be6d860b1485601d35fff2", - "sha256": "68502bcc58386ddd50aae0635b56e708d62e336c8e0e0bd62ddcf6a056111218" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-1.0.0.tar.gz", - "has_sig": false, - "md5_digest": "42fa62b3a5be6d860b1485601d35fff2", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.10", - "size": 3528, - "upload_time": "2023-03-29T22:13:12", - "upload_time_iso_8601": "2023-03-29T22:13:12.262217Z", - "url": "https://files.pythonhosted.org/packages/7d/ae/153fa833cf09dc812cca3bf3e1448e1dd316034259e40cbe3970cb5a20aa/letsbuilda-pypi-1.0.0.tar.gz", - "yanked": false, - "yanked_reason": null - } - ], - "2.0.0": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "1aeeca33bab28cd921c3ea92fa8fdc960c15495ef78d12f91b1d2a78b8999e9d", - "md5": "a39734ceab639efdb22bfd024084f85a", - "sha256": "2edf75db49308a1f7e33df2e76789a9728850a6e80c062b552f9307f3988a35d" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-2.0.0-py3-none-any.whl", - "has_sig": false, - "md5_digest": "a39734ceab639efdb22bfd024084f85a", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.10", - "size": 3199, - "upload_time": "2023-04-15T00:40:54", - "upload_time_iso_8601": "2023-04-15T00:40:54.286794Z", - "url": "https://files.pythonhosted.org/packages/1a/ee/ca33bab28cd921c3ea92fa8fdc960c15495ef78d12f91b1d2a78b8999e9d/letsbuilda_pypi-2.0.0-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "dd2443f086cfc31bdcf45cd4da6f2b40f5ac201e535fbe01d60e5b35716d9827", - "md5": "cb13dbbdea6911ff6c8dd2d1e4b948af", - "sha256": "26db1b425d00f8a17428defa677a76933e36ef38ce894a831cb9bd9b97990490" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-2.0.0.tar.gz", - "has_sig": false, - "md5_digest": "cb13dbbdea6911ff6c8dd2d1e4b948af", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.10", - "size": 3388, - "upload_time": "2023-04-15T00:40:56", - "upload_time_iso_8601": "2023-04-15T00:40:56.135467Z", - "url": "https://files.pythonhosted.org/packages/dd/24/43f086cfc31bdcf45cd4da6f2b40f5ac201e535fbe01d60e5b35716d9827/letsbuilda-pypi-2.0.0.tar.gz", - "yanked": false, - "yanked_reason": null - } - ], - "3.0.0": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "7d558c890b25a1beaebc740e39c137a1998ade9c3faa4115235df76e08df36a8", - "md5": "cbdf1467f44679a8deac19c041fceaed", - "sha256": "3d0a3652942336c2a3650706ca7100193601386146bb7256b4d2261214bf4815" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-3.0.0-py3-none-any.whl", - "has_sig": false, - "md5_digest": "cbdf1467f44679a8deac19c041fceaed", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.10", - "size": 4559, - "upload_time": "2023-04-23T03:08:09", - "upload_time_iso_8601": "2023-04-23T03:08:09.124069Z", - "url": "https://files.pythonhosted.org/packages/7d/55/8c890b25a1beaebc740e39c137a1998ade9c3faa4115235df76e08df36a8/letsbuilda_pypi-3.0.0-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "acfa20a07ba32ad22d690cde2a227fa65cdfcabfd7503d257dd76bd86b8c1bb7", - "md5": "9c118197819752c2f90e2e7221a81099", - "sha256": "b6f61f90947605d5ca3b1b35efc8f44514085548e716668b97a38c7e1dbdf299" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-3.0.0.tar.gz", - "has_sig": false, - "md5_digest": "9c118197819752c2f90e2e7221a81099", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.10", - "size": 4368, - "upload_time": "2023-04-23T03:08:11", - "upload_time_iso_8601": "2023-04-23T03:08:11.274459Z", - "url": "https://files.pythonhosted.org/packages/ac/fa/20a07ba32ad22d690cde2a227fa65cdfcabfd7503d257dd76bd86b8c1bb7/letsbuilda-pypi-3.0.0.tar.gz", - "yanked": false, - "yanked_reason": null - } - ], - "3.1.0": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "1b529532a9bedfc52c99285f515a4e478d8ef01ebb8d58db8d484a96ca148d8a", - "md5": "c21cbf7a52ad32d4ec8f40ba17434d33", - "sha256": "cff68f755e09063f539749b071ff8c5c22e5771b0bc2f07dbe2146366c874c4c" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-3.1.0-py3-none-any.whl", - "has_sig": false, - "md5_digest": "c21cbf7a52ad32d4ec8f40ba17434d33", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.10", - "size": 4660, - "upload_time": "2023-04-23T07:45:42", - "upload_time_iso_8601": "2023-04-23T07:45:42.955535Z", - "url": "https://files.pythonhosted.org/packages/1b/52/9532a9bedfc52c99285f515a4e478d8ef01ebb8d58db8d484a96ca148d8a/letsbuilda_pypi-3.1.0-py3-none-any.whl", - "yanked": true, - "yanked_reason": "Not working" - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "d015a62438b074fa5b13a2de54fc474dfcfe23cb65b1f7959d45f4ea794ae134", - "md5": "9fd7fbb2a0dd35b1b6bcdec8c367f754", - "sha256": "6b966c15b9dcf946718b74b263694c7616ff365c2253aed677204d1c42cc1dec" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-3.1.0.tar.gz", - "has_sig": false, - "md5_digest": "9fd7fbb2a0dd35b1b6bcdec8c367f754", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.10", - "size": 4470, - "upload_time": "2023-04-23T07:45:45", - "upload_time_iso_8601": "2023-04-23T07:45:45.650733Z", - "url": "https://files.pythonhosted.org/packages/d0/15/a62438b074fa5b13a2de54fc474dfcfe23cb65b1f7959d45f4ea794ae134/letsbuilda-pypi-3.1.0.tar.gz", - "yanked": true, - "yanked_reason": "Not working" - } - ], - "3.1.1": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "ce5b0f921f052966a12b29bf393706a9eb02cff30f3193a85eab995d100b37ea", - "md5": "df0a4621ad7a3177ad82562dbe244a02", - "sha256": "5c92f2309b915493f4360dfb2a76bf8e45a788dfb057ee12d66a9588e606f8c8" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-3.1.1-py3-none-any.whl", - "has_sig": false, - "md5_digest": "df0a4621ad7a3177ad82562dbe244a02", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.10", - "size": 4667, - "upload_time": "2023-04-23T07:59:18", - "upload_time_iso_8601": "2023-04-23T07:59:18.814405Z", - "url": "https://files.pythonhosted.org/packages/ce/5b/0f921f052966a12b29bf393706a9eb02cff30f3193a85eab995d100b37ea/letsbuilda_pypi-3.1.1-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "bd15fb06061ba026d13017b1010e54fb7350dbd2b2f155101f0b41a7d3442686", - "md5": "4aacbed4ae0a5c6abc20570b5db647e1", - "sha256": "8c586318125083637c4bb39ebbc204fd01b78a52a9348034a82e6f85bd949939" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-3.1.1.tar.gz", - "has_sig": false, - "md5_digest": "4aacbed4ae0a5c6abc20570b5db647e1", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.10", - "size": 4447, - "upload_time": "2023-04-23T07:59:21", - "upload_time_iso_8601": "2023-04-23T07:59:21.234822Z", - "url": "https://files.pythonhosted.org/packages/bd/15/fb06061ba026d13017b1010e54fb7350dbd2b2f155101f0b41a7d3442686/letsbuilda-pypi-3.1.1.tar.gz", - "yanked": false, - "yanked_reason": null - } - ], - "3.2.0": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "aea4b380961325d3bcfd55c6a03744e5c9f0ed8778ff71d117d99a55f68e0206", - "md5": "d57b5bc6b5b60dcbadcf7f037bd9481a", - "sha256": "fed6067915fcdb4a5e8a07d4864014241923c7cfa3f2cb623fc2a662a60df859" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-3.2.0-py3-none-any.whl", - "has_sig": false, - "md5_digest": "d57b5bc6b5b60dcbadcf7f037bd9481a", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.10", - "size": 4746, - "upload_time": "2023-04-26T02:26:14", - "upload_time_iso_8601": "2023-04-26T02:26:14.209599Z", - "url": "https://files.pythonhosted.org/packages/ae/a4/b380961325d3bcfd55c6a03744e5c9f0ed8778ff71d117d99a55f68e0206/letsbuilda_pypi-3.2.0-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "495b73e42528147eb050948b5bbe23678ad4c826bdba4428f4a0463abfb1f66d", - "md5": "0873e8250e2e846b1e602fe1944686c3", - "sha256": "20c9e6c9b2075c29f2195d75dd9b21db8fcb45cc1b12b403179cb5100c2d33ee" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-3.2.0.tar.gz", - "has_sig": false, - "md5_digest": "0873e8250e2e846b1e602fe1944686c3", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.10", - "size": 4559, - "upload_time": "2023-04-26T02:26:16", - "upload_time_iso_8601": "2023-04-26T02:26:16.032125Z", - "url": "https://files.pythonhosted.org/packages/49/5b/73e42528147eb050948b5bbe23678ad4c826bdba4428f4a0463abfb1f66d/letsbuilda-pypi-3.2.0.tar.gz", - "yanked": false, - "yanked_reason": null - } - ], - "4.0.0": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "cb63f897bdaa98710f9cb96ca1391742192975a776dc70a5a7b0acfbab50b20b", - "md5": "f7b5fd97141a4eae7966002634703002", - "sha256": "67a5925e5a51f761ad3c28f3abf90d0b0b4270c26efd87f596d42e5706a63798" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-4.0.0-py3-none-any.whl", - "has_sig": false, - "md5_digest": "f7b5fd97141a4eae7966002634703002", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.10", - "size": 4772, - "upload_time": "2023-04-26T02:40:03", - "upload_time_iso_8601": "2023-04-26T02:40:03.919027Z", - "url": "https://files.pythonhosted.org/packages/cb/63/f897bdaa98710f9cb96ca1391742192975a776dc70a5a7b0acfbab50b20b/letsbuilda_pypi-4.0.0-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "71a0d9b47f7a17efb1d296d189ae83c5381c80efa0e0984a96cb2f719136797e", - "md5": "27e181efe8b2f558784439b7878d6600", - "sha256": "0060a9380a89bf772c84c4f39d89417b6529378c4ce39f3b525b40f83c883287" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-4.0.0.tar.gz", - "has_sig": false, - "md5_digest": "27e181efe8b2f558784439b7878d6600", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.10", - "size": 4567, - "upload_time": "2023-04-26T02:40:05", - "upload_time_iso_8601": "2023-04-26T02:40:05.331985Z", - "url": "https://files.pythonhosted.org/packages/71/a0/d9b47f7a17efb1d296d189ae83c5381c80efa0e0984a96cb2f719136797e/letsbuilda-pypi-4.0.0.tar.gz", - "yanked": false, - "yanked_reason": null - } - ], - "5.0.0b1": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "3d3ded6c1d771a34406597614bc208b67cd57b489a63d1876a59907ae86df100", - "md5": "8fe5179455e3b0fec83678456b81da79", - "sha256": "1ed47bd83283d8209c3e01fea44ea15ea23b4f403e3e520466b985e4e8be5e1f" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-5.0.0b1-py3-none-any.whl", - "has_sig": false, - "md5_digest": "8fe5179455e3b0fec83678456b81da79", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.11.4", - "size": 8397, - "upload_time": "2023-07-13T05:10:17", - "upload_time_iso_8601": "2023-07-13T05:10:17.808407Z", - "url": "https://files.pythonhosted.org/packages/3d/3d/ed6c1d771a34406597614bc208b67cd57b489a63d1876a59907ae86df100/letsbuilda_pypi-5.0.0b1-py3-none-any.whl", - "yanked": true, - "yanked_reason": "Async client uses a method that doesn't exist" - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "b18324480c240b0dfc1e33cd319d03895572e5b00c66d5beb3840cc5724b4dc1", - "md5": "a576bb7d4ed58e3d2df73e7a7230c221", - "sha256": "da9a0997ff82ecd8a0e2d1fa04873626ed0fb630205a824823a548e93c1b5aa2" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-5.0.0b1.tar.gz", - "has_sig": false, - "md5_digest": "a576bb7d4ed58e3d2df73e7a7230c221", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.11.4", - "size": 6488, - "upload_time": "2023-07-13T05:10:18", - "upload_time_iso_8601": "2023-07-13T05:10:18.814339Z", - "url": "https://files.pythonhosted.org/packages/b1/83/24480c240b0dfc1e33cd319d03895572e5b00c66d5beb3840cc5724b4dc1/letsbuilda-pypi-5.0.0b1.tar.gz", - "yanked": true, - "yanked_reason": "Async client uses a method that doesn't exist" - } - ], - "5.0.0b2": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "c07f02d1a6e7a666a14a7ec285cd2599fd3bab55f54850c660983fe45e95d274", - "md5": "d82accee332954092ac7ef0c89feb066", - "sha256": "96d8311b0788830abd888e8a1c9959a3462da84f7755b9c89547dd1e87fb438f" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-5.0.0b2-py3-none-any.whl", - "has_sig": false, - "md5_digest": "d82accee332954092ac7ef0c89feb066", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.11.4", - "size": 8405, - "upload_time": "2023-07-14T23:52:00", - "upload_time_iso_8601": "2023-07-14T23:52:00.417904Z", - "url": "https://files.pythonhosted.org/packages/c0/7f/02d1a6e7a666a14a7ec285cd2599fd3bab55f54850c660983fe45e95d274/letsbuilda_pypi-5.0.0b2-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "0d037aa04b6fda87541da49be63235c14fbcb3cc8298dfd09281dc8f2ee0d811", - "md5": "835a34ee2096f97c56c4edd95e8d05ae", - "sha256": "4669e491b14d3188178a2b64ca403836ca5658ed100e9fd051fbcbd717ab977b" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-5.0.0b2.tar.gz", - "has_sig": false, - "md5_digest": "835a34ee2096f97c56c4edd95e8d05ae", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.11.4", - "size": 6521, - "upload_time": "2023-07-14T23:52:02", - "upload_time_iso_8601": "2023-07-14T23:52:02.740691Z", - "url": "https://files.pythonhosted.org/packages/0d/03/7aa04b6fda87541da49be63235c14fbcb3cc8298dfd09281dc8f2ee0d811/letsbuilda-pypi-5.0.0b2.tar.gz", - "yanked": false, - "yanked_reason": null - } - ], - "5.0.0b3": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "88ee0ac827ec9ce51158b7c0890efa66bffe8bf6b8b44bd338a1a31a331ef51d", - "md5": "556c5120da01cdda35fc568fe96fc4e0", - "sha256": "9459ce8aeccf5c4676c7ba1629ada62e0e2f22f8dd7b7b1efa34bf6d501114f7" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-5.0.0b3-py3-none-any.whl", - "has_sig": false, - "md5_digest": "556c5120da01cdda35fc568fe96fc4e0", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.11", - "size": 7716, - "upload_time": "2023-07-21T20:30:36", - "upload_time_iso_8601": "2023-07-21T20:30:36.393971Z", - "url": "https://files.pythonhosted.org/packages/88/ee/0ac827ec9ce51158b7c0890efa66bffe8bf6b8b44bd338a1a31a331ef51d/letsbuilda_pypi-5.0.0b3-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "46cebe65ae8f4bc93872f0bd07425b745aaba0d942f496451344bb84ff6d6cd9", - "md5": "71bd134aacd3a5a2f0f24341e2ce5649", - "sha256": "f4432b5a6565c67258801c8d34590556bd2542c33a71773e885bc9aa6d0373dc" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-5.0.0b3.tar.gz", - "has_sig": false, - "md5_digest": "71bd134aacd3a5a2f0f24341e2ce5649", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.11", - "size": 6081, - "upload_time": "2023-07-21T20:30:37", - "upload_time_iso_8601": "2023-07-21T20:30:37.535554Z", - "url": "https://files.pythonhosted.org/packages/46/ce/be65ae8f4bc93872f0bd07425b745aaba0d942f496451344bb84ff6d6cd9/letsbuilda-pypi-5.0.0b3.tar.gz", - "yanked": false, - "yanked_reason": null - } - ] - }, - "urls": [ - { - "comment_text": "", - "digests": { - "blake2b_256": "cb63f897bdaa98710f9cb96ca1391742192975a776dc70a5a7b0acfbab50b20b", - "md5": "f7b5fd97141a4eae7966002634703002", - "sha256": "67a5925e5a51f761ad3c28f3abf90d0b0b4270c26efd87f596d42e5706a63798" - }, - "downloads": -1, - "filename": "letsbuilda_pypi-4.0.0-py3-none-any.whl", - "has_sig": false, - "md5_digest": "f7b5fd97141a4eae7966002634703002", - "packagetype": "bdist_wheel", - "python_version": "py3", - "requires_python": ">=3.10", - "size": 4772, - "upload_time": "2023-04-26T02:40:03", - "upload_time_iso_8601": "2023-04-26T02:40:03.919027Z", - "url": "https://files.pythonhosted.org/packages/cb/63/f897bdaa98710f9cb96ca1391742192975a776dc70a5a7b0acfbab50b20b/letsbuilda_pypi-4.0.0-py3-none-any.whl", - "yanked": false, - "yanked_reason": null - }, - { - "comment_text": "", - "digests": { - "blake2b_256": "71a0d9b47f7a17efb1d296d189ae83c5381c80efa0e0984a96cb2f719136797e", - "md5": "27e181efe8b2f558784439b7878d6600", - "sha256": "0060a9380a89bf772c84c4f39d89417b6529378c4ce39f3b525b40f83c883287" - }, - "downloads": -1, - "filename": "letsbuilda-pypi-4.0.0.tar.gz", - "has_sig": false, - "md5_digest": "27e181efe8b2f558784439b7878d6600", - "packagetype": "sdist", - "python_version": "source", - "requires_python": ">=3.10", - "size": 4567, - "upload_time": "2023-04-26T02:40:05", - "upload_time_iso_8601": "2023-04-26T02:40:05.331985Z", - "url": "https://files.pythonhosted.org/packages/71/a0/d9b47f7a17efb1d296d189ae83c5381c80efa0e0984a96cb2f719136797e/letsbuilda-pypi-4.0.0.tar.gz", - "yanked": false, - "yanked_reason": null - } - ], - "vulnerabilities": [] - } diff --git a/tests/test_json_api_parsing.py b/tests/test_json_api_parsing.py index bcdce52..0f812ec 100644 --- a/tests/test_json_api_parsing.py +++ b/tests/test_json_api_parsing.py @@ -1,15 +1,108 @@ """Test parsing metadata from the JSON API.""" -import json -from pathlib import Path +from datetime import UTC, datetime from letsbuilda.pypi import JSONPackageMetadata +JSON_API_DATA = { + "info": { + "author": "", + "author_email": "Bradley Reynolds ", + "bugtrack_url": None, + "classifiers": [], + "description": "# letsbuilda-pypi\n\nA wrapper for [PyPI's API and RSS feeds](https://warehouse.pypa.io/api-reference/index.html).\n", + "description_content_type": "text/markdown", + "docs_url": None, + "download_url": "", + "downloads": {"last_day": -1, "last_month": -1, "last_week": -1}, + "home_page": "", + "keywords": "", + "license": "MIT", + "maintainer": "", + "maintainer_email": "", + "name": "letsbuilda-pypi", + "package_url": "https://pypi.org/project/letsbuilda-pypi/", + "platform": None, + "project_url": "https://pypi.org/project/letsbuilda-pypi/", + "project_urls": { + "documentation": "https://docs.letsbuilda.dev/letsbuilda-pypi/", + "repository": "https://github.com/letsbuilda/letsbuilda-pypi/", + }, + "release_url": "https://pypi.org/project/letsbuilda-pypi/4.0.0/", + "requires_dist": [ + "aiohttp", + "xmltodict", + "pendulum", + "black ; extra == 'dev'", + "isort ; extra == 'dev'", + "ruff ; extra == 'dev'", + "sphinx ; extra == 'docs'", + "furo ; extra == 'docs'", + "sphinx-autoapi ; extra == 'docs'", + "releases ; extra == 'docs'", + "toml ; extra == 'docs'", + "pytest ; extra == 'tests'", + ], + "requires_python": ">=3.10", + "summary": "A wrapper for PyPI's API and RSS feed", + "version": "4.0.0", + "yanked": False, + "yanked_reason": None, + }, + "last_serial": 18988479, + "urls": [ + { + "comment_text": "", + "digests": { + "blake2b_256": "cb63f897bdaa98710f9cb96ca1391742192975a776dc70a5a7b0acfbab50b20b", + "md5": "f7b5fd97141a4eae7966002634703002", + "sha256": "67a5925e5a51f761ad3c28f3abf90d0b0b4270c26efd87f596d42e5706a63798", + }, + "downloads": -1, + "filename": "letsbuilda_pypi-4.0.0-py3-none-any.whl", + "has_sig": False, + "md5_digest": "f7b5fd97141a4eae7966002634703002", + "packagetype": "bdist_wheel", + "python_version": "py3", + "requires_python": ">=3.10", + "size": 4772, + "upload_time": "2023-04-26T02:40:03", + "upload_time_iso_8601": "2023-04-26T02:40:03.919027Z", + "url": "https://files.pythonhosted.org/packages/cb/63/f897bdaa98710f9cb96ca1391742192975a776dc70a5a7b0acfbab50b20b/letsbuilda_pypi-4.0.0-py3-none-any.whl", + "yanked": False, + "yanked_reason": None, + }, + { + "comment_text": "", + "digests": { + "blake2b_256": "71a0d9b47f7a17efb1d296d189ae83c5381c80efa0e0984a96cb2f719136797e", + "md5": "27e181efe8b2f558784439b7878d6600", + "sha256": "0060a9380a89bf772c84c4f39d89417b6529378c4ce39f3b525b40f83c883287", + }, + "downloads": -1, + "filename": "letsbuilda-pypi-4.0.0.tar.gz", + "has_sig": False, + "md5_digest": "27e181efe8b2f558784439b7878d6600", + "packagetype": "sdist", + "python_version": "source", + "requires_python": ">=3.10", + "size": 4567, + "upload_time": "2023-04-26T02:40:05", + "upload_time_iso_8601": "2023-04-26T02:40:05.331985Z", + "url": "https://files.pythonhosted.org/packages/71/a0/d9b47f7a17efb1d296d189ae83c5381c80efa0e0984a96cb2f719136797e/letsbuilda-pypi-4.0.0.tar.gz", + "yanked": False, + "yanked_reason": None, + }, + ], + "vulnerabilities": [], +} + def test_json_api_data_parsing() -> None: """Confirm sample JSON API data gets parsed correctly.""" - text = (Path(__file__).parent / "json_api_response.json").read_text(encoding="UTF=8") - model = JSONPackageMetadata.from_dict(json.loads(text)) + model = JSONPackageMetadata.from_dict(JSON_API_DATA) assert model.info.name == "letsbuilda-pypi" assert model.info.version == "4.0.0" + assert model.urls[0].upload_time == datetime(2023, 4, 26, 2, 40, 3) + assert model.urls[0].upload_time_iso_8601 == datetime(2023, 4, 26, 2, 40, 3, 919027, tzinfo=UTC)