{ "info": { "author": "Juan Carlos", "author_email": "juancarlospaco@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Other Audience", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development" ], "description": "\n\n\n# Faster-than-Requests\n\n[![screenshot](https://source.unsplash.com/eH_ftJYhaTY/800x402 \"Please Star this repo on GitHub!\")](https://youtu.be/QiKwnlyhKrk?t=5)\n\n![screenshot](temp.jpg \"Please Star this repo on GitHub!\")\n\n| Library | Speed | Files | LOC | Dependencies | Developers |\n|-------------------------------|----------|-------|------|-----------------------|------------|\n| PyWGET | `152.39` | 1 | 338 | Wget | >17 |\n| Requests | `15.58` | >20 | 2558 | >=7 | >527 |\n| Requests (cached object) | `5.50` | >20 | 2558 | >=7 | >527 |\n| Urllib | `4.00` | ??? | 1200 | 0 (std lib) | ??? |\n| Urllib3 | `3.55` | >40 | 5242 | 0 (No SSL), >=5 (SSL) | >188 |\n| PyCurl | `0.75` | >15 | 5932 | Curl, LibCurl | >50 |\n| PyCurl (no SSL) | `0.68` | >15 | 5932 | Curl, LibCurl | >50 |\n| Faster_than_requests | `0.45` | 1 | 75 | 0 | 1 |\n\n
\n\n- Lines Of Code counted using [CLOC](https://github.com/AlDanial/cloc).\n- Direct dependencies of the package when ready to run.\n- Benchmarks run on Docker from Dockerfile on this repo.\n- Developers counted from the Contributors list of Git.\n- Speed is IRL time to complete 10000 HTTP local requests.\n- Stats as of year 2019.\n- x86_64 64Bit AMD, SSD, Arch Linux.\n\n
\n\n\n# Use\n\n```python\nimport faster_than_requests as requests\n\nprint(requests.gets(\"http://httpbin.org/get\")) # GET\nprint(requests.posts(\"http://httpbin.org/post\", \"Some Data Here\")) # POST\nrequests.downloads(\"http://example.com/foo.jpg\", \"output.jpg\") # See Docs for more info.\n```\n\n\n# gets()\n
\n\n**Description:**\nTakes an URL string, makes an HTTP GET and returns a dict with the response.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# posts()\n
\n\n**Description:**\nTakes an URL string, makes an HTTP POST and returns a dict with the response.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n- `body = \"My Body Data Here\"`\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# put()\n
\n\n**Description:**\nTakes an URL string, makes an HTTP PUT and returns a dict with the response.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n- `body = \"My Body Data Here\"`\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# deletes()\n
\n\n**Description:**\nTakes an URL string, makes an HTTP DELETE and returns a dict with the response.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# patch()\n
\n\n**Description:**\nTakes an URL string, makes an HTTP PATCH and returns a dict with the response.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n- `body = \"My Body Data Here\"`\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# get2str()\n
\n\n**Description:**\nTakes an URL string, makes an HTTP GET and returns a string with the response Body.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n\n**Returns:** Response body, `string` type, can be empty string.\n\n
\n\n\n# get2str_list()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP GET for each URL, and returns a list of strings with the response Body.\n\n**Arguments:**\n- `list_of_urls` A list of the remote URLs, list type, required. Objects inside the list must be string type.\n\nExamples:\n- `list_of_urls = [\"http://example.com/foo\", \"http://example.com/bar\"]`\n\n**Returns:**\nList of response bodies, `list` type, values of the list are string type,\nvalues of the list can be empty string, can be empty list.\n\n
\n\n\n# get2ndjson_list()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP GET for each URL, returns a list of strings with the response, and writes the responses to a NDJSON file, it can accumulate several JSON responses into a single file.\n\n**Arguments:**\n- `list_of_urls` A list of the remote URLs, list type, required. Objects inside the list must be string type.\n- `ndjson_file_path` Full path to a local writable NDJSON file, string type, required, file can be non-existent and it will be created, if it exists it will the overwritten.\n\nExamples:\n- `list_of_urls = [\"http://example.com/foo\", \"http://example.com/bar\"]`\n- `ndjson_file_path = \"/some/folder/some/file.ndjson\"`\n\n**Returns:** None.\n\n
\n\n\n# get2dict()\n
\n\n**Description:**\nTakes an URL, makes an HTTP GET, returns a dict with the response Body.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# get2json()\n
\n\n**Description:**\nTakes an URL, makes an HTTP GET, returns a Minified Computer-friendly single-line JSON with the response Body.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n\n**Returns:** Response Body, Minified JSON, on a single line.\n\n
\n\n\n# get2json_pretty()\n
\n\n**Description:**\nTakes an URL, makes an HTTP GET, returns a Pretty-Printed Human-friendly Multi-line JSON with the response Body.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n\n**Returns:** Response Body, Pretty-Printed JSON, multi-line.\n\n
\n\n\n# get2assert()\n
\n\n**Description:**\nTakes an URL, makes an HTTP GET, returns nothing, makes an assertion, useful for Unittest and Debug purposes.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `expected` Response expected content, string type, required, can be empty string.\n\n**Returns:** None.\n\n
\n\n\n# getlist2list()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP GET for each URL, returns a list of responses.\n\n**Arguments:**\n- `list_of_urls` the remote URLS, list type, required, the objects inside the list must be string type.\n\nExamples:\n- `list_of_urls = [\"http://example.com/foo\", \"http://example.com/bar\"]`\n\n**Returns:**\nList of response bodies, `list` type, values of the list are string type,\nvalues of the list can be empty string, can be empty list.\n\n
\n\n\n# post2str()\n
\n\n**Description:**\nTakes an URL, makes an HTTP POST, returns the response Body as string type.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n- `body = \"My Body Data Here\"`\n\n**Returns:** Response body, `string` type, can be empty string.\n\n
\n\n\n# post2dict()\n
\n\n**Description:**\nTakes an URL, makes a HTTP POST on that URL, returns a dict with the response.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n- `body = \"My Body Data Here\"`\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# post2json()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP GET for each URL, returns a list of responses.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n- `body = \"My Body Data Here\"`\n\n**Returns:** Response, string type.\n\n
\n\n\n# post2json_pretty()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP GET for each URL, returns a list of responses.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n\nExamples:\n- `url = \"http://example.com\"`\n- `body = \"My Body Data Here\"`\n\n**Returns:** Response, string type.\n\n
\n\n\n# post2assert()\n
\n\n**Description:**\nTakes an URL, makes an HTTP POST on that URL, returns a response.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n- `expected` Response expected content, string type, required, can be empty string.\n\n**Returns:** None.\n\n
\n\n\n# post2list()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP POST for each URL, returns a list of responses.\n\n**Arguments:**\n- `list_of_urls` the remote URLS, list type, required, the objects inside the list must be string type.\n- `body` the Body data, string type, required, can be empty string.\n\nExamples:\n- `list_of_urls = [\"http://example.com/foo\", \"http://example.com/bar\"]`\n- `body = \"My Body Data Here\"`\n\n**Returns:**\nList of response bodies, `list` type, values of the list are string type,\nvalues of the list can be empty string, can be empty list.\n\n
\n\n\n# downloads()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP GET for each URL, returns a list of responses.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `filename` the local filename, string type, required, must not be empty string, full path recommended, can be relative path, includes file extension.\n\nExamples:\n- `url = \"http://example.com\"`\n- `filename = \"cat-memes.jpg\"`\n\n**Returns:** None.\n\n
\n\n\n# downloads_list()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP GET Download for each URL of the list.\n\n**Arguments:**\n- `list_of_files` list of tuples, tuples must be 2 items long, first item is URL and second item is filename.\nThe remote URL, string type, required, must not be empty string, is the first item on the tuple.\nThe local filename, string type, required, must not be empty string, can be full path, can be relative path, must include file extension.\n\nExamples:\n- `list_of_files = [(\"http://example.com/cat.jpg\", \"kitten.jpg\")]`\n- `list_of_files = [(\"http://example.com/cat.jpg\", \"kitten.jpg\"), (\"http://example.com/dog.jpg\", \"doge.jpg\")]`\n\n**Returns:** None.\n\n
\n\n\n# downloads_list_delay()\n
\n\n**Description:**\nTakes a list of URLs, makes 1 HTTP GET Download for each URL of the list of with a delay, optional randomized delay.\n\n**Arguments:**\n- `delay` Delay between a download and the next one, integer type, required, must be non-zero positive integer value.\n- `randoms` Randomize the Delay, bool type, required, default is `False`.\n- `debugs` Debug the downloads, bool type, required, default is `False`.\n- `list_of_files` list of tuples, tuples must be 2 items long, first item is URL and second item is filename.\nThe remote URL, string type, required, must not be empty string, is the first item on the tuple.\nThe local filename, string type, required, must not be empty string, can be full path, can be relative path, must include file extension.\n\nExamples:\n- `list_of_files = [(\"http://example.com/cat.jpg\", \"kitten.jpg\")]`\n- `list_of_files = [(\"http://example.com/cat.jpg\", \"kitten.jpg\"), (\"http://example.com/dog.jpg\", \"doge.jpg\")]`\n\n**Returns:** None.\n\n
\n\n\n# setHeaders()\n
\n\n**Description:**\nSet the HTTP Headers from the arguments.\n\n**Arguments:**\n- `headers` HTTP Headers, list type, required,\na list of tuples, tuples must be 2 items long,\nmust not be empty list, must not be empty tuple,\nthe first item of the tuple is the key and second item of the tuple is value,\nkeys must not be empty string, values can be empty string, both must the stripped.\n\nExamples:\n- `headers = [(\"key\", \"value\")]`\n- `headers = [(\"key0\", \"value0\"), (\"key1\", \"value1\")]`\n- `headers = [(\"content-type\", \"text/plain\"), (\"dnt\", \"1\")]`\n\n**Returns:** None.\n\n
\n\n\n# requests()\n
\n\n**Description:**\nLow level API of Requests with everything available as argument to build a detailed custom HTTP request.\n\n**Arguments:**\n- `url` the remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n- `http_method` HTTP method, string type, required, must not be empty string, values can be `\"GET\"`, `\"POST\"`, etc.\n- `debugs` Debug mode, bool type, required, default is `False`.\n- `http_headers` HTTP Headers, list type, required,\na list of tuples, tuples must be 2 items long,\nmust not be empty list, must not be empty tuple,\nthe first item of the tuple is the key and second item of the tuple is value,\nkeys must not be empty string, values can be empty string, both must the stripped.\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# requests2()\n
\n\n**Description:**\nLow level API of Requests with everything available as argument with extra options to build a detailed custom HTTP request.\nIts like `request()` function but re-imagined with different features.\nMay be slower than `request()`.\n\n**Arguments:**\n- `url` Remote URL, string type, required, must not be empty string.\n- `body` the Body data, string type, required, can be empty string.\n- `proxyUrl` Full URL of your Network Proxy, string type, required, can be empty string.\n- `proxyAuth` Auth of your Network Proxy if any, string type, required, can be empty string.\n- `userAgent` User Agent to use for the requests, string type, required, can be empty string.\n- `timeout` Timeout, integer type, Milliseconds precision, must be non-zero positive integer, can be `-1`.\n- `maxRedirects` Maximum Redirects, integer type, must be non-zero positive integer, can be `1`.\n- `http_method` HTTP method, string type, required, must not be empty string, values can be `\"GET\"`, `\"POST\"`, etc.\n- `http_headers` HTTP Headers, list type, required,\na list of tuples, tuples must be 2 items long,\nmust not be empty list, must not be empty tuple,\nthe first item of the tuple is the key and second item of the tuple is value,\nkeys must not be empty string, values can be empty string, both must the stripped.\n\n**Returns:**\nResponse, `dict` type, values of the dict are string type,\nvalues of the dict can be empty string, but keys are always consistent.\n\n
\n\n\n# debugConfig()\n
\n\n**Description:**\nDebug the internal Configuration of the library, takes no arguments, returns nothing,\nprints the pretty-printed human-friendly multi-line JSON Configuration to standard output terminal.\n\n**Arguments:** None.\n\n**Returns:** None.\n\n
\n\n\n# tuples2json_pretty()\n
\n\n**Description:**\nConvert Tuples to JSON, this is a UX improvement just for convenience, this is 100% optional,\nreturns the Tuples converted to pretty-printed human-friendly multi-line JSON.\n\n**Arguments:**\n- `tuples` A list containing Tuples, list type, required,\na list of tuples, tuples must be 2 items long,\nmust not be empty list, must not be empty tuple,\nthe first item of the tuple is the key and second item of the tuple is value,\nkeys must not be empty string, values can be empty string, both must the stripped.\n\n**Returns:** JSON, string type.\n\n
\n\n\n# tuples2json()\n
\n\n**Description:**\nConvert Tuples to JSON, this is a UX improvement just for convenience, this is 100% optional,\nreturns the Tuples converted to Minified computer-friendly single-line JSON.\n\n**Arguments:**\n- `tuples` A list containing Tuples, list type, required,\na list of tuples, tuples must be 2 items long,\nmust not be empty list, must not be empty tuple,\nthe first item of the tuple is the key and second item of the tuple is value,\nkeys must not be empty string, values can be empty string, both must the stripped.\n\n**Returns:** JSON, string type.\n\n
\n\n\n[**For more Examples check the Examples and Tests.**](https://github.com/juancarlospaco/faster-than-requests/blob/master/examples/example.py)\n\nInstead of having a pair of functions with a lot of arguments that you should provide to make it work,\nwe have tiny functions with very few arguments that do one thing and do it as fast as possible.\n\nA lot of functions are oriented to Data Science, Big Data, Open Data, Web Scrapping, working with HTTP REST JSON APIs.\n\n\n# Install\n\n- `pip install faster_than_requests`\n\n\n# Docker\n\n- Make a quick test drive on Docker!.\n\n```bash\n$ ./build-docker.sh\n$ ./run-docker.sh\n$ ./server4benchmarks & # Inside Docker.\n$ python3 benchmark.py # Inside Docker.\n```\n\n\n# Dependencies\n\n- **None**\n\n\n# Platforms\n\n- \u2705 Linux\n- \u2705 Windows\n- \u2705 Mac\n- \u2705 Android\n- \u2705 Raspberry Pi\n- \u2705 BSD\n\n\n# Extras\n\nMore Faster Libraries...\n\n- https://github.com/juancarlospaco/faster-than-csv#faster-than-csv\n- https://github.com/juancarlospaco/faster-than-walk#faster-than-walk\n- We want to make Open Source faster, better, stronger.\n\n\n# Requisites\n\n- Python 3.\n- GCC.\n- 64 Bit.\n\n\n##### Low Level API Extras\n\nTo control the default values the following optional Bash environment variables are available:\n\n- `requests_timeout` Timeout, `int` type, must be a non-zero positive value, milliseconds precision, can be `-1`.\n- `requests_maxredirects` Maximum Redirects, `int` type, must be a non-zero positive value, can be `1`.\n- `requests_useragent` User Agent, `str` type, can be empty string, recommended empty string, can be `\"\"`.\n\nExamples:\n\n```bash\n$ export https_proxy = \"http://yourProxyUrl:8080\"\n$ export requests_maxredirects = \"42\"\n$ # This is the Bash command line terminal!.\n```\n\n- **This is 100% Optional. This is provided as Extra features.**\n\n\n# FAQ\n\n- Whats the idea, inspiration, reason, etc ?.\n\n[Feel free to Fork, Clone, Download, Improve, Reimplement, Play with this Open Source. Make it 10 times faster, 10 times smaller.](http://tonsky.me/blog/disenchantment)\n\n- This works with SSL ?.\n\nYes.\n\n- This works without SSL ?.\n\nYes.\n\n- This requires Cython ?.\n\nNo.\n\n- This runs on PyPy ?.\n\nNo.\n\n- This runs on Python2 ?.\n\nI dunno. (Not supported)\n\n- This runs on 32Bit ?.\n\nNo.\n\n- This runs with Clang ?.\n\nNo.\n\n- How can I Install it ?.\n\n`pip install faster_than_requests`\n\n- Developer Documentation ?.\n\n[Yes.](https://github.com/juancarlospaco/faster-than-requests/raw/master/faster_than_requests_DOCS.zip)\n(Zip because GitHub marks the Repo as being JavaScript)\n\n- Where to get help ?.\n\nhttps://github.com/juancarlospaco/faster-than-requests/issues\n\n- How to set the URL ?.\n\n`url=\"http://example.com\"` (1st argument always).\n\n- How to set the HTTP Method ?.\n\n`http_method=\"get\"` for GET.\n\n`http_method=\"post\"` for POST.\n\n`http_method=\"put\"` for PUT.\n\n`http_method=\"patch\"` for PATCH.\n\n- How to set the HTTP Body ?.\n\n`body=\"my body\"`\n\n- How to set an HTTP Header key=value ?.\n\n[setHeaders()](https://github.com/juancarlospaco/faster-than-requests#setheaders)\n\n- How to set HTTP Proxy ?.\n\n[requests2()](https://github.com/juancarlospaco/faster-than-requests#requests2)\n\nOR\n\n`export https_proxy = \"http://yourProxyUrl:8080\"`\n\n`export http_proxy = \"http://yourProxyUrl:8080\"`\n\nStandard Linux Bash environment variables for proxy.\n\nIt will be automatically read from the environment variables.\n\n- Whats NDJSON ?.\n\nhttps://github.com/ndjson/ndjson-spec\n\n- How can be faster than PyCurl ?.\n\nI dunno.\n\n- Why use Tuple instead of Dict for HTTP Headers ?.\n\nFor speed performance reasons, `dict` is slower, bigger, heavier and mutable compared to `tuple`.\n\n- Why needs 64Bit ?.\n\nMaybe it works on 32Bit, but is not supported, integer sizes are too small, and performance can be worse.\n\n- Why needs Python 3 ?.\n\nMaybe it works on Python 2, but is not supported, and performance can be worse, we suggest to migrate to Python3.\n\n- Can I wrap the functions on a `try: except:` block ?.\n\nFunctions do not have internal `try: except:` blocks,\nso you can wrap them inside `try: except:` blocks if you need very resilient code.\n\n- PIP fails to install or fails build the wheel ?.\n\nAdd at the end of the PIP install command:\n\n` --isolated --disable-pip-version-check --no-cache-dir --no-binary :all: `\n\nNot my Bug.\n\n- How to Build the project ?.\n\n`build.sh`\n\n- How to Package the project ?.\n\n`package.sh`", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/juancarlospaco/faster-than-requests/releases", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/juancarlospaco/faster-than-requests#faster-than-requests", "keywords": "requests,pycurl,python3,cpython,speed,cython,performance,scrapy,curl,pycurl,urllib3,requests3,c", "license": "MIT", "maintainer": "Juan Carlos", "maintainer_email": "juancarlospaco@gmail.com", "name": "faster-than-requests", "package_url": "https://pypi.org/project/faster-than-requests/", "platform": "Linux", "project_url": "https://pypi.org/project/faster-than-requests/", "project_urls": { "Bugs": "https://github.com/juancarlospaco/faster-than-requests/issues", "CoC": "https://github.com/juancarlospaco/faster-than-requests/blob/master/CODE_OF_CONDUCT.md", "Docs": "https://github.com/juancarlospaco/faster-than-requests#faster-than-requests", "Download": "https://github.com/juancarlospaco/faster-than-requests/releases", "Homepage": "https://github.com/juancarlospaco/faster-than-requests#faster-than-requests" }, "release_url": "https://pypi.org/project/faster-than-requests/0.5/", "requires_dist": null, "requires_python": ">3.6", "summary": "Faster & simpler requests replacement for Python.", "version": "0.5" }, "last_serial": 5286714, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "c32bd0844c9d5ea80314050865680c9c", "sha256": "5d4636f9ffc26c811f5b45d4a7b696520d6135be70aeb3010b6a33f442afb3fe" }, "downloads": -1, "filename": "faster_than_requests-0.1.zip", "has_sig": false, "md5_digest": "c32bd0844c9d5ea80314050865680c9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 249875, "upload_time": "2019-01-04T03:07:03", "url": "https://files.pythonhosted.org/packages/71/dd/b2160ca61114a35238bf9d5f5ccb88ca759b6d2f9246e6e13f4d263c270d/faster_than_requests-0.1.zip" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "605e43d822844f17b97f06cbb119b4e8", "sha256": "63c65af9002bb9bc5988e7389260b5aae4a907d1e04be8b0ebbb0bf6db8c61fa" }, "downloads": -1, "filename": "faster_than_requests-0.5.zip", "has_sig": false, "md5_digest": "605e43d822844f17b97f06cbb119b4e8", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 271212, "upload_time": "2019-05-18T22:13:27", "url": "https://files.pythonhosted.org/packages/57/86/c1645359414b586757cdaee3c8baa684c0ab7fc309ed640998d2f94a3aae/faster_than_requests-0.5.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "605e43d822844f17b97f06cbb119b4e8", "sha256": "63c65af9002bb9bc5988e7389260b5aae4a907d1e04be8b0ebbb0bf6db8c61fa" }, "downloads": -1, "filename": "faster_than_requests-0.5.zip", "has_sig": false, "md5_digest": "605e43d822844f17b97f06cbb119b4e8", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 271212, "upload_time": "2019-05-18T22:13:27", "url": "https://files.pythonhosted.org/packages/57/86/c1645359414b586757cdaee3c8baa684c0ab7fc309ed640998d2f94a3aae/faster_than_requests-0.5.zip" } ] }