{ "info": { "author": "Kurt Matarese", "author_email": "none@none.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3" ], "description": "Glide: Easy ETL\n===============\n\n[![Generic badge](https://img.shields.io/badge/Status-Alpha-yellow.svg)](https://shields.io/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Documentation Status](https://readthedocs.org/projects/glide-etl/badge/?version=latest)](https://glide-etl.readthedocs.io/en/latest/?badge=latest)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n![Python 3.6+](https://img.shields.io/badge/python-3.6+-blue.svg)\n[![Downloads](https://pepy.tech/badge/glide)](https://pepy.tech/project/glide)\n\nIntroduction\n------------\n\nGlide is an easy-to-use data pipelining tool inspired by [Consecution](https://github.com/robdmc/consecution) and\n[Apache Storm Topologies](http://storm.apache.org/releases/current/Tutorial.html).\n\nLike those libraries, **Glide is:**\n\n- A simple, reusable approach to building robust ETL pipelines\n- A system for wiring together processing nodes to form a directed acyclic graph (DAG)\n\n**Glide also has:**\n\n- An expanding suite of built-in nodes and pipelines that extract, transform, and load data from/to any combination of:\n - SQL databases (SQLite, DBAPI, and SQLAlchemy support)\n - Local or remote files (CSVs, Excel, and raw file support)\n - URLs (JSON endpoints, file downloads, APIs, etc.)\n - HTML Tables\n - Emails\n- Extensions for [Pandas](https://pandas.pydata.org/), [Dask](https://dask.org/), [Celery](http://www.celeryproject.org/), [Redis Queue](http://python-rq.org/) and more\n- A variety of node and DAG parallel/concurrent/distributed processing strategies\n- A simple decorator to generate a command line interface from a pipeline in ~one line of code\n- Flexible pipeline templating\n\n**Glide is not** a task orchestration and/or dependency management tool like\nAirflow. Use Glide to define your easily developed/contained/reusable/testable\ndata processing pipelines and then rely on a tool like Airflow to do what it's\ngood at, namely scheduling and complex task dependency management.\n\nTable of Contents\n-----------------\n\n* [Installation](#installation)\n* [Primer](#primer)\n* [Basic Examples](#basic-examples)\n * [CSV Extract, Transform, and Load](#example-csv-extract-transform-and-load)\n * [SQL Extract and Load](#example-sql-extract-and-load)\n * [SQL Transactions](#example-sql-transactions)\n * [URL Extraction](#example-url-extraction)\n* [Flow Control Examples](#flow-examples)\n * [Filters](#example-filters)\n * [IterPush](#example-iterpush)\n * [SplitPush](#example-splitpush)\n * [SplitByNode](#example-splitbynode)\n * [Reduce](#example-reduce)\n * [Join](#example-join)\n * [Routers](#example-routers)\n * [Window Processing](#example-window-processing)\n * [Date Windows](#example-date-windows)\n * [Return Values](#example-return-values)\n* [Parallelization & Concurrency](#parallel-examples)\n * [Parallel Transformation](#example-parallel-transformation)\n * [Parallel Pipelines via ParaGlider](#example-parallel-pipelines-via-paraglider)\n * [Parallel Branching](#example-parallel-branching)\n * [Thread Reducers](#example-thread-reducers)\n * [Asyncio](#example-asyncio)\n* [Utility Examples](#utility-examples)\n * [Templated Nodes and Pipelines](#example-templated-nodes-and-pipelines)\n * [Data Integrity Checks](#example-data-integrity-checks)\n * [Debugging](#example-debugging)\n * [Profiling Pipelines](#example-profiling-pipelines)\n * [Complex Pipelines](#example-complex-pipelines)\n * [Plotting Pipeline DAGs](#example-plotting-pipeline-dags)\n* [CLI Generation](#cli-generation)\n* [Extensions](#extensions)\n * [Pandas](#pandas)\n * [Dask](#dask-experimental)\n * [Celery](#celery-experimental)\n * [Redis Queue](#redis-queue-experimental)\n * [Swifter](#swifter-experimental)\n* [Docs](#documentation)\n* [How to Contribute](#how-to-contribute)\n\n\nInstallation\n------------\n\n> \u26a0\ufe0f **Warning**: This project is in an alpha state and is maintained on an as-needed basis. Please test carefully for production usage and report any issues.\n\n```shell\n$ pip install glide\n```\n\n\nPrimer\n------\n\nYou are encouraged to take a deeper look at the\n[docs](https://glide-etl.readthedocs.io/en/latest/), but the short of it is\nthe following:\n\n1\\. A `Node` is a part of a pipeline which has a `run` method that typically\naccepts data from upstream nodes, and pushes data to downstream nodes. For example:\n```python\nclass MyNode(Node):\n def run(self, data):\n # Some node-specific code here\n self.push(data)\n```\n2\\. A `Glider` is a pipeline of `Node` objects wired together in a DAG. It\naccepts input data in its `consume` method. For example:\n```python\nglider = Glider(\n MyExtractNode(\"extract\")\n | MyTransformNode(\"transform\")\n | MyLoadNode(\"load\")\n)\nglider.consume(data)\n```\n\nIf a node's `run` method has additional parameters, they are populated from\nthe node's `context`. More info on creating nodes and populating runtime context\ncan be found [here](https://glide-etl.readthedocs.io/en/latest/nodes.html).\n\n\nBasic Examples\n--------------\n\nThe following examples serve to quickly illustrate some core features and\nbuilt-in nodes. There is much more `Glide` can do that is not shown\nhere. Everything below assumes you have used the following shortcut to import\nall necessary node and pipeline classes:\n\n```python\nfrom glide import *\n```\n\n\n### Example: CSV Extract, Transform, and Load\n\nApply a transformation to data from a CSV, use a function to lowercase all\nstrings, and load into an output CSV:\n\n```python\ndef lower_rows(data):\n for row in data:\n for k, v in row.items():\n row[k] = v.lower() if type(v) == str else v\n return data\n\nglider = Glider(\n CSVExtract(\"extract\")\n | Func(\"transform\", func=lower_rows)\n | CSVLoad(\"load\")\n)\nglider.consume(\n [\"/path/to/infile.csv\"],\n extract=dict(chunksize=100),\n load=dict(outfile=\"/path/to/outfile.csv\"),\n)\n```\n\n\n### Example: SQL Extract and Load\n\nRead from one table, write to another:\n\n```python\nconn = get_my_sqlalchemy_conn()\nsql = \"select * from in_table limit 10\"\n\nglider = Glider(\n SQLExtract(\"extract\")\n | SQLLoad(\"load\"),\n global_state=dict(conn=conn) # conn is automagically passed to any nodes that accept a \"conn\" argument\n)\nglider.consume(\n [sql],\n load=dict(table=\"out_table\")\n)\n```\n\n\n### Example: SQL Transactions\n\nStart a transaction before writing to a database, rollback on failure:\n\n```python\nglider = Glider(\n SQLExtract(\"extract\")\n | SQLTransaction(\"tx\")\n | SQLLoad(\"load\", rollback=True),\n global_state=dict(conn=conn)\n)\nglider.consume(...)\n```\n\n\n### Example: URL Extraction\n\nExtract data from each URL in the list of requests and load to a URL endpoint:\n\n```python\nglider = Glider(URLExtract(\"extract\") | URLLoad(\"load\"))\nreqs = [\n \"https://jsonplaceholder.typicode.com/todos/1\",\n \"https://jsonplaceholder.typicode.com/todos/2\",\n]\nglider.consume(\n reqs,\n extract=dict(data_type=\"json\"),\n load=dict(\n url=\"https://jsonplaceholder.typicode.com/todos\",\n data_param=\"json\",\n headers={\"Content-type\": \"application/json; charset=UTF-8\"},\n ),\n)\n```\n\n\nFlow Control Examples\n---------------------\n\n\n### Example: Filters\n\nFilter the propagation of data based on the result of a function:\n\n```python\ndef data_check(node, data):\n # do some check on data, return True/False to control filtering\n return True\n\nglider = Glider(\n MyExtract(\"extract\")\n | Filter(\"filter\", func=data_check)\n | MyLoad(\"load\")\n)\n```\n\n\n### Example: IterPush\n\nPush each row of an input iterable individually:\n\n```python\nglider = Glider(\n CSVExtract(\"extract\", nrows=20)\n | IterPush(\"iter\")\n | Print(\"load\")\n)\n```\n\n\n### Example: SplitPush\n\nSplit an iterable before pushing:\n\n```python\nglider = Glider(SplitPush(\"push\", split_count=2) | Print(\"print\"))\nglider.consume([range(4)])\n```\n\n\n### Example: SplitByNode\n\nSplit an iterable evenly among downstream nodes:\n\n```python\nglider = Glider(SplitByNode(\"push\") | [Print(\"print1\"), Print(\"print2\")])\nglider.consume([range(4)])\n```\n\n\n### Example: Reduce\n\nCollect all upstream node data before pushing:\n\n```python\nglider = Glider(\n CSVExtract(\"extract\")\n | Reduce(\"reduce\")\n | Print(\"load\")\n)\nglider.consume([\"/path/to/infile1.csv\", \"/path/to/infile2.csv\"])\n```\n\nThis will read both input CSVs and push them in a single iterable to the\ndownstream nodes. You can also use the `flatten` option of `Reduce` to\nflatten the depth of the iterable before pushing (effectively a concat\noperation).\n\n\n### Example: Join\n\nJoin data on one or more columns before pushing:\n\n```python\nglider = Glider(\n Reduce(\"reduce\")\n | Join(\"join\")\n | Print(\"load\")\n)\nd1 = \nd2 = \nglider.consume([d1, d2], join=dict(on=\"common_key\", how=\"inner\"))\n```\n\n\n### Example: Routers\n\nRoute data to a particular downstream node using a router function:\n\n```python\ndef parity_router(row):\n if int(row[\"mycolumn\"]) % 2 == 0:\n return \"even\"\n return \"odd\"\n\nglider = Glider(\n CSVExtract(\"extract\", nrows=20)\n | IterPush(\"iter\")\n | [parity_zip_router, Print(\"even\"), Print(\"odd\")]\n)\nglider.consume(...)\n```\n\nThis will push rows with even `mycolumn` values to the \"even\" `Print` node,\nand rows with odd `mycolumn` values to the \"odd\" `Print` node.\n\n\n### Example: Window Processing\n\nPush a sliding window of the data:\n\n```python\nglider = Glider(\n CSVExtract(\"extract\", nrows=5)\n | WindowPush(\"window\", size=3)\n | MyWindowCalcNode(\"calc\")\n)\n```\n\n\n### Example: Date Windows\n\nGenerate a set of datetime windows and push them downstream:\n\n```python\nimport datetime\n\ntoday = datetime.date.today()\nglider = Glider(DateTimeWindowPush(\"windows\") | PrettyPrint(\"print\"))\nglider.consume(\n windows=dict(\n start_date=today - datetime.timedelta(days=3),\n end_date=today,\n num_windows=2\n )\n)\n```\n\nOr use `DateWindowPush` for date objects. Note that the data arg to `consume`\ncan be ignored because the top node (`DateTimeWindowPush`) is a subclass of\n`NoInputNode` which takes no input data and generates data to push\non its own.\n\n\n### Example: Return Values\n\nBy default `consume` does not return any values and assumes you will be\noutputting your results to one or more endpoints in your terminating\nnodes (files, databases, etc.). The `Return` node will collect the data\nfrom its parent node(s) and set it as a return value for `consume`.\n\n```python\nglider = Glider(\n CSVExtract(\"extract\")\n | MyTransformer(\"transform\")\n | Return(\"return\")\n)\ndata = glider.consume(...)\n```\n\n\nParallelization & Concurrency\n-----------------------------\n\n\n### Example: Parallel Transformation\n\nCall a function in parallel processes on equal splits of data from a CSV:\n\n```python\nglider = Glider(\n CSVExtract(\"extract\")\n | ProcessPoolSubmit(\"transform\", push_type=PushTypes.Result)\n | CSVLoad(\"load\")\n)\nglider.consume(\n [\"infile.csv\"],\n transform=dict(func=lower_rows),\n load=dict(outfile=\"outfile.csv\"),\n)\n```\n\nWe passed `push_type=PushTypes.Result` to force `ProcessPoolSubmit` to fetch\nand combine the asynchronous results before pushing to the downstream\nnode. The default is to just pass the asynchronous task/futures objects\nforward, so the following would be equivalent:\n\n```python\nglider = Glider(\n CSVExtract(\"extract\")\n | ProcessPoolSubmit(\"transform\")\n | FuturesReduce(\"reduce\")\n | Flatten(\"flatten\")\n | CSVLoad(\"load\")\n)\n```\n\nThe `FuturesReduce` node waits for the results from each futures object, and\nthen `Flatten` will combine each subresult back together into a single result\nto be loaded in the final `CSVLoad` node.\n\n\n### Example: Parallel Pipelines via ParaGlider\n\nCompletely parallelize a pipeline using a `ParaGlider` (who said ETL isn't\nfun?!?). Split processing of the inputs (two files in this case) over the\npool, with each process running the entire pipeline on part of the consumed\ndata:\n\n```python\nglider = ProcessPoolParaGlider(\n CSVExtract('extract')\n | Print('load')\n)\nglider.consume(\n [\"/path/to/infile1.csv\", \"/path/to/infile2.csv\"],\n extract=dict(nrows=50)\n)\n```\n\n\n### Example: Parallel Branching\n\nBranch into parallel execution in the middle of the DAG utilizing a parallel\npush node:\n\n```python\nglider = Glider(\n CSVExtract(\"extract\", nrows=60)\n | ProcessPoolPush(\"push\", split=True)\n | [Print(\"load1\"), Print(\"load2\"), Print(\"load3\")]\n)\nglider.consume([\"/path/to/infile.csv\"])\n```\n\nThe above example will extract 60 rows from a CSV and then push equal slices\nto the logging nodes in parallel processes. Using `split=False` (default)\nwould have passed the entire 60 rows to each logging node in parallel\nprocesses.\n\nOnce you branch off into processes with a parallel push node there is no way\nto reduce/join the pipeline back into the original process and resume\nsingle-process operation. The entire remainder of the pipeline is executed in\neach subprocess. However, that is possible with threads as shown in the next\nexample.\n\n\n### Example: Thread Reducers\n\n```python\nglider = Glider(\n CSVExtract(\"extract\", nrows=60)\n | ThreadPoolPush(\"push\", split=True)\n | [Print(\"load1\"), Print(\"load2\"), Print(\"load3\")]\n | ThreadReduce(\"reduce\")\n | Print(\"loadall\")\n)\nglider.consume([\"/path/to/infile.csv\"])\n```\n\nThe above code will split the data and push to the first 3 logging nodes in\nmultiple threads. The `ThreadReduce` node won't push until all of the previous\nnodes have finished, and then the final logging node will print all of the\nresults.\n\n\n### Example: Asyncio\n\nLimited, experimental support is also available for concurrency via `asyncio`\nin Python >= 3.7:\n\n```python\nimport asyncio\n\nasync def async_sleep(data):\n # Dummy example. Await some real async work in here.\n await asyncio.sleep(0.5)\n return data\n\nglider = Glider(\n CSVExtract(\"extract\", nrows=5)\n | AsyncIOSubmit(\"transform\", push_type=PushTypes.Result)\n | Print(\"load\")\n)\nglider.consume(\n [\"/path/to/infile.csv\"],\n transform=dict(func=async_sleep)\n)\n```\n\nThe above example will split the input data into items to be processed on an\n`asyncio` event loop and synchronously wait for the results before pushing.\n`AsyncIOSubmit` supports specifying a `split_count` as well as a `timeout`\nwhen waiting for results. Alternatively, one can push `asyncio` futures and\nlater reduce their results as follows:\n\n```python\nglider = Glider(\n CSVExtract(\"extract\", nrows=5)\n | AsyncIOSubmit(\"transform\", push_type=PushTypes.Async)\n | AsyncIOFuturesReduce(\"reduce\", flatten=True)\n | Print(\"load\")\n)\n```\n\nNote that the `asyncio` nodes will create and start an event loop for you if\nnecessary. It's also perfectly fine to manage the event loop on your own, in\nwhich case `glide` will run tasks on the current thread's event loop.\n\n\nUtility Examples\n----------------\n\n\n### Example: Templated Nodes and Pipelines\n\nDrop replacement nodes into an existing pipeline. Any node can be replaced by\nname:\n\n```python\nglider = Glider(\n PlaceholderNode(\"extract\")\n | CSVLoad(\"load\")\n)\nglider[\"extract\"] = CSVExtract(\"extract\")\nglider.consume(...)\n```\n\nOr reuse an existing structure of nodes with a `NodeTemplate`:\n\n```python\nnodes = NodeTemplate(\n CSVExtract(\"extract\")\n | CSVLoad(\"load\")\n)\nglider = Glider(nodes()) # Copy of nodes created with each call\n```\n\nOr reuse an existing pipeline structure with `GliderTemplate`:\n\n```python\ntemplate = GliderTemplate(\n CSVExtract(\"extract\")\n | CSVLoad(\"load\")\n)\nglider = template() # Copy of pipeline created with each call\n```\n\n\n### Example: Data Integrity Checks\n\nYou can use the `AssertFunc` node to assert that some condition of the data is\nmet:\n\n```python\nglider = Glider(\n CSVExtract(\"extract\", chunksize=10, nrows=20)\n | AssertFunc(\"length_check\", func=lambda node, data: len(data) == 10)\n | CSVLoad(\"load\")\n)\n```\n\nThe `func` callable must accept two parameters, a reference to the node object\nand the data passed into that node. Any truthy value returned will pass the\nassertion test.\n\nSimilarly, you can do a sql-based check with `AssertSQL`, in this case simply\nverifying the number of rows inserted:\n\n```python\nglider = Glider(\n SQLExtract(\"extract\")\n | SQLLoad(\"load\")\n | AssertSQL(\"sql_check\")\n)\n\nsql = \"select * from in_table limit 10\"\nassert_sql = \"select (select count(*) as x from out_table) == 10 as assert\"\n\nglider.consume(\n [sql],\n extract=dict(conn=in_conn),\n load=dict(conn=out_conn, table=\"out_table\"),\n sql_check=dict(conn=out_conn, sql=assert_sql)\n)\n```\n\nThis looks for a truthy value in the `assert` column of the result to pass the\nassertion. You can also use the `data_check` option of `AssertSQL` to instead\nhave it do a comparison to the result of some function of the data:\n\n```python\nglider = ...\n\nsql = \"select * from in_table limit 10\"\nassert_sql = \"select count(*) as assert from out_table\"\n\nglider.consume(\n [sql],\n extract=dict(conn=in_conn),\n load=dict(conn=out_conn, table=\"out_table\", push_data=True),\n sql_check=dict(\n conn=out_conn,\n sql=assert_sql,\n data_check=lambda node, data: len(data)\n )\n)\n```\n\nNote that we also added `push_data=True` to the `SQLLoad` node to have it push\nthe data instead of a table name.\n\n\n### Example: Debugging\n\nTo enable debug logging for Glide change the log level of the \"glide\" logger:\n\n```python\nimport logging\nlogging.getLogger(\"glide\").setLevel(logging.DEBUG)\n```\n\nGlide will then print debug information about data passed through your\npipeline.\n\nYou can also pass `_log=True` to the init method of any node to enable logging\nof processed data:\n\n```python\nglider = Glider(\n SQLExtract(\"extract\", _log=True)\n ...\n)\n```\n\nAdditionaly, you can pass `_debug=True` to the init method of any node to\ncause the node to drop into PDB right before calling `run`, assuming you\naren't executing the pipeline in a subprocess:\n\n```python\nglider = Glider(\n SQLExtract(\"extract\", _debug=True)\n ...\n)\n```\n\nFinally, there are a variety of print nodes you can place in your pipeline for\ngeneral logging or debugging, such as `Print`, `PrettyPrint`, `LenPrint`,\n`ReprPrint`, and `FormatPrint`. See the node documentation for more info.\n\n\n### Example: Profiling Pipelines\n\nInsert a `Profile` node somewhere in your pipeline to get profiler information\nfor all downstream nodes:\n\n```python\nglider = Glider(\n Profile(\"profile\")\n ...\n)\n```\n\n\n### Example: Complex Pipelines\n\nIf the hierarchy of nodes you want to form is not achievable with the `|`\noperator, you can use the `add_downstream` `Node` method to form more complex\ngraphs. More info can be found\n[here](https://glide-etl.readthedocs.io/en/latest/pipelines.html#complex-pipelines).\n\n\n### Example: Plotting Pipeline DAGs\n\nIf you have the [Graphviz](http://www.graphviz.org/) package installed, you\ncan generate a plot of your pipelines by simply doing the following:\n\n```python\nglider = Glider(...)\nglider.plot(\"/path/to/filename.png\")\n```\n\n\nCLI Generation\n--------------\n\nWith Glide you can create parameterized command line scripts from any pipeline\nwith a simple decorator:\n\n```python\nglider = Glider(\n SQLLoad(\"extract\")\n | SQLExtract(\"load\")\n)\n\n@glider.cli()\ndef main(glide_data, node_contexts):\n glider.consume(glide_data, **node_contexts)\n\nif __name__ == \"__main__\":\n main()\n```\n\nThe script arguments, their types, and whether they are required or not is all\ninferred by inspecting the `run` arguments on the nodes of the pipeline and\nprefixing the node name. Please see the full documentation\n[here](https://glide-etl.readthedocs.io/en/latest/pipelines.html#cli-generation)\nfor more details.\n\n\nExtensions\n----------\n\nTo install all extensions and dev dependencies:\n\n```shell\n$ pip install glide[complete]\n```\n\nYou can also just install Glide plus a specific extension:\n\n```shell\n$ pip install glide[dask]\n$ pip install glide[celery]\n$ pip install glide[rq]\n$ pip install glide[swifter]\n```\n\nTo access installed extensions import from the `glide.extensions` submodules\nas necessary. Review the documentation and tests for current extensions for\nhelp getting started.\n\n\n### Pandas\n\nThe Pandas extension is actually supported by default with all `glide` installs.\nBelow is a simple example that extracts from a CSV, lowercases all strings,\nand then loads to another CSV using Pandas under the hood:\n\n```python\ndef lower(s):\n return s.lower() if type(s) == str else s\n\nglider = Glider(\n DataFrameCSVExtract(\"extract\")\n | DataFrameApplyMap(\"transform\", func=lower)\n | DataFrameCSVLoad(\"load\", index=False, mode=\"a\")\n)\nglider.consume(...)\n```\n\nThere are a variety of other helpful nodes built in, including `ToDataFrame`,\n`FromDataFrame`, nodes to read/write other datasources, and nodes to deal with\n`rolling` calculations. There is also a generic `DataFrameMethod` node that\npasses through to any DataFrame method.\n\nSee the extension docs\n[here](https://glide-etl.readthedocs.io/en/latest/glide.extensions.pandas.html)\nfor node/pipeline reference information. See the tests\n[here](https://github.com/kmatarese/glide/tree/master/tests/pandas_ext/test_pandas.py)\nfor some additional examples.\n\n\n### Dask - Experimental\n\nSee the extension docs\n[here](https://glide-etl.readthedocs.io/en/latest/glide.extensions.dask.html)\nfor node/pipeline reference information. See the tests\n[here](https://github.com/kmatarese/glide/tree/master/tests/dask_ext/test_dask.py)\nfor some additional examples.\n\n\n### Celery - Experimental\n\nSee the extension docs\n[here](https://glide-etl.readthedocs.io/en/latest/glide.extensions.celery.html)\nfor node/pipeline reference information. See the tests\n[here](https://github.com/kmatarese/glide/tree/master/tests/celery_ext/test_celery.py)\nfor some additional examples.\n\n\n### Redis Queue - Experimental\n\nSee the extension docs\n[here](https://glide-etl.readthedocs.io/en/latest/glide.extensions.rq.html)\nfor node/pipeline reference information. See the tests\n[here](https://github.com/kmatarese/glide/tree/master/tests/rq_ext/test_rq.py)\nfor some additional examples.\n\n\n### Swifter - Experimental\n\nSee the extension docs\n[here](https://glide-etl.readthedocs.io/en/latest/glide.extensions.swifter.html)\nfor node/pipeline reference information. See the tests\n[here](https://github.com/kmatarese/glide/tree/master/tests/swifter_ext/test_swifter.py)\nfor some additional examples.\n\n\nDocumentation\n-------------\n\nMore thorough documentation can be found [here](https://glide-etl.readthedocs.io/en/latest/).\nYou can supplement your knowledge by perusing the [tests](https://github.com/kmatarese/glide/tree/master/tests) directory\nor the [module reference](https://glide-etl.readthedocs.io/en/latest/glide.html).\n\n\nHow to Contribute\n-----------------\n\nSee the [CONTRIBUTING](https://github.com/kmatarese/glide/blob/master/CONTRIBUTING.md) guide.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kmatarese/glide", "keywords": "", "license": "MIT", "maintainer": "Kurt Matarese", "maintainer_email": "", "name": "glide", "package_url": "https://pypi.org/project/glide/", "platform": null, "project_url": "https://pypi.org/project/glide/", "project_urls": { "Homepage": "https://github.com/kmatarese/glide" }, "release_url": "https://pypi.org/project/glide/0.4.0/", "requires_dist": [ "consecution (~=0.2.0)", "html5lib (~=1.0.1)", "imapclient (~=2.1.0)", "importlib-metadata (<2)", "lxml (==4.*,>=4.4.2)", "openpyxl (~=3.0.1)", "pandas (~=1.1)", "pyexcel (~=0.5.15)", "pyexcel-xls (~=0.5.8)", "pyexcel-xlsx (~=0.5.8)", "pymysql (~=0.9.3)", "python-dateutil (~=2.8.1)", "pyyaml (~=5.3)", "requests (~=2.22.0)", "sqlalchemy (~=1.3.12)", "tlbx (~=0.1.14)", "xlrd (~=1.2.0)", "celery[redis] (==4.4.0) ; extra == 'celery'", "kombu (==4.5.0) ; extra == 'celery'", "black ; extra == 'complete'", "celery[redis] (==4.4.0) ; extra == 'complete'", "dask[complete] (~=2020.12.0) ; extra == 'complete'", "distributed (==2020.12.0) ; extra == 'complete'", "fake-useragent (~=0.1.11) ; extra == 'complete'", "kombu (==4.5.0) ; extra == 'complete'", "m2r (~=0.2.1) ; extra == 'complete'", "numpydoc (~=0.9.2) ; extra == 'complete'", "pre-commit ; extra == 'complete'", "pylint ; extra == 'complete'", "pytest-redis (~=2.0.0) ; extra == 'complete'", "pytest-xprocess (~=0.13.1) ; extra == 'complete'", "pytest (~=5.3.2) ; extra == 'complete'", "rq (~=1.5.0) ; extra == 'complete'", "sphinx (~=2.3.1) ; extra == 'complete'", "twine (~=3.1.1) ; extra == 'complete'", "wheel ; extra == 'complete'", "dask[complete] (~=2020.12.0) ; extra == 'dask'", "distributed (==2020.12.0) ; extra == 'dask'", "black ; extra == 'dev'", "fake-useragent (~=0.1.11) ; extra == 'dev'", "m2r (~=0.2.1) ; extra == 'dev'", "numpydoc (~=0.9.2) ; extra == 'dev'", "pre-commit ; extra == 'dev'", "pylint ; extra == 'dev'", "pytest (~=5.3.2) ; extra == 'dev'", "pytest-redis (~=2.0.0) ; extra == 'dev'", "pytest-xprocess (~=0.13.1) ; extra == 'dev'", "sphinx (~=2.3.1) ; extra == 'dev'", "twine (~=3.1.1) ; extra == 'dev'", "wheel ; extra == 'dev'", "rq (~=1.5.0) ; extra == 'rq'" ], "requires_python": ">=3.6", "summary": "Easy ETL", "version": "0.4.0", "yanked": false, "yanked_reason": null }, "last_serial": 13665627, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "a0a712ab62810ca9d67e167d0ff02b46", "sha256": "c11a165a40571b6a6b3db304f2133c635bb10ba7aa0b44fc35e4b5adfa8592ac" }, "downloads": -1, "filename": "glide-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a0a712ab62810ca9d67e167d0ff02b46", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 43027, "upload_time": "2019-09-23T13:32:42", "upload_time_iso_8601": "2019-09-23T13:32:42.931871Z", "url": "https://files.pythonhosted.org/packages/28/a0/a6cee1636cb88c196493384cd0254bc8d4752483f780f7ed077de2ff7882/glide-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c3c3c40e8a900ab16b199956814c2388", "sha256": "01ab6c45b167032f703334009bcc4507609f38da8161be80b9c8d0cb141585b5" }, "downloads": -1, "filename": "glide-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c3c3c40e8a900ab16b199956814c2388", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 42531, "upload_time": "2019-09-23T13:32:46", "upload_time_iso_8601": "2019-09-23T13:32:46.087905Z", "url": "https://files.pythonhosted.org/packages/42/74/f90c18f5570e73607c7a28cfd1241cc67464caab3a440be410a2c5b919b5/glide-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "a8e7c18521492279b1d35bded2563b11", "sha256": "2231920c7029f8bd7b1af58a7437d7211548672a29198bbd5be86a7b963fa30d" }, "downloads": -1, "filename": "glide-0.1.10-py3-none-any.whl", "has_sig": false, "md5_digest": "a8e7c18521492279b1d35bded2563b11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46371, "upload_time": "2019-09-27T17:59:53", "upload_time_iso_8601": "2019-09-27T17:59:53.354783Z", "url": "https://files.pythonhosted.org/packages/fb/27/89f796097c3284d7ec26acbace8c771250fcfa60da31d6e5c42a8e2db9fa/glide-0.1.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3adc8abb9f94e73c2c84b925b96ef3b0", "sha256": "cb73ed1a39980a9706d49347b803c517ed56c8ce6e9d63b0efd104d262013a1c" }, "downloads": -1, "filename": "glide-0.1.10.tar.gz", "has_sig": false, "md5_digest": "3adc8abb9f94e73c2c84b925b96ef3b0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 48135, "upload_time": "2019-09-27T17:59:56", "upload_time_iso_8601": "2019-09-27T17:59:56.031578Z", "url": "https://files.pythonhosted.org/packages/f3/15/03d25bb21420ee537e87d85b05a78d117efda3273bd5396ec24f1738c928/glide-0.1.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "7895151f746faa40675ecf8a54a8701e", "sha256": "077636204916842c9c13fd9344e0ae2bc8268b6136572ae19d6c76c7723fc38c" }, "downloads": -1, "filename": "glide-0.1.11-py3-none-any.whl", "has_sig": false, "md5_digest": "7895151f746faa40675ecf8a54a8701e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46513, "upload_time": "2019-09-27T20:08:22", "upload_time_iso_8601": "2019-09-27T20:08:22.890969Z", "url": "https://files.pythonhosted.org/packages/4d/94/9f38404f22408deb34444a3f7a9b96f87a06f566849fe9478dcec0628000/glide-0.1.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7df9ac3db6dbc3513e5c152ac68227ed", "sha256": "411f0f8e798395763579932fefab8907353811892bd01a865bbaa670fce33b51" }, "downloads": -1, "filename": "glide-0.1.11.tar.gz", "has_sig": false, "md5_digest": "7df9ac3db6dbc3513e5c152ac68227ed", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 48291, "upload_time": "2019-09-27T20:08:25", "upload_time_iso_8601": "2019-09-27T20:08:25.834805Z", "url": "https://files.pythonhosted.org/packages/ae/59/73881549ee1d3300b8ea80616a91f8a00870477c70ec78a64b10eacd64fe/glide-0.1.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "fc80f158097d05a4eda4085a24902f39", "sha256": "8f6200bccd84a23035c5792df0d0b1717fd18aca4bb0f50fac6e212878f54074" }, "downloads": -1, "filename": "glide-0.1.12-py3-none-any.whl", "has_sig": false, "md5_digest": "fc80f158097d05a4eda4085a24902f39", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46856, "upload_time": "2019-09-28T00:33:12", "upload_time_iso_8601": "2019-09-28T00:33:12.866158Z", "url": "https://files.pythonhosted.org/packages/7b/a4/ac4c284bd64d85e1a1178f213c15ee5cfd6a084237c5bd8bbbbe9b2e0c21/glide-0.1.12-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e10387ccd2f2794a3c21e776caa27a14", "sha256": "d15552eefbfbdfd82a0a7dd3f35d53acc12cfac693e99942260e56c1dcf65e67" }, "downloads": -1, "filename": "glide-0.1.12.tar.gz", "has_sig": false, "md5_digest": "e10387ccd2f2794a3c21e776caa27a14", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 48567, "upload_time": "2019-09-28T00:33:14", "upload_time_iso_8601": "2019-09-28T00:33:14.894173Z", "url": "https://files.pythonhosted.org/packages/09/f6/4ff445af52ea973afe9c9fb97101be70b7f267ecacb252e4b54b750e4410/glide-0.1.12.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "e2f0f3f1b5bd00e99e1b775fc3a71d33", "sha256": "eaf3345d7d329e429122e93841ce394d2c5f31c37f1a6bcbb5afc1a09552feb2" }, "downloads": -1, "filename": "glide-0.1.13-py3-none-any.whl", "has_sig": false, "md5_digest": "e2f0f3f1b5bd00e99e1b775fc3a71d33", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 47330, "upload_time": "2019-09-29T18:44:08", "upload_time_iso_8601": "2019-09-29T18:44:08.448932Z", "url": "https://files.pythonhosted.org/packages/9c/29/286033808dc5943d0ee38cf138070f82fd6fbb67f1fd742a2068695c9c14/glide-0.1.13-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e19f301aeaaed7f38ffc35bef4290f51", "sha256": "1d6e9f35dadf4048f81abb794a6ab5d3b2b30d5f645dfac37ea2b17a453e3155" }, "downloads": -1, "filename": "glide-0.1.13.tar.gz", "has_sig": false, "md5_digest": "e19f301aeaaed7f38ffc35bef4290f51", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 49068, "upload_time": "2019-09-29T18:44:10", "upload_time_iso_8601": "2019-09-29T18:44:10.628157Z", "url": "https://files.pythonhosted.org/packages/1c/f8/f8b13211456d389f640c2b7ccfd3c1501b9e2bc19bff4a0a5f7c48048c08/glide-0.1.13.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "6936086d32ec9a82044278ce7d29f869", "sha256": "4a9d540cdca5ee617511a3f66136663e82a51728c5b887ae19ea47fd4599f7a9" }, "downloads": -1, "filename": "glide-0.1.14-py3-none-any.whl", "has_sig": false, "md5_digest": "6936086d32ec9a82044278ce7d29f869", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41303, "upload_time": "2019-10-07T16:40:40", "upload_time_iso_8601": "2019-10-07T16:40:40.243091Z", "url": "https://files.pythonhosted.org/packages/78/d6/1dd4a134a134b1c1b566a98eb999ba126efc34f7bf0a2bdaced8ff10c49f/glide-0.1.14-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a2d4fa716d9d25e35091d7709a833494", "sha256": "b2c8ef6178ceb193c899c862ed15b278772f57d4862ad3fcce3bfed2cd739830" }, "downloads": -1, "filename": "glide-0.1.14.tar.gz", "has_sig": false, "md5_digest": "a2d4fa716d9d25e35091d7709a833494", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 42252, "upload_time": "2019-10-07T16:40:42", "upload_time_iso_8601": "2019-10-07T16:40:42.421083Z", "url": "https://files.pythonhosted.org/packages/2a/7a/c3df3d0214ff4ca0528332c304021266fc09956efcdcc61b102f0efd899c/glide-0.1.14.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "7334d3e7a9c6c50783cb5625a8b60faa", "sha256": "606fe52cd6814c7cde2dfab8928128b98c94b20df68606e039696f73bb3baa19" }, "downloads": -1, "filename": "glide-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7334d3e7a9c6c50783cb5625a8b60faa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 42918, "upload_time": "2019-09-23T13:48:27", "upload_time_iso_8601": "2019-09-23T13:48:27.318220Z", "url": "https://files.pythonhosted.org/packages/eb/15/d933f90052f205f004a8cacef82fb032f895340c0cbe0ac66e1f26fa3101/glide-0.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e79208500e1e6e7838463d51622eb9ec", "sha256": "c5fac8444f6d353c0dacb320374f17ffc44a54c6dcf3ade6378d3699c39c5c87" }, "downloads": -1, "filename": "glide-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e79208500e1e6e7838463d51622eb9ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 42264, "upload_time": "2019-09-23T13:48:29", "upload_time_iso_8601": "2019-09-23T13:48:29.246783Z", "url": "https://files.pythonhosted.org/packages/bb/98/583924687a25af8b3748f9ef68ea38782c80cf6bdab629db052c4613b182/glide-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "952e96be21de15232a129c4d535c75a0", "sha256": "a120b7239c0d2e735da508d5f53647df4b8c656f36f4156cc7939fb3134fd7ff" }, "downloads": -1, "filename": "glide-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "952e96be21de15232a129c4d535c75a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 43268, "upload_time": "2019-09-24T19:42:18", "upload_time_iso_8601": "2019-09-24T19:42:18.874128Z", "url": "https://files.pythonhosted.org/packages/f6/ff/1765c590731cd8781427b80cab1f08d00bb647a6b69ccaa2ab5afcd85ae6/glide-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6f079364999b7f330ee17acea81db221", "sha256": "6ec8d6cea800c68d95b1b1157a55aac77aaa1f3b435b44f7f562a044e5b7c533" }, "downloads": -1, "filename": "glide-0.1.3.tar.gz", "has_sig": false, "md5_digest": "6f079364999b7f330ee17acea81db221", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 42763, "upload_time": "2019-09-24T19:42:21", "upload_time_iso_8601": "2019-09-24T19:42:21.054868Z", "url": "https://files.pythonhosted.org/packages/41/c3/7896d18e302cd1ece60843891ccf823df2268b52904e0cd50bf47da49785/glide-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "d4e5a458c613b755e3d53ac4255785b4", "sha256": "11fb18378ce83c497148ba2c1b0215be957eb87870c0fb2b8c6c4aa0a6c8d85f" }, "downloads": -1, "filename": "glide-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "d4e5a458c613b755e3d53ac4255785b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 43690, "upload_time": "2019-09-25T14:31:02", "upload_time_iso_8601": "2019-09-25T14:31:02.561764Z", "url": "https://files.pythonhosted.org/packages/a1/c1/42222692938afc654990708ddc90afe005824561c86230acbb19de36c6f9/glide-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d954a2f598e46eea10c5554e144d97e0", "sha256": "cb4c26c6f373a4a455359a747e1092da337ce306e51c480cafc947b4d07809dc" }, "downloads": -1, "filename": "glide-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d954a2f598e46eea10c5554e144d97e0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 43300, "upload_time": "2019-09-25T14:31:05", "upload_time_iso_8601": "2019-09-25T14:31:05.822785Z", "url": "https://files.pythonhosted.org/packages/de/54/e5b5fd68db4e7949dc2f4141a7487ceee2754845317e926c813187e08345/glide-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "16949fd292ef1d4b086ce62c9dd86fd6", "sha256": "5f8039457f2cde1a79e25d52f72a6a973b7df97e894d56c4d77a9920833a29d8" }, "downloads": -1, "filename": "glide-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "16949fd292ef1d4b086ce62c9dd86fd6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 43700, "upload_time": "2019-09-25T17:50:25", "upload_time_iso_8601": "2019-09-25T17:50:25.642777Z", "url": "https://files.pythonhosted.org/packages/c9/a4/d32d63a5653e631e230c01a1aad9fa8a36c7645db99b5aeb50e0553fa27e/glide-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "734562f2907d5fdfc0e74c8c4334dbd3", "sha256": "f9c6d0f0f1a361dea5bfdad323fc7a866ca78e7fbf411a59d58eec30f5277c86" }, "downloads": -1, "filename": "glide-0.1.5.tar.gz", "has_sig": false, "md5_digest": "734562f2907d5fdfc0e74c8c4334dbd3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 43316, "upload_time": "2019-09-25T17:50:28", "upload_time_iso_8601": "2019-09-25T17:50:28.329541Z", "url": "https://files.pythonhosted.org/packages/a8/56/5c8460d5273770144420edd018bf0623ebbb4d4c83f8d9076f284038186e/glide-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "1468d206c92c64ddeaa77b87212790ba", "sha256": "f42e5c53bc66563265959e69d11f940c8b7d60f0cff7370e0b56e50002b847a9" }, "downloads": -1, "filename": "glide-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "1468d206c92c64ddeaa77b87212790ba", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 43778, "upload_time": "2019-09-25T18:33:37", "upload_time_iso_8601": "2019-09-25T18:33:37.658780Z", "url": "https://files.pythonhosted.org/packages/8a/34/2c2283fc8de098fabba4fb6494e6d8638285a9363b2df3ea6ca6025cc5c1/glide-0.1.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f42c02f119ff5edab311865a578d0a8b", "sha256": "9d70c00a982e0fd09f5e29e85df8ab9acb8a879e50ed7eb46b8b1e9367c4c0f9" }, "downloads": -1, "filename": "glide-0.1.6.tar.gz", "has_sig": false, "md5_digest": "f42c02f119ff5edab311865a578d0a8b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 43398, "upload_time": "2019-09-25T18:33:40", "upload_time_iso_8601": "2019-09-25T18:33:40.027504Z", "url": "https://files.pythonhosted.org/packages/79/ca/e85c7c53e20b50ec2e528995ea0fea82f3be3173f69b4c133646130354da/glide-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "e759935eaf80e7bf00a7dc69ff5ff315", "sha256": "d3ae9574d8f4b8d9ea6b12b3871451288c873981fb03ec1711f4a8bdf13f6b23" }, "downloads": -1, "filename": "glide-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "e759935eaf80e7bf00a7dc69ff5ff315", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 44038, "upload_time": "2019-09-26T18:25:18", "upload_time_iso_8601": "2019-09-26T18:25:18.876227Z", "url": "https://files.pythonhosted.org/packages/21/cf/fcd0ed1def2813d9c8b2e43351b48f2b97a548f0c02a51c6e1018edc6956/glide-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "02d357ceab4dbfaca997501b384e586b", "sha256": "2efe526e5ce00451a835dea249cfd1fde08e67104ffc866e1a0af8a08f98cdba" }, "downloads": -1, "filename": "glide-0.1.7.tar.gz", "has_sig": false, "md5_digest": "02d357ceab4dbfaca997501b384e586b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 43740, "upload_time": "2019-09-26T18:25:20", "upload_time_iso_8601": "2019-09-26T18:25:20.664142Z", "url": "https://files.pythonhosted.org/packages/00/94/2ab8d41568b46047163ba0a8fedfc6c7286e22271ec9551282f47180e050/glide-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "e8680fa69059131b75bfce99eee737e5", "sha256": "b2246b52f39bdaee09385cc2e38db03113f3f25bcdced6d57095343a588c9924" }, "downloads": -1, "filename": "glide-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "e8680fa69059131b75bfce99eee737e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 44233, "upload_time": "2019-09-26T19:31:07", "upload_time_iso_8601": "2019-09-26T19:31:07.490782Z", "url": "https://files.pythonhosted.org/packages/ef/50/104bb82a52a1693b3faf663c1e9c959af7d1a6a353e858ddc303ad719dc3/glide-0.1.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "31966e3a8704e4a9a8e3369e63edbc54", "sha256": "b3fd027da91d8bcd8d7fe437ce1d21cce70ae65a168fcd572455a71d5cd676bd" }, "downloads": -1, "filename": "glide-0.1.8.tar.gz", "has_sig": false, "md5_digest": "31966e3a8704e4a9a8e3369e63edbc54", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 43899, "upload_time": "2019-09-26T19:31:09", "upload_time_iso_8601": "2019-09-26T19:31:09.591959Z", "url": "https://files.pythonhosted.org/packages/8c/e6/4279d5c01e198f21104a827e4025063f48fe7dc95d6d6841ba310f22afe4/glide-0.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "c24dea1796d95b6f3ce792888274f9b3", "sha256": "b4d81c5959519677f543433b47c1e1d14177ca2f62e3129257d69eb5cc1994fe" }, "downloads": -1, "filename": "glide-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "c24dea1796d95b6f3ce792888274f9b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45121, "upload_time": "2019-09-26T21:24:19", "upload_time_iso_8601": "2019-09-26T21:24:19.819372Z", "url": "https://files.pythonhosted.org/packages/f6/89/703e0008caf2504b856f2afa0bea45b692baaa00f24acaf72d6c45e3e310/glide-0.1.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ae5dd73021510a69a4da8c277a7d0480", "sha256": "187ce6fc752fa18ca34ef2e4e4530d1ac723d3b4cbb968ce0eb83092b813c175" }, "downloads": -1, "filename": "glide-0.1.9.tar.gz", "has_sig": false, "md5_digest": "ae5dd73021510a69a4da8c277a7d0480", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 45122, "upload_time": "2019-09-26T21:24:22", "upload_time_iso_8601": "2019-09-26T21:24:22.007117Z", "url": "https://files.pythonhosted.org/packages/aa/35/968e8350f42526ded15a2261b2d61e5d2f4f8d52aa203dc1ef10f154f2d1/glide-0.1.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "17d40168e01529c758f06579a3b8f7da", "sha256": "51a41b57808b0f4a2b78528de8d46460633d03c41b1e328142ef064359f0834f" }, "downloads": -1, "filename": "glide-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "17d40168e01529c758f06579a3b8f7da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46408, "upload_time": "2019-10-14T21:46:47", "upload_time_iso_8601": "2019-10-14T21:46:47.646784Z", "url": "https://files.pythonhosted.org/packages/45/0b/3be882db93bb2b85efd7cc1a7819f3d6c9244a4809ab6b7dd20c74382910/glide-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1e520899f6ab4ea8fdeacf4d0eade08b", "sha256": "129fded2d90c28da6a40da3cfe0555712cd76d60c2007a8d125864a531004c05" }, "downloads": -1, "filename": "glide-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1e520899f6ab4ea8fdeacf4d0eade08b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 44708, "upload_time": "2019-10-14T21:46:49", "upload_time_iso_8601": "2019-10-14T21:46:49.784845Z", "url": "https://files.pythonhosted.org/packages/14/e3/8c2254cee4bb28887038da1df83d0a11512387e0356c4460c85630b1e0c7/glide-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "efd964bc0c937c944fd8e24b0ebafa01", "sha256": "1ae3144a810ffb17bc5358a597b4c4349cae2ad0bb3a142fde0739af42711faa" }, "downloads": -1, "filename": "glide-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "efd964bc0c937c944fd8e24b0ebafa01", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46878, "upload_time": "2019-10-15T16:36:30", "upload_time_iso_8601": "2019-10-15T16:36:30.050797Z", "url": "https://files.pythonhosted.org/packages/a6/ee/565f6c591b5fb283806f2755cdef64c809aa9e9ff598ec1a68dc30abc3fa/glide-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "70018519d4ab6bb9204d5b9a87e33f24", "sha256": "85c87e17666db0a1c39d30689f888d93575f8b47e49cc6ea7fcaa5b124fa8686" }, "downloads": -1, "filename": "glide-0.2.1.tar.gz", "has_sig": false, "md5_digest": "70018519d4ab6bb9204d5b9a87e33f24", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 46068, "upload_time": "2019-10-15T16:36:31", "upload_time_iso_8601": "2019-10-15T16:36:31.985399Z", "url": "https://files.pythonhosted.org/packages/13/c3/45db10f3d9f21d14c8823322f20b0e841f94e62b458fdfb6331a139d271f/glide-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "d88e81be58dcc95c751e2ceb268da0a5", "sha256": "ee9defe7a1b4c4d1db2220c78d53e6d958883d84507d581ac65d64aa71b34c93" }, "downloads": -1, "filename": "glide-0.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "d88e81be58dcc95c751e2ceb268da0a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 54732, "upload_time": "2019-10-24T19:39:19", "upload_time_iso_8601": "2019-10-24T19:39:19.705095Z", "url": "https://files.pythonhosted.org/packages/3c/57/58fb1ee5e4efa66d7a75ed8fb538d212449fbb97d8d204ee599df8773201/glide-0.2.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2a74384bf6c050c6d07253dbbcf4e402", "sha256": "027bdb461e68b1931664bc56f583ea82406e28162308155a77eb9ac0979284e5" }, "downloads": -1, "filename": "glide-0.2.11.tar.gz", "has_sig": false, "md5_digest": "2a74384bf6c050c6d07253dbbcf4e402", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61623, "upload_time": "2019-10-24T19:39:21", "upload_time_iso_8601": "2019-10-24T19:39:21.769456Z", "url": "https://files.pythonhosted.org/packages/36/1e/82b48e3447a0df982862090ad1f28c4fdeaaef449f6bd12d9032a15db375/glide-0.2.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "e5d6eac3bd8d4bce7a74dd830bfb528e", "sha256": "4dae236912dc5b0bebd5f178cc2ded64cc12b6ccf1147538f6903bc55db28c4d" }, "downloads": -1, "filename": "glide-0.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "e5d6eac3bd8d4bce7a74dd830bfb528e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 56406, "upload_time": "2019-10-25T15:21:15", "upload_time_iso_8601": "2019-10-25T15:21:15.839088Z", "url": "https://files.pythonhosted.org/packages/b4/9c/e082184320412ff509bccc551f081fca25ab8604a555f1fa2be2a236213b/glide-0.2.12-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f700c281c502c10e4aacdbec0ce0ef0b", "sha256": "bfba2dd4f8e0005549f0aebdc7373d5e5fb3328ddcceea53a7fe13f4cbec94a2" }, "downloads": -1, "filename": "glide-0.2.12.tar.gz", "has_sig": false, "md5_digest": "f700c281c502c10e4aacdbec0ce0ef0b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 63267, "upload_time": "2019-10-25T15:21:17", "upload_time_iso_8601": "2019-10-25T15:21:17.638785Z", "url": "https://files.pythonhosted.org/packages/b6/bf/20af0ac680232259484b7385ba5658b8505e7a426bbf2ad572d0d186cd38/glide-0.2.12.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.13": [ { "comment_text": "", "digests": { "md5": "3d7aab3c5cbfb07760367a75af5545df", "sha256": "40be53c0151c2592bd446b513f0fe7c737b5207306464c6550140e6d5d61e3d8" }, "downloads": -1, "filename": "glide-0.2.13-py3-none-any.whl", "has_sig": false, "md5_digest": "3d7aab3c5cbfb07760367a75af5545df", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 60129, "upload_time": "2019-11-03T14:58:51", "upload_time_iso_8601": "2019-11-03T14:58:51.232839Z", "url": "https://files.pythonhosted.org/packages/20/74/b8cf5bbf919fda8e266005acf38364cd96eb42b971ebd82bf1572ec9f94c/glide-0.2.13-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4cc7e2f98f201c0f396070bfe21940d3", "sha256": "227929ea5bc2919e368ecb4d664abd62869c01a0b8171bbfd6d49af2d2ae77b0" }, "downloads": -1, "filename": "glide-0.2.13.tar.gz", "has_sig": false, "md5_digest": "4cc7e2f98f201c0f396070bfe21940d3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 68666, "upload_time": "2019-11-03T14:58:52", "upload_time_iso_8601": "2019-11-03T14:58:52.880805Z", "url": "https://files.pythonhosted.org/packages/7a/35/ca978c246f444831cdc0ba95b7e064cce88be989d53210d90c44eff8410c/glide-0.2.13.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.14": [ { "comment_text": "", "digests": { "md5": "a57e60b7bfaef09a5de2d50e7cd0657a", "sha256": "aeae48a06c0a77f92a500180ff720abfc46380a16492ef586318c80cdf8eaba1" }, "downloads": -1, "filename": "glide-0.2.14-py3-none-any.whl", "has_sig": false, "md5_digest": "a57e60b7bfaef09a5de2d50e7cd0657a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 57386, "upload_time": "2019-11-06T20:00:37", "upload_time_iso_8601": "2019-11-06T20:00:37.237346Z", "url": "https://files.pythonhosted.org/packages/8a/3e/ca4e8e316de79074f850efa1bc7923ae01ed3f04044b4499a7d67d43ff67/glide-0.2.14-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "55e5b4f51a283c60ea02376ef68d5d01", "sha256": "fdd05f2928686f6b14b0b4686b116aa7931ac2beb84030d014f8c2f931696d0a" }, "downloads": -1, "filename": "glide-0.2.14.tar.gz", "has_sig": false, "md5_digest": "55e5b4f51a283c60ea02376ef68d5d01", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 53420, "upload_time": "2019-11-06T20:00:39", "upload_time_iso_8601": "2019-11-06T20:00:39.518122Z", "url": "https://files.pythonhosted.org/packages/34/30/e1bd7e0abdcf93f4e58cc2fbe7990f681ac811da92768cbf7adb36178743/glide-0.2.14.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.16": [ { "comment_text": "", "digests": { "md5": "1c0398abfad3fe4e77d851f656a8586b", "sha256": "208d80a93fad697727efa3b34e7d0f26186bd6313a4d59bd58b017f55191d4aa" }, "downloads": -1, "filename": "glide-0.2.16-py3-none-any.whl", "has_sig": false, "md5_digest": "1c0398abfad3fe4e77d851f656a8586b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 57410, "upload_time": "2019-11-06T20:17:46", "upload_time_iso_8601": "2019-11-06T20:17:46.219034Z", "url": "https://files.pythonhosted.org/packages/e4/8e/b2bf7805a441208bfda127a29b74357c4d32c31993a33e33ea2f63d9b43c/glide-0.2.16-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c9f5db4fb3c35d69402db507134b731f", "sha256": "41a991f38a29a1752df1e614e3de4528b684ef4a7b186b56cd0780f637b67b67" }, "downloads": -1, "filename": "glide-0.2.16.tar.gz", "has_sig": false, "md5_digest": "c9f5db4fb3c35d69402db507134b731f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 53763, "upload_time": "2019-11-06T20:17:48", "upload_time_iso_8601": "2019-11-06T20:17:48.179826Z", "url": "https://files.pythonhosted.org/packages/fc/a2/0d0460ac8f2eef6817d6a00bcc05862d0abf106d4756a33955a6e571e14f/glide-0.2.16.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.17": [ { "comment_text": "", "digests": { "md5": "80fb70885ec48df41b7f333d7ed57554", "sha256": "4d598d272e6195d338b0099f62398c0c72fc2dd54b231ce45ddea9f9ee4b4714" }, "downloads": -1, "filename": "glide-0.2.17-py3-none-any.whl", "has_sig": false, "md5_digest": "80fb70885ec48df41b7f333d7ed57554", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 57050, "upload_time": "2020-01-07T21:29:32", "upload_time_iso_8601": "2020-01-07T21:29:32.847436Z", "url": "https://files.pythonhosted.org/packages/29/80/019d90f3781a6b53bf600b8d2a78e7639bcaa218e457043bb5c67eb97d7a/glide-0.2.17-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "95f1994459a1daaf077e024cdb807d50", "sha256": "3dd6247af3d462d93f0497ad4cde9b7dabb983858c982665d89dc528180f462c" }, "downloads": -1, "filename": "glide-0.2.17.tar.gz", "has_sig": false, "md5_digest": "95f1994459a1daaf077e024cdb807d50", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 50897, "upload_time": "2020-01-07T21:29:34", "upload_time_iso_8601": "2020-01-07T21:29:34.695492Z", "url": "https://files.pythonhosted.org/packages/6c/f7/1133adc296e60d6f46269545a3ab2fc65a18c542a6c3b2e924847900708c/glide-0.2.17.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.18": [ { "comment_text": "", "digests": { "md5": "379cb1ca40d18c634edffec9fd0a5feb", "sha256": "1f3e5b05037284b3802fc2709f21af61d89395d12ab3433a74348e4f4e604d55" }, "downloads": -1, "filename": "glide-0.2.18-py3-none-any.whl", "has_sig": false, "md5_digest": "379cb1ca40d18c634edffec9fd0a5feb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 58042, "upload_time": "2020-01-24T22:26:26", "upload_time_iso_8601": "2020-01-24T22:26:26.155037Z", "url": "https://files.pythonhosted.org/packages/a8/27/0bb5df593b3009abce6567a91b703591e37b8c6bdce9ad7e35a2cd32c1ff/glide-0.2.18-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "89983e5f3af5cb80c03674481773e608", "sha256": "b4ef7ea1a65c1605f25804dacc25719417ba5fd1f539f3b38fc26eadab6aa0c3" }, "downloads": -1, "filename": "glide-0.2.18.tar.gz", "has_sig": false, "md5_digest": "89983e5f3af5cb80c03674481773e608", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 51990, "upload_time": "2020-01-24T22:26:28", "upload_time_iso_8601": "2020-01-24T22:26:28.429700Z", "url": "https://files.pythonhosted.org/packages/5f/b3/d299bbb6930a734b3d97242b9ce372b0f05c96c54197451a521c7fb9187f/glide-0.2.18.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.19": [ { "comment_text": "", "digests": { "md5": "f19fd534b4d02503eb278c583c5d065c", "sha256": "fb26247099c74c983647b88b9ceb13fde27f20877fa7c87f4c39d7d035170314" }, "downloads": -1, "filename": "glide-0.2.19-py3-none-any.whl", "has_sig": false, "md5_digest": "f19fd534b4d02503eb278c583c5d065c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 58036, "upload_time": "2020-03-10T01:44:28", "upload_time_iso_8601": "2020-03-10T01:44:28.938609Z", "url": "https://files.pythonhosted.org/packages/f4/de/05ed229f63b5b51ae99cd3fec66affcc9d9e7089b58ade91938468bcf210/glide-0.2.19-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6115265b865d87174de0ac2f8d540fa7", "sha256": "26421b9a2090c842af4d608332a14427eaaa4d3a21758a0a6489361127a80596" }, "downloads": -1, "filename": "glide-0.2.19.tar.gz", "has_sig": false, "md5_digest": "6115265b865d87174de0ac2f8d540fa7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 52001, "upload_time": "2020-03-10T01:44:30", "upload_time_iso_8601": "2020-03-10T01:44:30.939082Z", "url": "https://files.pythonhosted.org/packages/b2/eb/d0c0f505dc2024e5a27a39b0d585b15631daa51a634aa2aac5780d5771eb/glide-0.2.19.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "d593b683a9adf4a0c1ba278b863f0f5b", "sha256": "e3c6383c1f68decfa35216e948cb9d5379281e56014df9defc87a2e15203d245" }, "downloads": -1, "filename": "glide-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d593b683a9adf4a0c1ba278b863f0f5b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 48151, "upload_time": "2019-10-16T16:43:34", "upload_time_iso_8601": "2019-10-16T16:43:34.402779Z", "url": "https://files.pythonhosted.org/packages/0c/cf/d7b8f291570097f58aa1975928d7c4a1e24fb577e7083e11c02461dcde09/glide-0.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2ce2b9e4872b01e694a9b7b22b4c18aa", "sha256": "75d84a313a7e39a85fc366e5c91a4b479252d28220626680161442cabb9d777c" }, "downloads": -1, "filename": "glide-0.2.2.tar.gz", "has_sig": false, "md5_digest": "2ce2b9e4872b01e694a9b7b22b4c18aa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 52367, "upload_time": "2019-10-16T16:43:36", "upload_time_iso_8601": "2019-10-16T16:43:36.830780Z", "url": "https://files.pythonhosted.org/packages/c5/b1/75526a2829f5092d5744f76087ab4f7cb788f95173465836ef73119005e6/glide-0.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.20": [ { "comment_text": "", "digests": { "md5": "5da97873ccad28e2af8595735b51686c", "sha256": "f7a7d81d22bc8d27531968e5da9da10666d0e0a5d27431e75b71852f4f20617c" }, "downloads": -1, "filename": "glide-0.2.20-py3-none-any.whl", "has_sig": false, "md5_digest": "5da97873ccad28e2af8595735b51686c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 59627, "upload_time": "2020-03-14T14:58:06", "upload_time_iso_8601": "2020-03-14T14:58:06.097696Z", "url": "https://files.pythonhosted.org/packages/81/e2/3da9f30ad00a14eb3cad9e9a4dc464770cc8d6033135b25de69fc3a4110d/glide-0.2.20-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1556703849d9facd042870da93981a08", "sha256": "212f8592bc3c15a3071745377c5fd92675bcd7b657ae94a456accfe64ccc609e" }, "downloads": -1, "filename": "glide-0.2.20.tar.gz", "has_sig": false, "md5_digest": "1556703849d9facd042870da93981a08", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 57920, "upload_time": "2020-03-14T14:58:09", "upload_time_iso_8601": "2020-03-14T14:58:09.595048Z", "url": "https://files.pythonhosted.org/packages/c5/d9/c2507efe05446ee436abffb47fb820e6cfb658b850d040c86ab1d9be99b5/glide-0.2.20.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.22": [ { "comment_text": "", "digests": { "md5": "18f7a72419a5fdce73ebfbbd9e88ff55", "sha256": "dcc7bf5bce77dadece4b6b7ca157dce63ae017222cca88e7d97db7e07733bc84" }, "downloads": -1, "filename": "glide-0.2.22-py3-none-any.whl", "has_sig": false, "md5_digest": "18f7a72419a5fdce73ebfbbd9e88ff55", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 61903, "upload_time": "2020-03-23T18:26:06", "upload_time_iso_8601": "2020-03-23T18:26:06.196733Z", "url": "https://files.pythonhosted.org/packages/ad/d4/b7897af94a3eece62bc626a46a1866debf08cad94af51d5b1ab98291b1fe/glide-0.2.22-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f8653137fdea030e7227ab207fabc855", "sha256": "8ab995997710ea04461f8688d5fb379c5c90dfe6b10a7c45674464b9d24cea70" }, "downloads": -1, "filename": "glide-0.2.22.tar.gz", "has_sig": false, "md5_digest": "f8653137fdea030e7227ab207fabc855", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 60652, "upload_time": "2020-03-23T18:26:08", "upload_time_iso_8601": "2020-03-23T18:26:08.287348Z", "url": "https://files.pythonhosted.org/packages/45/c3/5065a7992fe4376d1bfd3b39c35d45f064184559e65655e35070a8cded89/glide-0.2.22.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.23": [ { "comment_text": "", "digests": { "md5": "0dd088c989f0d639d76d1b2294652007", "sha256": "977844dca04e2e4f4a54aec213b77bb3ecc28e3ca23062c9b43cf903de12445c" }, "downloads": -1, "filename": "glide-0.2.23-py3-none-any.whl", "has_sig": false, "md5_digest": "0dd088c989f0d639d76d1b2294652007", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 62004, "upload_time": "2020-03-23T20:08:00", "upload_time_iso_8601": "2020-03-23T20:08:00.744767Z", "url": "https://files.pythonhosted.org/packages/01/2d/d4c2d525d7ddfc1eaaef48ed8dc38167b9d1f0bc238fee4cb8773fd87cbe/glide-0.2.23-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cd646c45b9c68314c20b508af31fb0ec", "sha256": "d7690428c18a3166698958d8d657d169005de4cc0463b2e362b37a424fd3a9b7" }, "downloads": -1, "filename": "glide-0.2.23.tar.gz", "has_sig": false, "md5_digest": "cd646c45b9c68314c20b508af31fb0ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 60690, "upload_time": "2020-03-23T20:08:02", "upload_time_iso_8601": "2020-03-23T20:08:02.258787Z", "url": "https://files.pythonhosted.org/packages/7f/7a/65aaa43262ac12077e243adf84a735dcef90c791676b049fbf45a7046b50/glide-0.2.23.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.24": [ { "comment_text": "", "digests": { "md5": "0e9a7a437fe766d286d25b56bbb9c490", "sha256": "370efb29953a68f7e7cc1e978828b36926a53505861cf160c178f13e6369f5d7" }, "downloads": -1, "filename": "glide-0.2.24-py3-none-any.whl", "has_sig": false, "md5_digest": "0e9a7a437fe766d286d25b56bbb9c490", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 62005, "upload_time": "2020-03-24T14:20:00", "upload_time_iso_8601": "2020-03-24T14:20:00.105209Z", "url": "https://files.pythonhosted.org/packages/ee/60/72b64de3ddeec8fc356ce5da306d0a6c80cb75804b559f34eb1e6a046113/glide-0.2.24-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "93e76a9115fa0466c1c96be50d5fac1e", "sha256": "25bcd4805d5501370b863c1bf21dd3ce7d878f177676bde3e7f0d82b2bee0b17" }, "downloads": -1, "filename": "glide-0.2.24.tar.gz", "has_sig": false, "md5_digest": "93e76a9115fa0466c1c96be50d5fac1e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 59875, "upload_time": "2020-03-24T14:20:01", "upload_time_iso_8601": "2020-03-24T14:20:01.863585Z", "url": "https://files.pythonhosted.org/packages/02/29/713d620311906a11e0bf164504dff0605308c21689042ae2e44377db6c69/glide-0.2.24.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.25": [ { "comment_text": "", "digests": { "md5": "9476a07dac1c416bde7321e9727ef87a", "sha256": "dd83fd2dd274809ce1c1602b6f466d4ac7720afeeb3859c9478643a49246f847" }, "downloads": -1, "filename": "glide-0.2.25-py3-none-any.whl", "has_sig": false, "md5_digest": "9476a07dac1c416bde7321e9727ef87a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 61675, "upload_time": "2020-03-25T20:33:36", "upload_time_iso_8601": "2020-03-25T20:33:36.296466Z", "url": "https://files.pythonhosted.org/packages/45/6f/5e014e010d82c9006dcd85667651411bd3f4986df61a05f2bccc81484124/glide-0.2.25-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8a2e527e6b00b66b4bff5b7edeaea7d3", "sha256": "75863236a681a3175b9cfeb4a22156eeaff0f14cfecbc23c7e4ef6074e1e1498" }, "downloads": -1, "filename": "glide-0.2.25.tar.gz", "has_sig": false, "md5_digest": "8a2e527e6b00b66b4bff5b7edeaea7d3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 59478, "upload_time": "2020-03-25T20:33:38", "upload_time_iso_8601": "2020-03-25T20:33:38.629788Z", "url": "https://files.pythonhosted.org/packages/45/0c/9bb3eba6ea364201f612632c86f1fed653065616b54993ec89bae0284ea1/glide-0.2.25.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.26": [ { "comment_text": "", "digests": { "md5": "571039893eec1859da623fd40daf37a2", "sha256": "d25b1f10a7ab65b861b665551f73b3379b7a04470e2968275caa858275c5b415" }, "downloads": -1, "filename": "glide-0.2.26-py3-none-any.whl", "has_sig": false, "md5_digest": "571039893eec1859da623fd40daf37a2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 62305, "upload_time": "2020-03-26T01:05:00", "upload_time_iso_8601": "2020-03-26T01:05:00.918867Z", "url": "https://files.pythonhosted.org/packages/3d/75/e920e98a0677161bdf6ea043aacc628e374aa7aac59f448d8b4d1792a132/glide-0.2.26-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0fc0f28e4ce232cb0f63603c1b9be107", "sha256": "bbc59f11cf491295ab25c2db4619f8012f98903de4b4e1df52bf9059e0abead1" }, "downloads": -1, "filename": "glide-0.2.26.tar.gz", "has_sig": false, "md5_digest": "0fc0f28e4ce232cb0f63603c1b9be107", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61167, "upload_time": "2020-03-26T01:05:02", "upload_time_iso_8601": "2020-03-26T01:05:02.483955Z", "url": "https://files.pythonhosted.org/packages/b4/f5/6c976f8103c8ee582d3e7ba90d6a56dc44b2f0ed3ec58ae783ac1e86a9fc/glide-0.2.26.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.27": [ { "comment_text": "", "digests": { "md5": "454d9eab162e0f0d70c6907264f0612e", "sha256": "ab679cb625d331f84f4de5a0cd3672708fb9b9ea2ce1d9d4c6bf017852b23767" }, "downloads": -1, "filename": "glide-0.2.27-py3-none-any.whl", "has_sig": false, "md5_digest": "454d9eab162e0f0d70c6907264f0612e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 62415, "upload_time": "2020-06-03T16:58:58", "upload_time_iso_8601": "2020-06-03T16:58:58.079716Z", "url": "https://files.pythonhosted.org/packages/eb/9f/7d5948418593727c24297520431df774ce02b7dc0d6f3b27333554d591fd/glide-0.2.27-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "84988b0ab0c4fcb7d3bbc9a5c94c044e", "sha256": "abb26dc37c89800b2d6dce335b8bb0d7cd76ec306048bc039ff68af3ba58ea7e" }, "downloads": -1, "filename": "glide-0.2.27.tar.gz", "has_sig": false, "md5_digest": "84988b0ab0c4fcb7d3bbc9a5c94c044e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61315, "upload_time": "2020-06-03T16:58:59", "upload_time_iso_8601": "2020-06-03T16:58:59.883658Z", "url": "https://files.pythonhosted.org/packages/13/99/a1bfd02ec03a4c57d02dfe30336a01705e8c9fc291f93923a7aaac383708/glide-0.2.27.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.28": [ { "comment_text": "", "digests": { "md5": "b9523afd6ee4ad3c125de1585aa46211", "sha256": "309ffdedfc5c9186ad41bf3c49f1c82e09056b2ebffa5713d837b725834ed7ff" }, "downloads": -1, "filename": "glide-0.2.28-py3-none-any.whl", "has_sig": false, "md5_digest": "b9523afd6ee4ad3c125de1585aa46211", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 62418, "upload_time": "2020-08-14T17:13:51", "upload_time_iso_8601": "2020-08-14T17:13:51.595392Z", "url": "https://files.pythonhosted.org/packages/e8/44/359f0ceaa308c6b1f80a9746b627f02bf1c429fa5d636539dff1c36b54b8/glide-0.2.28-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "10a0a0cc3abc9151bc9ae4d6c4896573", "sha256": "0723c9af3a228a9ac5add8d005176eccc4e2831d809422e390ab49ea88bc8185" }, "downloads": -1, "filename": "glide-0.2.28.tar.gz", "has_sig": false, "md5_digest": "10a0a0cc3abc9151bc9ae4d6c4896573", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61331, "upload_time": "2020-08-14T17:13:53", "upload_time_iso_8601": "2020-08-14T17:13:53.573697Z", "url": "https://files.pythonhosted.org/packages/c2/1b/9a286166437b8f98a10e719720477813a234ac82924a2c89aa39cf121fa2/glide-0.2.28.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.29": [ { "comment_text": "", "digests": { "md5": "ce09ad0d38028eb656710c2e63a7c362", "sha256": "24695d5e74449bc82b0e61076d159826063e63ba464a5c7f9b88c6d446ee4f08" }, "downloads": -1, "filename": "glide-0.2.29-py3-none-any.whl", "has_sig": false, "md5_digest": "ce09ad0d38028eb656710c2e63a7c362", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 62445, "upload_time": "2020-09-23T16:09:16", "upload_time_iso_8601": "2020-09-23T16:09:16.526143Z", "url": "https://files.pythonhosted.org/packages/07/60/e6e984c1639cb333642b0d48e00868dc3998d4814fad5bb619ff450586f1/glide-0.2.29-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e74cacec480ee0f5fd3bd19548c7a33d", "sha256": "4ae5071516f66bab34c1cae56a399416ba07516827696c88e7282977a629335b" }, "downloads": -1, "filename": "glide-0.2.29.tar.gz", "has_sig": false, "md5_digest": "e74cacec480ee0f5fd3bd19548c7a33d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61386, "upload_time": "2020-09-23T16:09:18", "upload_time_iso_8601": "2020-09-23T16:09:18.491438Z", "url": "https://files.pythonhosted.org/packages/ea/89/e79802f8ff1752b86c0406e540acaa8aeaa79d51ff6a664f556f8c82595a/glide-0.2.29.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "3162757fc7bcd6277893244332f21c9f", "sha256": "29d0b007fbd97d652ad260281ca5cdac07f261fb322c0825c26d306c53a65363" }, "downloads": -1, "filename": "glide-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3162757fc7bcd6277893244332f21c9f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 48971, "upload_time": "2019-10-17T14:58:35", "upload_time_iso_8601": "2019-10-17T14:58:35.478667Z", "url": "https://files.pythonhosted.org/packages/77/00/b6b6090c17342b7d9a8d57ad73937db6861bcb1334f287447be26c12d26a/glide-0.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ed4d366004668c34614da113c3110a1d", "sha256": "eb542e03a5c867335912779bccef31d5ef2bc95b4a841b862498f2927a8a7139" }, "downloads": -1, "filename": "glide-0.2.3.tar.gz", "has_sig": false, "md5_digest": "ed4d366004668c34614da113c3110a1d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 53185, "upload_time": "2019-10-17T14:58:39", "upload_time_iso_8601": "2019-10-17T14:58:39.998782Z", "url": "https://files.pythonhosted.org/packages/0d/e8/84b8a4e1677d6287472558f34daf8a06106bed4c8fae08c5bd27c9e8962b/glide-0.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "672f853d2fb3da3b47467897adc77bed", "sha256": "d481211ff493baaca046247a4b28b405eadf3ece019514ce46fd0a4199b070d9" }, "downloads": -1, "filename": "glide-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "672f853d2fb3da3b47467897adc77bed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 50013, "upload_time": "2019-10-17T23:23:31", "upload_time_iso_8601": "2019-10-17T23:23:31.233800Z", "url": "https://files.pythonhosted.org/packages/6d/98/418aae4cafbf1f9d7d4b0d431ac3263d639b08dac7676a988e5e9f293656/glide-0.2.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "71f9f56fd4efc9d1171318b7c388756a", "sha256": "79716e60e5ea6c08879760f660168f0b9d7aadcb5aa77fc119c66630bcd4901a" }, "downloads": -1, "filename": "glide-0.2.4.tar.gz", "has_sig": false, "md5_digest": "71f9f56fd4efc9d1171318b7c388756a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 56746, "upload_time": "2019-10-17T23:23:33", "upload_time_iso_8601": "2019-10-17T23:23:33.338857Z", "url": "https://files.pythonhosted.org/packages/2a/37/99485b281e05e048b138cbd02528f855033849804accc9186d7f873ade03/glide-0.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "94c2a6333ea14c599c1421cde865979f", "sha256": "0948413da6de57035e4c6230ccd47dc8eea14096e4e27240f3910894b9eef42f" }, "downloads": -1, "filename": "glide-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "94c2a6333ea14c599c1421cde865979f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 51243, "upload_time": "2019-10-18T20:48:36", "upload_time_iso_8601": "2019-10-18T20:48:36.957463Z", "url": "https://files.pythonhosted.org/packages/16/86/88562c45b58a91aeed0bdfbf8f59a2560fe981e162556e2562b04584ab09/glide-0.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "575be67afad6ebe217d5e2f83e9d4e35", "sha256": "2d16f7f1e1c5477e9ac13a1020035bc161a66d24f6ecb83898a1b2809301276e" }, "downloads": -1, "filename": "glide-0.2.5.tar.gz", "has_sig": false, "md5_digest": "575be67afad6ebe217d5e2f83e9d4e35", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 57907, "upload_time": "2019-10-18T20:48:39", "upload_time_iso_8601": "2019-10-18T20:48:39.256791Z", "url": "https://files.pythonhosted.org/packages/b4/d7/614fc3be34c5e9690d7903e8ad9bb0d09da83ec0e4f8d47af7819039360f/glide-0.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "317c915b2787eee849ebb2eaa004d0f3", "sha256": "ea1d381310de68c86e01d3e20e9ab842e630031c456cdeed0b49560fb757a55b" }, "downloads": -1, "filename": "glide-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "317c915b2787eee849ebb2eaa004d0f3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 52762, "upload_time": "2019-10-19T23:31:27", "upload_time_iso_8601": "2019-10-19T23:31:27.716686Z", "url": "https://files.pythonhosted.org/packages/00/95/298fb221b02426257470fd48d6415c93a567af6746f205247b317f5b6d07/glide-0.2.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9f500808c205ac0196aa669386e07f79", "sha256": "a8d259b0cbb24ef7b4e319bfd2ac12e4bc66294acd806a5c07be03174276dd6e" }, "downloads": -1, "filename": "glide-0.2.6.tar.gz", "has_sig": false, "md5_digest": "9f500808c205ac0196aa669386e07f79", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 58941, "upload_time": "2019-10-19T23:31:30", "upload_time_iso_8601": "2019-10-19T23:31:30.083008Z", "url": "https://files.pythonhosted.org/packages/63/79/9bd617df036e4fbfc7b96ff11ae4edf49f60f59bf84584697a73fec1490f/glide-0.2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "9a718c0cb4906587d7381418b7f292a2", "sha256": "1ac46272dc1fe88a2457835f85c1830c57f99578a69c9582cd760b97739c58e9" }, "downloads": -1, "filename": "glide-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "9a718c0cb4906587d7381418b7f292a2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 53607, "upload_time": "2019-10-23T01:17:19", "upload_time_iso_8601": "2019-10-23T01:17:19.548111Z", "url": "https://files.pythonhosted.org/packages/9b/e3/2cebcecbcd32e33322ead04083941bf5def74834d6d45e9b02642debf295/glide-0.2.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9f470fc4a1e56ad493ce896c045884a6", "sha256": "234e162d116e17f0ae9da62da976463c3bfb50271f01a0fea8d03b8cedfa325a" }, "downloads": -1, "filename": "glide-0.2.7.tar.gz", "has_sig": false, "md5_digest": "9f470fc4a1e56ad493ce896c045884a6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 59766, "upload_time": "2019-10-23T01:17:21", "upload_time_iso_8601": "2019-10-23T01:17:21.786864Z", "url": "https://files.pythonhosted.org/packages/ba/cc/d1986af1e9bd7ebd0c6d3539fd00cbe3638452dec02939476837eb96199c/glide-0.2.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "682de8e1428b6cb86285ca0f38dffe16", "sha256": "55e0981ee9cc0a89a6de06c7ab377aec5ffb15f7a3023f2b928aced2b3a4c3d4" }, "downloads": -1, "filename": "glide-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "682de8e1428b6cb86285ca0f38dffe16", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 53694, "upload_time": "2019-10-23T01:56:36", "upload_time_iso_8601": "2019-10-23T01:56:36.976683Z", "url": "https://files.pythonhosted.org/packages/f9/f9/3c279c6219564a384e1b2ce666c98790e6c5f6b0ef2d2c35c374c14c5c97/glide-0.2.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d39a59d9cb7dbdb139482b15971b6eff", "sha256": "8eb26ca37a3b1e42fd934a710f9167ea6070cd1929e04eaf6a0e2c05572e8223" }, "downloads": -1, "filename": "glide-0.2.8.tar.gz", "has_sig": false, "md5_digest": "d39a59d9cb7dbdb139482b15971b6eff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 59891, "upload_time": "2019-10-23T01:56:39", "upload_time_iso_8601": "2019-10-23T01:56:39.019999Z", "url": "https://files.pythonhosted.org/packages/58/6c/1ec89be2ca5e07647c4a2b9e0a30d7ebec062996a5d95112450a29013455/glide-0.2.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "a4030e0d2458a3470b83ae426cceb54c", "sha256": "46ab6d68d5c8963e7099352767f30cfcfabc9e0ffaa853f952347792a9ff8527" }, "downloads": -1, "filename": "glide-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "a4030e0d2458a3470b83ae426cceb54c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 54188, "upload_time": "2019-10-23T16:50:41", "upload_time_iso_8601": "2019-10-23T16:50:41.418034Z", "url": "https://files.pythonhosted.org/packages/57/07/9d38b085ada1c05a0d8a95831b654a61424c9f6bf37290252378f63ed332/glide-0.2.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "def353ce687154ac9938685f4bcc5767", "sha256": "90358312531effbc8b08dd7c4cda700e418e8b0df4efdb5cb89f31bad82e4282" }, "downloads": -1, "filename": "glide-0.2.9.tar.gz", "has_sig": false, "md5_digest": "def353ce687154ac9938685f4bcc5767", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 60848, "upload_time": "2019-10-23T16:50:43", "upload_time_iso_8601": "2019-10-23T16:50:43.122977Z", "url": "https://files.pythonhosted.org/packages/f4/f6/4695f450972dcac8db2503c344c8cb3c155b97ec90dfe4eea12afd36db59/glide-0.2.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3dbf8d26da5ac4c102a43e0457971158", "sha256": "37633d763a3dc9178abb46be6a6146b1ca04747c12cd904267aa3dc9c51c38a7" }, "downloads": -1, "filename": "glide-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3dbf8d26da5ac4c102a43e0457971158", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 62499, "upload_time": "2021-01-13T04:03:29", "upload_time_iso_8601": "2021-01-13T04:03:29.402197Z", "url": "https://files.pythonhosted.org/packages/a1/21/09b0b23a4dfb930e8340c32946d6c74c86a8f8524a44a7e56be62a62dc5b/glide-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "565e50e31f72c79d14480926fd8e387c", "sha256": "4be3e017e75e8436c8c0d620b3c98828be0ea3e34dbb43c2899b3f27343ef51c" }, "downloads": -1, "filename": "glide-0.3.0.tar.gz", "has_sig": false, "md5_digest": "565e50e31f72c79d14480926fd8e387c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61454, "upload_time": "2021-01-13T04:03:31", "upload_time_iso_8601": "2021-01-13T04:03:31.441021Z", "url": "https://files.pythonhosted.org/packages/d5/a2/53cbec3339db02cd4c0e8caa2ad7cae4eb8f842d3c8bf2d71ef100130cec/glide-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "beeac155f2f522129c6cadcf14798a74", "sha256": "c91da12f706062ff4b6a3ea4879e4e4e0c0c894767b978e08e858d400283bc44" }, "downloads": -1, "filename": "glide-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "beeac155f2f522129c6cadcf14798a74", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 62505, "upload_time": "2021-04-14T20:19:58", "upload_time_iso_8601": "2021-04-14T20:19:58.546793Z", "url": "https://files.pythonhosted.org/packages/81/3d/69a427144e6fc6b4408d4264ea637b545eb2a20f3743015f9fcc92c5c380/glide-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a71991a8ff9cc56b63b323b5d6399a8c", "sha256": "52f969502a96199e23cfa9ff0f7f346173a68c3635a6303dbdb136d15fac7777" }, "downloads": -1, "filename": "glide-0.3.1.tar.gz", "has_sig": false, "md5_digest": "a71991a8ff9cc56b63b323b5d6399a8c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61489, "upload_time": "2021-04-14T20:20:01", "upload_time_iso_8601": "2021-04-14T20:20:01.770711Z", "url": "https://files.pythonhosted.org/packages/3f/b1/25cceeec5b5dfe4e73597b8135fdd13c822e165fc212fe1f59f0d5796428/glide-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "4999aaf351eeb528d61ebe62d9685cab", "sha256": "32868b05b1bc2c2b34648c973ae871a40bd0c889a8d43142ec066e1fc45aba79" }, "downloads": -1, "filename": "glide-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4999aaf351eeb528d61ebe62d9685cab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 61964, "upload_time": "2022-04-29T14:22:31", "upload_time_iso_8601": "2022-04-29T14:22:31.725354Z", "url": "https://files.pythonhosted.org/packages/45/3d/3d7be2af40e092ffe1cad0b48400923b6f07d4df653873a76730fdcc0087/glide-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "63976f0533673fa6620e549e10ae95f6", "sha256": "3e8000608c9ef48ac2863ec511d48741ff12178418f8019f630c0ccb4882862b" }, "downloads": -1, "filename": "glide-0.4.0.tar.gz", "has_sig": false, "md5_digest": "63976f0533673fa6620e549e10ae95f6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 59984, "upload_time": "2022-04-29T14:22:33", "upload_time_iso_8601": "2022-04-29T14:22:33.463684Z", "url": "https://files.pythonhosted.org/packages/e5/6e/96d2b2b4cd7fa520cb711e215310b29e8d74b96cf8f3dcd1c0e9a212bd3e/glide-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4999aaf351eeb528d61ebe62d9685cab", "sha256": "32868b05b1bc2c2b34648c973ae871a40bd0c889a8d43142ec066e1fc45aba79" }, "downloads": -1, "filename": "glide-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4999aaf351eeb528d61ebe62d9685cab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 61964, "upload_time": "2022-04-29T14:22:31", "upload_time_iso_8601": "2022-04-29T14:22:31.725354Z", "url": "https://files.pythonhosted.org/packages/45/3d/3d7be2af40e092ffe1cad0b48400923b6f07d4df653873a76730fdcc0087/glide-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "63976f0533673fa6620e549e10ae95f6", "sha256": "3e8000608c9ef48ac2863ec511d48741ff12178418f8019f630c0ccb4882862b" }, "downloads": -1, "filename": "glide-0.4.0.tar.gz", "has_sig": false, "md5_digest": "63976f0533673fa6620e549e10ae95f6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 59984, "upload_time": "2022-04-29T14:22:33", "upload_time_iso_8601": "2022-04-29T14:22:33.463684Z", "url": "https://files.pythonhosted.org/packages/e5/6e/96d2b2b4cd7fa520cb711e215310b29e8d74b96cf8f3dcd1c0e9a212bd3e/glide-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }