{ "info": { "author": "Seann Zhang", "author_email": "pluiefox@live.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.7" ], "description": "# Lunas\n\n[![PyPI version](https://img.shields.io/badge/pypi-v0.5.1-limegreen.svg)](https://github.com/pluiez/lunas)\n\n**Lunas** is a Python based library that mimics TensorFlow's `dataset` API and also its logics to build a data\nprocessing pipeline for arbitrary datasets.\n\nThe implementation mostly draws on TensorFlow but in a simplified and pure-Python fashion.\n\n## License\n\nThis project uses [MIT](LICENSE) license.\n\n## Features\n\nA `Dataset` represents a dataset and optionally holds custom operations on dataset elements.\n\nThe evaluation of operations are performed lazily, hence it's a trade-off for memory against speed.\n\n### Datasets\n\nCurrently the following datasets are supported:\n\n1. `TextLine`: iterates through a text file in read mode line by line.\n2. `Stdin`: wraps the standard input as a dataset.\n3. `Array`: wraps an iterable object as a dataset.\n4. `Range`: wraps a range of integers as a dataset, simulating builtin `range`.\n5. `Enumerate`: wraps a dataset with index for each element, simulating builtin `enumerate`.\n6. `Zip`: wraps multiple datasets as one dataset and supports custom padding for varying-sized datasets.\n7. `Concat`: concatenates multiple datasets as one dataset.\n8. `Group`: group several samples together.\n9. `Flatten`: flattens a sample into multiple samples.\n10. `Glob`: wraps the standard `glob.glob` as a dataset.\n11. `Map`: transforms elements by a given mapping function.\n12. `Where`: filters elements by a given predicate function.\n13. `Repeat`: repeats the dataset for multiple epochs.\n14. `Interleave`: maps a dataset into multiple datasets and interleave between the datasets.\n15. `Shuffle`: shuffles a dataset using a buffer for memory-efficient randomisation.\n16. `Sort`: sorts the dataset.\n17. `Slice`: slices the dataset.\n18. `Shard`: shards the dataset into different partitions.\n19. `Sampling`: draws samples from several datasets given a sampling distribution.\n\nAdditionally, chaining-style dataset operation is available for following datasets:\n`Map`, `Where`, `Repeat`, `Shard`, `Shuffle`, `Sort`, `Slice`, `Enumerate`, `Group`, `Flatten` and `Concat`.\n\nFor example, a dataset can invoke the following to create a new dataset:\n\n```python\nds = lunas.Range(100)\n.map(lambda x: 2 * x)\n.where(lambda x: x < 50)\n.shuffle(buffer_size=100)\n\nprint(list(ds))\n```\n\n### Batch Iterators\n\nThe batch iterators are provided to generate batches from a given dataset, currently including:\n\n1. `ConstantIterator`: generates batches with a constant number of samples.\n2. `BucketIterator`: generates varying-sized batches with sample size determined by a custom function.\n3. `DataLoader`: wraps PyTorch's `torch.utils.data.DataLoader` to provide multiprocessing data-loading features.\n\n### Persistence\n\nBoth datasets and batch iterators support persistence using `state()` and `load()` interface.\n`state()` takes a checkpoint of current iteration state, while `load()` restores iteration state from a given\ncheckpoint.\n\n## Requirements\n\n- Python >= 3.7\n- numpy\n- pytorch >= 1.5.0\n\n## Installation\n\nInstall using pip:\n\n```shell\npip install -U lunas\n```\n\n## Basics\n\n1. Create a dataset and iterate through it:\n\n ```python\n from lunas import Range\n\n ds = Range(1000).shuffle(buffer_size=100)\n for x in ds: # epoch 1\n print(x)\n for x in ds: # epoch 2\n print(x)\n\n ds = Range(1000).shuffle(buffer_size=100).repeat(2)\n for x in ds: # 2 epochs\n print(x)\n ```\n\n - A dataset can be scanned through for several epochs.\n - Dataset.shuffle() performs a buffered shuffling. The shuffling does not happen immediately at dataset creation,\n but rather begins when trying to access an element from the dataset.\n - Alternatively, `Dataset.repeat(2)` creates another dataset that iterates through the original dataset twice.\n\n2. Build a data processing pipeline:\n\n ```python\n from lunas import *\n ds = Range(10).map(lambda x: x * 2).where(lambda x: x % 2 == 0)\n ```\n\n - The chaining calls of a `Dataset` object defines a processing pipeline on the original dataset.\n\n3. Deal with multiple data sources:\n\n ```python\n from lunas import *\n\n ds1 = Range(10)\n ds2 = Range(start=10, stop=20, step=1)\n ds = Zip([ds1, ds2]).map(lambda x, y: (x + y), unpack_args=True)\n\n ds3 = Range(10)\n ds4 = Range(100)\n ds5 = Range(1000)\n ds = Zip([ds3, ds4, ds5], mode='>', padding=True).map(lambda x, y, z: (x + y + z), unpack_args=True)\n ```\n\n - Two datasets here are zipped as a `Zip` dataset. A `Zip` dataset returns a tuple from the internal child-datasets,\n that is `ds1` and `ds2`.\n\n - `Zip` requires strictly the datasets to be aligned by default. It also allows zipping multiple datasets of\n different sizes by providing additional `mode` and `paddinng` argument to indicate either padding smaller dataset\n or truncating bigger dataset.\n\n4. Example usage in a more complicated distributed multilingual Language Modeling training case:\n\n ```python\n from lunas import *\n\n\n corpus_paths = ['train.zh', 'train.en', 'train.ru']\n sampling_weights = [0.3, 0.4, 0.3]\n\n # Shards a dataset so that each worker holds a unique shard of the original corpus.\n # Sharding should be done before shuffling to avoid unnecessary shuffling efforts in each worker.\n datasets = []\n for corpus in corpus_paths:\n ds = TextLine(corpus) \\\n .shard(dist_word_size, dist_local_rank) \\\n .shuffle(buffer_size=10000)\n # Tokenizes plain text into token ids\n ds = ds.map(lambda x: {'input': tokenizer.tokenize(x)})\n # Group consecutive 128 samples together, then concat and split the samples in that group into the same length\n # to reduce padding. Finally, flatten the samples group into separate samples.\n ds = ds.group(group_size=128) \\\n .map(lambda xs: concat_and_split(xs, target_length=1024)) \\\n .flatten()\n\n datasets.append(ds)\n # Defines a sampling strategy from the datasets\n ds = Sampling(datasets, sampling_weights, virtual_size=1000000)\n\n batch_itr = BucketIterator(\n ds,\n # each batch size has at most 4096 tokens\n batch_size=4096,\n # size for each sample is measured in number of tokens in target language\n get_length_fn=lambda x: len(x),\n bucket_boundaries=get_bucket_boundaries()\n )\n\n dataloader = DataLoader(\n batch_itr,\n num_workers=6,\n collate_fn=collate_fn,\n )\n\n for epoch in range(max_epoch):\n for bathc in dataloader:\n ...\n ```\n\n5. Resume iteration:\n\n ```python\n import pickle\n # Stops at the 10-th element\n for i, x in enumerate(it):\n if i == 10:\n break\n pickle.dump(it.state(), open('state.pkl', 'wb'))\n # ...\n state = pickle.load(open('state.pkl', 'rb'))\n it.load(state)\n # Starts from the 11-th element\n for i, x in enumerate(it):\n ...\n ```\n\n - `it` here can be a dataset or batch iterator object.\n - `state()` returns a picklable dictionary, which can be loaded by `it.load()` to resume the iteration.\n - lunas provides limited support for resumable iteration. Specifically, the iteration state is maintained by a\n counting pointer in `Dataset`. For those dataset implementations that manage iteration by internal buffering, such\n as `Shuffle`, `Sort` and `BucketIterator`, `load()` would loss content in the buffer.\n\n6. Extend the dataset:\n\n - You can refer to the implementation of `TextLine` to customize your own data dataset.\n\n## Known issues\n\n1. Parallel processing is not yet supported due to Python's limited support for parallelization.\n\n Multi-threading can be helpful for resource-intensive data loading operations, but not for CPU-intensive data\n processing operations. Whereas multi-processing is facilitates CPU-intensive scenarios, there are a few limitations,\n which further introduce complexity in the use of the library.\n\n Although it won't cause any difference for lunas APIs, the users will have to pay more attention in order to ensure\n multi-processing work correctly. For example, multi-processing does not accept lambda expressions and any unpicklable\n objects as arguments. The more severe problem is that once the child-process terminated with certain fatal errors (\n for example, a segment fault), the parent process will never be notified the termination of the child. It thus\n requires extra efforts on accounting the states of child processes and the standard `multiprocessing` library does\n not come to use.\n\n We are likely to opt to C++ based implementation for parallelization features just as TensorFlow did.\n\n2. Stdin dataset cannot be used in potential multiprocessing context.\n\n multiprocessing can mess up standard input since we can't distribute /dev/stdin to multiple processes with trivial\n implementation. Furthermore, there seems to be little preferential needs to spread stdin to multiple processes, so\n the problem is simply left aside.\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/pluiez/lunas", "keywords": "", "license": "LICENSE", "maintainer": "", "maintainer_email": "", "name": "Lunas", "package_url": "https://pypi.org/project/Lunas/", "platform": "", "project_url": "https://pypi.org/project/Lunas/", "project_urls": { "Homepage": "https://github.com/pluiez/lunas" }, "release_url": "https://pypi.org/project/Lunas/0.5.1/", "requires_dist": [ "numpy", "torch" ], "requires_python": ">=3.7", "summary": "Building customisable data processing pipeline and data iterators for machine learning.", "version": "0.5.1", "yanked": false, "yanked_reason": null }, "last_serial": 12559275, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "bb3635fd58b4fad70e9974cb1cc01db4", "sha256": "5501dc4e8f30ddf2ae1fa49113daa002f2923b5928667b61659efae41b223868" }, "downloads": -1, "filename": "Lunas-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bb3635fd58b4fad70e9974cb1cc01db4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9448, "upload_time": "2019-01-03T08:18:13", "upload_time_iso_8601": "2019-01-03T08:18:13.355979Z", "url": "https://files.pythonhosted.org/packages/97/7f/a6f81a0b63f0b7c3abc0e60ab24d80b420fcbc9a87ded068ae641ce235d0/Lunas-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "abc1b56f6837f0bfb50d8c1b2a3dfb65", "sha256": "763e8bda66c81b1651537a72debc11a86c17ece129d07e9dc6db45ac683d7330" }, "downloads": -1, "filename": "Lunas-0.1.0.tar.gz", "has_sig": false, "md5_digest": "abc1b56f6837f0bfb50d8c1b2a3dfb65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7514, "upload_time": "2019-01-03T08:18:15", "upload_time_iso_8601": "2019-01-03T08:18:15.676825Z", "url": "https://files.pythonhosted.org/packages/52/b9/3de87fabf080c6f902fd7d692b78dda5e8bd15e877ecc3f2f8c6c80ef87c/Lunas-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d0bbe8edd26ce94075a5b7fea6c0cd11", "sha256": "5bd014227dd1fc306aab4589096135f25a56d7246617cd6c402f4ebbadb12eb8" }, "downloads": -1, "filename": "Lunas-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d0bbe8edd26ce94075a5b7fea6c0cd11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12226, "upload_time": "2019-01-04T02:32:42", "upload_time_iso_8601": "2019-01-04T02:32:42.035843Z", "url": "https://files.pythonhosted.org/packages/c0/52/b4b4677b4e5838c64b18f907ec01bec1a783e0c708872276da616f654186/Lunas-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "390845f85d990adbe7a331320d34ebb5", "sha256": "76e298fae2757234fa4a875b2708e7961729b0f9450ec76f5ee19499e7b1c3ad" }, "downloads": -1, "filename": "Lunas-0.1.1.tar.gz", "has_sig": false, "md5_digest": "390845f85d990adbe7a331320d34ebb5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10186, "upload_time": "2019-01-04T02:32:43", "upload_time_iso_8601": "2019-01-04T02:32:43.427670Z", "url": "https://files.pythonhosted.org/packages/ad/19/387d03c546703a55d419c3039770db3e447c7eef17cb0237147a2e9c5a74/Lunas-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "74c5c36de76d2cf997f36a45ed4f6a3d", "sha256": "7726b6a69fc0ec204171d33ce237382f18bbd929adbf1e23911e8ae470c57979" }, "downloads": -1, "filename": "Lunas-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "74c5c36de76d2cf997f36a45ed4f6a3d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12431, "upload_time": "2019-01-09T08:13:50", "upload_time_iso_8601": "2019-01-09T08:13:50.404681Z", "url": "https://files.pythonhosted.org/packages/09/a8/6ebb9d3db1d85af81c6c4ce472cff56fcfc0afae7c2c2ea0f9fdc889fa69/Lunas-0.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c91aa3d3690ea253b33eb22ffa66daee", "sha256": "09de36103deba85049f1979ffce0c05a397ae655813c90982b307a0588eeea44" }, "downloads": -1, "filename": "Lunas-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c91aa3d3690ea253b33eb22ffa66daee", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10369, "upload_time": "2019-01-09T08:13:53", "upload_time_iso_8601": "2019-01-09T08:13:53.780870Z", "url": "https://files.pythonhosted.org/packages/14/0c/0faff16c18ebed1e187d09daa5b2fdb2b64b0542ddffc1fcde8d6de54f58/Lunas-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "818b202997ec16e83575cec58c2b0dee", "sha256": "576587d0e54b1a621caf01106f50cc30769bc23d3cbcd95d5ab733d3cca58356" }, "downloads": -1, "filename": "Lunas-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "818b202997ec16e83575cec58c2b0dee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12507, "upload_time": "2019-01-09T09:47:24", "upload_time_iso_8601": "2019-01-09T09:47:24.383823Z", "url": "https://files.pythonhosted.org/packages/d8/f7/531245fabf2b59f5b5fe2819f48e7283b2ade6182e3f937e5ad6c4593afe/Lunas-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b00e45e337862f1042d271541a7ee4bb", "sha256": "7988695037b67b643c0ce5fb4381a9caa5294722239d195eff8c4bcd49acacfe" }, "downloads": -1, "filename": "Lunas-0.1.3.tar.gz", "has_sig": false, "md5_digest": "b00e45e337862f1042d271541a7ee4bb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10423, "upload_time": "2019-01-09T09:47:26", "upload_time_iso_8601": "2019-01-09T09:47:26.109765Z", "url": "https://files.pythonhosted.org/packages/56/31/179d6d2b32b4cd32b813f835a1c98fab7772bb3658aa9818b08ad7423c6a/Lunas-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "1d4dd69cdf508df799cea3eb546b5974", "sha256": "8f93adc72e0d6cd2293422ece532dbe5c793f86fa91b442fa11f79e5d1bf0b4c" }, "downloads": -1, "filename": "Lunas-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1d4dd69cdf508df799cea3eb546b5974", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12505, "upload_time": "2019-01-10T06:06:36", "upload_time_iso_8601": "2019-01-10T06:06:36.741190Z", "url": "https://files.pythonhosted.org/packages/cb/c5/8a1da2483fd07d9d5afdb4e5b75fa9cfc92b6ff2c7a846ff0df885dc8ab0/Lunas-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "aba18b416eb445d518fcd5bdf6a93169", "sha256": "a80d90275ef0822270b3150dbc4aec0f53dab95432bf09668451abc32ed7f722" }, "downloads": -1, "filename": "Lunas-0.1.4.tar.gz", "has_sig": false, "md5_digest": "aba18b416eb445d518fcd5bdf6a93169", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10410, "upload_time": "2019-01-10T06:06:38", "upload_time_iso_8601": "2019-01-10T06:06:38.460044Z", "url": "https://files.pythonhosted.org/packages/04/eb/859d1e478dd6f329a56ae30ae5b290fda1fa32ad03c565774d6b73a82c45/Lunas-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "6ab3a90f2a33f48b861653902d117054", "sha256": "5a8430c844f6fd4806bd37a5b0013d3ca5748ae918090984edbb5b9e3b57dd5d" }, "downloads": -1, "filename": "Lunas-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "6ab3a90f2a33f48b861653902d117054", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12506, "upload_time": "2019-01-10T06:15:21", "upload_time_iso_8601": "2019-01-10T06:15:21.380664Z", "url": "https://files.pythonhosted.org/packages/c5/9d/5b7ce19663d1176bd2bc0070ca30472445006dd7ab82e53ab29e917bdc58/Lunas-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f301f7938fc124b01816bc8c1cce8c9c", "sha256": "9e92fca5b3e8a3cb685140519c8cb44bc2de0aeda6fbae7e85c76c1b144bef51" }, "downloads": -1, "filename": "Lunas-0.1.5.tar.gz", "has_sig": false, "md5_digest": "f301f7938fc124b01816bc8c1cce8c9c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10410, "upload_time": "2019-01-10T06:15:23", "upload_time_iso_8601": "2019-01-10T06:15:23.146989Z", "url": "https://files.pythonhosted.org/packages/af/71/754cca4d2461831c9ae81714e122d8dfbc91585d0ef19e372a9eb7133a9c/Lunas-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "22a8ce4b7fa09c1dacf8fb082ac14d0b", "sha256": "0c1c98f6db10099f1e25cba0ba396dbdf9ea405eb2cd7234b31181eeaa177459" }, "downloads": -1, "filename": "Lunas-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "22a8ce4b7fa09c1dacf8fb082ac14d0b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 12751, "upload_time": "2019-01-10T10:17:49", "upload_time_iso_8601": "2019-01-10T10:17:49.163871Z", "url": "https://files.pythonhosted.org/packages/75/2f/ab9ccd8b0eeabcbf1a2703ce622f9aa0275c12d87adcccbcfd73af459f4c/Lunas-0.1.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bea2c2594ae8a881da978eea3aaa05d9", "sha256": "358935739c2564a45a52b1c4f9732864c4f493cea15135b355f66e8a72ee2b6c" }, "downloads": -1, "filename": "Lunas-0.1.6.tar.gz", "has_sig": false, "md5_digest": "bea2c2594ae8a881da978eea3aaa05d9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10524, "upload_time": "2019-01-10T10:17:51", "upload_time_iso_8601": "2019-01-10T10:17:51.618797Z", "url": "https://files.pythonhosted.org/packages/78/ce/07bf9a7a4c9025cff1791c3da09401838efa0baa66efbcfb6329a7326ca4/Lunas-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "82f2ac061d6d29082f888e5345debacd", "sha256": "a760108e9f8708df48945a626839cd8b0b5109a3348ae69579c617abf7988f1e" }, "downloads": -1, "filename": "Lunas-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "82f2ac061d6d29082f888e5345debacd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13447, "upload_time": "2019-01-11T10:11:15", "upload_time_iso_8601": "2019-01-11T10:11:15.277821Z", "url": "https://files.pythonhosted.org/packages/66/00/8285e6f9eadd0eb652dffd92badb9f0c3e689c1ed273851b7f8cb04eb93b/Lunas-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b570b9183dec0bea4c01346935fbef01", "sha256": "0cea212c40c574412de709222439b1aeb463861a625912eba569ef850456f866" }, "downloads": -1, "filename": "Lunas-0.1.7.tar.gz", "has_sig": false, "md5_digest": "b570b9183dec0bea4c01346935fbef01", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10880, "upload_time": "2019-01-11T10:11:17", "upload_time_iso_8601": "2019-01-11T10:11:17.418707Z", "url": "https://files.pythonhosted.org/packages/5c/a6/548ff5eff7ddb37dc730550b40b15e3913d33450ad27c335c3cbe53f81eb/Lunas-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "8a8e6c3607af31022a2ec022b1803afc", "sha256": "c3a6320b20eca739081fc1c9e61f9601e2821931ad9ead82291a9827d3abdf1f" }, "downloads": -1, "filename": "Lunas-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "8a8e6c3607af31022a2ec022b1803afc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13402, "upload_time": "2019-01-11T10:19:15", "upload_time_iso_8601": "2019-01-11T10:19:15.397808Z", "url": "https://files.pythonhosted.org/packages/af/bc/65829acef7f4f7cdcc79c1949e4a59429b222d82729b2cd119adf99b341e/Lunas-0.1.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fa9958216fcb5e7277d4491b389573f4", "sha256": "64b159e95832124df936a79b2f3c61ad85f33d22c5728a161f67f1e395e2ed57" }, "downloads": -1, "filename": "Lunas-0.1.8.tar.gz", "has_sig": false, "md5_digest": "fa9958216fcb5e7277d4491b389573f4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10836, "upload_time": "2019-01-11T10:19:17", "upload_time_iso_8601": "2019-01-11T10:19:17.105907Z", "url": "https://files.pythonhosted.org/packages/d9/a3/d0a9af9407217e978b992d42f1f05271e68b30f80b0290593a5dbee532e5/Lunas-0.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "944fffec644794d9509bf10311ac3090", "sha256": "955519f6ff71cc3a9f14c846d017b41773d8ed92987cebf1408dc88d50216c48" }, "downloads": -1, "filename": "Lunas-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "944fffec644794d9509bf10311ac3090", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13492, "upload_time": "2019-01-11T10:45:27", "upload_time_iso_8601": "2019-01-11T10:45:27.160436Z", "url": "https://files.pythonhosted.org/packages/29/59/55c3626921d0839b7d1247140ba9fdd4232a208e938fa2a6e7e952c368f6/Lunas-0.1.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5f618b80b621fefe66b29a5f6aa256fd", "sha256": "9bfb761c721ff2b10b5de7dea0fa4296bacf13b4f4fbc8d8e843e5ad9ce248b4" }, "downloads": -1, "filename": "Lunas-0.1.9.tar.gz", "has_sig": false, "md5_digest": "5f618b80b621fefe66b29a5f6aa256fd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10955, "upload_time": "2019-01-11T10:45:28", "upload_time_iso_8601": "2019-01-11T10:45:28.970777Z", "url": "https://files.pythonhosted.org/packages/4e/2d/c8c22f696639e9942096c4aea364ff3584f266d472813370f086884410b5/Lunas-0.1.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "eb662bf90a541e4020d96af2b8a120b4", "sha256": "101bb82a71bac1eeea5c497bbe1963b7f7f10bf7a4fd4b29f726f99ed6cdef10" }, "downloads": -1, "filename": "Lunas-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "eb662bf90a541e4020d96af2b8a120b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13641, "upload_time": "2019-01-16T07:36:23", "upload_time_iso_8601": "2019-01-16T07:36:23.918089Z", "url": "https://files.pythonhosted.org/packages/da/84/a0cc7043e1bc6d0c3a1158b3e52771e894932b3fb363bd53b038f71ed99d/Lunas-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ecfeae3aa18dc259192f7749df6ba52c", "sha256": "6fcb2c6d3c4841317302aaf0d5e25b2d37ecd8732d5ef1a7f4daaedab3f338de" }, "downloads": -1, "filename": "Lunas-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ecfeae3aa18dc259192f7749df6ba52c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11084, "upload_time": "2019-01-16T07:36:26", "upload_time_iso_8601": "2019-01-16T07:36:26.116266Z", "url": "https://files.pythonhosted.org/packages/4c/4b/7e72ab1f46cae31b8eca40b29b5fe540431b09fa2826c85c686acd3df724/Lunas-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "b66a48c2d5f54264af6a61e946a1dd5f", "sha256": "8f8bbf1b5777ab4b9fa4cd81f9f8b8119483a415d1f45074a2f40c7256e770c8" }, "downloads": -1, "filename": "Lunas-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b66a48c2d5f54264af6a61e946a1dd5f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14801, "upload_time": "2019-01-23T03:46:50", "upload_time_iso_8601": "2019-01-23T03:46:50.058646Z", "url": "https://files.pythonhosted.org/packages/55/f4/7358d4d6766acde2e7cdd60de09297e299f382b197dfd7340436411674e6/Lunas-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "57e93e3f50e682ec7cbc067494ab02d2", "sha256": "cbac41d42820e6c8d5987ce10f23e6281a67de92cc992eed74cd329c61b99fae" }, "downloads": -1, "filename": "Lunas-0.2.1.tar.gz", "has_sig": false, "md5_digest": "57e93e3f50e682ec7cbc067494ab02d2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11515, "upload_time": "2019-01-23T03:46:52", "upload_time_iso_8601": "2019-01-23T03:46:52.732668Z", "url": "https://files.pythonhosted.org/packages/7b/56/fd17851bd40d2a24c73f425563775d9895b12384d787e47d14178ebeffdd/Lunas-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "b56d2c2a3164b1bfb27dfb88a53c5b70", "sha256": "c2e70f7a356a43e23521729d7133fdb74655eaa773c0d2097346a4ce1242a187" }, "downloads": -1, "filename": "Lunas-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b56d2c2a3164b1bfb27dfb88a53c5b70", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 14810, "upload_time": "2019-01-23T03:53:34", "upload_time_iso_8601": "2019-01-23T03:53:34.863687Z", "url": "https://files.pythonhosted.org/packages/d9/56/c1d41a715a87df436a68401715b4a5244947b7062cdc76368b34711d9f1a/Lunas-0.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3c560e9912b31958c95eb9f982156219", "sha256": "5003de7c72af309bec41b06ac5ac7905eab9de2833e64496fc1e45bd191e0d2d" }, "downloads": -1, "filename": "Lunas-0.2.2.tar.gz", "has_sig": false, "md5_digest": "3c560e9912b31958c95eb9f982156219", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11506, "upload_time": "2019-01-23T03:53:37", "upload_time_iso_8601": "2019-01-23T03:53:37.105510Z", "url": "https://files.pythonhosted.org/packages/06/b6/e0c58cbf47772cd79613b26c4ed40c2d19127f9ef8479a33fe15e4815657/Lunas-0.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "a5244ab25131e4516c9a2bc1711e7470", "sha256": "44c8072953d03097f1eca58e89212ef2fb9c7e2e44be62784afc8bd7f6cc9e2f" }, "downloads": -1, "filename": "Lunas-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a5244ab25131e4516c9a2bc1711e7470", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15063, "upload_time": "2019-01-28T09:19:08", "upload_time_iso_8601": "2019-01-28T09:19:08.133524Z", "url": "https://files.pythonhosted.org/packages/5e/81/39ce41f75d0afe9a0270723e99d3ba97d29a822df7a1f287def6b4643fe5/Lunas-0.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4d90c52d34d0668622e9fda28dc93449", "sha256": "0a3f31a04ce306d8572b759bdb9072e4611cdde318894671d1c2ba5bae264bac" }, "downloads": -1, "filename": "Lunas-0.2.3.tar.gz", "has_sig": false, "md5_digest": "4d90c52d34d0668622e9fda28dc93449", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11716, "upload_time": "2019-01-28T09:19:09", "upload_time_iso_8601": "2019-01-28T09:19:09.876883Z", "url": "https://files.pythonhosted.org/packages/97/07/03498c6f280168a8707e6883b155e5b3e0f4772b663afee687edcb2f943f/Lunas-0.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "cb29a1dcb45e78de5838d15df8f3e252", "sha256": "d6c99512e4862b1c2b085b52963dcfb1af450d34e6158bfe99205b3d665f1436" }, "downloads": -1, "filename": "Lunas-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cb29a1dcb45e78de5838d15df8f3e252", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15072, "upload_time": "2019-01-28T14:15:22", "upload_time_iso_8601": "2019-01-28T14:15:22.495862Z", "url": "https://files.pythonhosted.org/packages/0a/28/ab48781e5cfe5832943c8f8c9d281f4a15a0f802007f11804eceddcd8e9d/Lunas-0.2.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b55b2e99eaffbb7e64283c9ac23934d7", "sha256": "b359ad5a3bde8e1cb374fe1bd4b7d893142b0f05b020142943c0d4f5fbdd2024" }, "downloads": -1, "filename": "Lunas-0.2.4.tar.gz", "has_sig": false, "md5_digest": "b55b2e99eaffbb7e64283c9ac23934d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11744, "upload_time": "2019-01-28T14:15:24", "upload_time_iso_8601": "2019-01-28T14:15:24.629222Z", "url": "https://files.pythonhosted.org/packages/91/19/acdb8947579e7f25e9e687ce661985ad0edab48cf3442482c4058ca7d17e/Lunas-0.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "cfca5003e919e618e4e962eed27141f0", "sha256": "f49bade4305e49d21566caa35c678faeff8855d8fef4792409c8241ef7f6e8c9" }, "downloads": -1, "filename": "Lunas-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "cfca5003e919e618e4e962eed27141f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15118, "upload_time": "2019-01-28T15:18:15", "upload_time_iso_8601": "2019-01-28T15:18:15.031875Z", "url": "https://files.pythonhosted.org/packages/2e/a6/e81ef6aea1688d9cc8f8d9b30ba9e4671aad13eb65c29f0aceaca1491a13/Lunas-0.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e09159f79d561e9335280b8cb1a6b0fc", "sha256": "784a54eeb735c991651d90c7cee45c80b0a48ed6456e9ee434a169891b847054" }, "downloads": -1, "filename": "Lunas-0.2.5.tar.gz", "has_sig": false, "md5_digest": "e09159f79d561e9335280b8cb1a6b0fc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11770, "upload_time": "2019-01-28T15:18:18", "upload_time_iso_8601": "2019-01-28T15:18:18.221532Z", "url": "https://files.pythonhosted.org/packages/bf/3f/949c06c837930c0866f96d31b665ac0f88250990dcb5e3d1f1a9ed6692fe/Lunas-0.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "77983218aceb81637c1bc522ac2ff9d1", "sha256": "c2e4ac575dc75f4c1ed77b899f2dbe1d3ccb5a653ee25f6413b91d29985a64b4" }, "downloads": -1, "filename": "Lunas-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "77983218aceb81637c1bc522ac2ff9d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15654, "upload_time": "2019-01-29T06:23:39", "upload_time_iso_8601": "2019-01-29T06:23:39.699155Z", "url": "https://files.pythonhosted.org/packages/f5/d6/be607aac8a0c3ad038efc095d0ee38e97c9d631aade3d39af85538dd374e/Lunas-0.2.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2ec133777a3b67ac27e0b13de239117e", "sha256": "39c002e74f9fbfe3641484f8badf78b507a8e5b7527123ec9686da364eeeead3" }, "downloads": -1, "filename": "Lunas-0.2.6.tar.gz", "has_sig": false, "md5_digest": "2ec133777a3b67ac27e0b13de239117e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11945, "upload_time": "2019-01-29T06:23:41", "upload_time_iso_8601": "2019-01-29T06:23:41.646039Z", "url": "https://files.pythonhosted.org/packages/b2/85/d44095b32013659eff3b4467ad83b92c197760fc78e39dedf4da8d3c8f33/Lunas-0.2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "a060640b5c200268f0478dc621689476", "sha256": "724ef0da31708e6ccf3074af26d4cbd6a85aed0ed4540613116a308f2daacac2" }, "downloads": -1, "filename": "Lunas-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "a060640b5c200268f0478dc621689476", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15646, "upload_time": "2019-01-31T07:06:53", "upload_time_iso_8601": "2019-01-31T07:06:53.225513Z", "url": "https://files.pythonhosted.org/packages/38/7d/57a585ac889d1a3ffcb1792dc45df779b73d8d70dd45e495e7292c767a60/Lunas-0.2.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fe8b6959372d4c6aec492b5b5159f089", "sha256": "939f128ef49f92a89592049791bb99114d0131b0063d132ac3e7600b7600d722" }, "downloads": -1, "filename": "Lunas-0.2.7.tar.gz", "has_sig": false, "md5_digest": "fe8b6959372d4c6aec492b5b5159f089", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11953, "upload_time": "2019-01-31T07:06:56", "upload_time_iso_8601": "2019-01-31T07:06:56.062534Z", "url": "https://files.pythonhosted.org/packages/d3/a5/b061578b37800713a5478e839714fae1a1b129a59e076e55ca9ef737f724/Lunas-0.2.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "01f34d8d63eaf908efa006d43d32be07", "sha256": "5d5e383bc075bbd94cfc8f173d60a354f8389e5b3eace69161e11ef107af153d" }, "downloads": -1, "filename": "Lunas-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "01f34d8d63eaf908efa006d43d32be07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15962, "upload_time": "2019-02-05T07:26:01", "upload_time_iso_8601": "2019-02-05T07:26:01.821404Z", "url": "https://files.pythonhosted.org/packages/4e/e8/06353b3a4d6a3422b1d1b983123ed2133f94358f41ace10553cf55c866c4/Lunas-0.2.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "14d8fbe27721e39027250ea9d4c799ac", "sha256": "d4e3b373126b35cda315170f211f61470bd87c1da5a57c0777de2e008b76733f" }, "downloads": -1, "filename": "Lunas-0.2.8.tar.gz", "has_sig": false, "md5_digest": "14d8fbe27721e39027250ea9d4c799ac", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12076, "upload_time": "2019-02-05T07:26:04", "upload_time_iso_8601": "2019-02-05T07:26:04.250850Z", "url": "https://files.pythonhosted.org/packages/98/ba/9a723f7a390ff52410a56fbe28fae232a3d10cbf4445dc402c83a4c599c0/Lunas-0.2.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2ed9bba3bcb942ed8fa3bbbbfef953b2", "sha256": "b8d60a111f5c46ccf4c0253ab17b862635543d3dd97f07171b2acc249096dd00" }, "downloads": -1, "filename": "Lunas-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2ed9bba3bcb942ed8fa3bbbbfef953b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17057, "upload_time": "2019-02-18T09:25:56", "upload_time_iso_8601": "2019-02-18T09:25:56.231093Z", "url": "https://files.pythonhosted.org/packages/77/64/53b50690f20134c7cf95f81cf9ff2073fbce802240ce1df90fb14f2d3176/Lunas-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0d4a568906b526fc80c1ea09a59016ed", "sha256": "de3484bafa4fef8c298e6dcc73e351f8dee6a78f87a4da19cf96917ebf1c3b34" }, "downloads": -1, "filename": "Lunas-0.3.0.tar.gz", "has_sig": false, "md5_digest": "0d4a568906b526fc80c1ea09a59016ed", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13171, "upload_time": "2019-02-18T09:25:58", "upload_time_iso_8601": "2019-02-18T09:25:58.349977Z", "url": "https://files.pythonhosted.org/packages/e7/af/791cda156f6399bef8add93499f84804755ecbd299c3c7e6a0a950011b49/Lunas-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "3f55f81d668d56093303937571c4c591", "sha256": "b01b28332916194273abd404ec849e82765622ff5ca2a79d1d4b109248237882" }, "downloads": -1, "filename": "Lunas-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3f55f81d668d56093303937571c4c591", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17382, "upload_time": "2019-03-01T06:47:13", "upload_time_iso_8601": "2019-03-01T06:47:13.132074Z", "url": "https://files.pythonhosted.org/packages/bc/3c/2e35f7b0914e76e3c1275885e46d4cef7399ec8210a4cd633afc9e5277c5/Lunas-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e36610044291af7c0fe81b24e5c33d1d", "sha256": "604fd7a4a1d52d38f25ca56578d68febcfa1a589b4d8d594f70018f87628ace1" }, "downloads": -1, "filename": "Lunas-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e36610044291af7c0fe81b24e5c33d1d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13514, "upload_time": "2019-03-01T06:47:21", "upload_time_iso_8601": "2019-03-01T06:47:21.655397Z", "url": "https://files.pythonhosted.org/packages/a3/a3/0694e564e818b989befb690ae6744400bc1565214e3eedaf3b2414574f41/Lunas-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "cc1de09b55ae8d1ea95ce77f36eb85fc", "sha256": "2dce11d5d04cb6fa5f4b559526fb66e38ca27c6ae23941b88ab6676e04887a53" }, "downloads": -1, "filename": "Lunas-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "cc1de09b55ae8d1ea95ce77f36eb85fc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18219, "upload_time": "2019-03-25T03:51:49", "upload_time_iso_8601": "2019-03-25T03:51:49.107386Z", "url": "https://files.pythonhosted.org/packages/73/f6/d37708e69fdd0634c679cdb01f8576561375a3b9623373a61735f83f6671/Lunas-0.3.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3a5a8c183fd70c9dea5ae96bb50de289", "sha256": "cffebdbc21a6248e62f061cbc4c138396df9b13420f72357e025fb7ad6d3b03b" }, "downloads": -1, "filename": "Lunas-0.3.2.tar.gz", "has_sig": false, "md5_digest": "3a5a8c183fd70c9dea5ae96bb50de289", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 14216, "upload_time": "2019-03-25T03:51:51", "upload_time_iso_8601": "2019-03-25T03:51:51.361633Z", "url": "https://files.pythonhosted.org/packages/6e/b7/43dcb71df254b98ba0090135b2042deeed479d60b160ce945db8f809eda3/Lunas-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "e0e4f38782d5b07c8f72066a3bbf3590", "sha256": "d443f67a2754a397ff1f17c29f02ff32e96d2446b8c392d51f40e1f4e1751c8d" }, "downloads": -1, "filename": "Lunas-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e0e4f38782d5b07c8f72066a3bbf3590", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18801, "upload_time": "2019-04-02T04:06:12", "upload_time_iso_8601": "2019-04-02T04:06:12.418901Z", "url": "https://files.pythonhosted.org/packages/db/e4/6340936077d6bc565b899fce16b4bd588b63a89553333e90faab4e70d109/Lunas-0.3.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b3a2bd688eefdd4850fbe9565fb9753c", "sha256": "27730ba4c0093e560884bfa93e28e696bcb77afcc12da0456779adc34f93950d" }, "downloads": -1, "filename": "Lunas-0.3.3.tar.gz", "has_sig": false, "md5_digest": "b3a2bd688eefdd4850fbe9565fb9753c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 14506, "upload_time": "2019-04-02T04:06:14", "upload_time_iso_8601": "2019-04-02T04:06:14.168106Z", "url": "https://files.pythonhosted.org/packages/5d/39/2b97e6ac5d3de6beb07088c5bbaea15bffa92bf1e5e5b63cd2078bc323fb/Lunas-0.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "d36f690afbb05e522e43524468d0cfb7", "sha256": "97d89259aa87009ce2902a88139b81daca8cfe08a969c713daec64e50935723e" }, "downloads": -1, "filename": "Lunas-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "d36f690afbb05e522e43524468d0cfb7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18786, "upload_time": "2019-04-02T08:45:14", "upload_time_iso_8601": "2019-04-02T08:45:14.087634Z", "url": "https://files.pythonhosted.org/packages/0f/62/673cf7ad08e1ceab81f3f7656687bd5f52395143f869f1f56736ad79f013/Lunas-0.3.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f876198d997f635b177aa9d49c173591", "sha256": "941b651e16f2430ed712e02e2bca000f9c28e595e2061524c00847fe6fd81735" }, "downloads": -1, "filename": "Lunas-0.3.4.tar.gz", "has_sig": false, "md5_digest": "f876198d997f635b177aa9d49c173591", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 14421, "upload_time": "2019-04-02T08:45:15", "upload_time_iso_8601": "2019-04-02T08:45:15.848898Z", "url": "https://files.pythonhosted.org/packages/13/6e/91e2b5055e0034f8497ea5bb3ae8d470d4401e0506abdc49e15bc0c4a0d7/Lunas-0.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "9144cf8963396d335cbb64c95c304ae3", "sha256": "2151536afe7a2c476548b881763b6e735220e60939783f7f7c4b5d9e42d82261" }, "downloads": -1, "filename": "Lunas-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "9144cf8963396d335cbb64c95c304ae3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18603, "upload_time": "2019-09-07T16:55:59", "upload_time_iso_8601": "2019-09-07T16:55:59.103022Z", "url": "https://files.pythonhosted.org/packages/ff/e3/210f390998e0890a8bba5059f5f7d192d003e64bfabbaf3c56864fb23932/Lunas-0.3.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "324f8a0f0285f3dd7d235dd3e87139ab", "sha256": "255a2182c07293b71bcabd3494879307310e19cc4e3d8f120b504f7a91960e52" }, "downloads": -1, "filename": "Lunas-0.3.5.tar.gz", "has_sig": false, "md5_digest": "324f8a0f0285f3dd7d235dd3e87139ab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15412, "upload_time": "2019-09-07T16:56:03", "upload_time_iso_8601": "2019-09-07T16:56:03.341963Z", "url": "https://files.pythonhosted.org/packages/b2/49/6c3fbda031d2edd8be89a8c0b54c8454c429930ed6102ef48597f961ff25/Lunas-0.3.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "f9522f4364b436bb3a3f160f24786f8c", "sha256": "c05e921cba57931874eb3af3eebba728ab87a3189735036594b7a497ab0bbbe6" }, "downloads": -1, "filename": "Lunas-0.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "f9522f4364b436bb3a3f160f24786f8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 12074, "upload_time": "2019-10-25T14:51:56", "upload_time_iso_8601": "2019-10-25T14:51:56.358032Z", "url": "https://files.pythonhosted.org/packages/0c/1f/37951f33620df14254b87439fe4918bea8f4dec276b28b5819d478311802/Lunas-0.3.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3858a7142ae210760d295a78e4b8d14d", "sha256": "b60ef22d041e683c12674dcc5fcc778672f4f5d37fea1354b5ad1dde5c51dea8" }, "downloads": -1, "filename": "Lunas-0.3.6.tar.gz", "has_sig": false, "md5_digest": "3858a7142ae210760d295a78e4b8d14d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10574, "upload_time": "2019-10-25T14:52:00", "upload_time_iso_8601": "2019-10-25T14:52:00.283634Z", "url": "https://files.pythonhosted.org/packages/97/cb/886bc6b42c3f5ca6db99859e5b52667b9b4dca8a3447408ccad9e311f840/Lunas-0.3.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "23a5715500938eacf3c244e836a0e9f2", "sha256": "81d7cc52a45bd742496ce1bbb28452c519c126b465e9fe5a3312acd0a5231ca7" }, "downloads": -1, "filename": "Lunas-0.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "23a5715500938eacf3c244e836a0e9f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 12957, "upload_time": "2019-10-27T07:01:37", "upload_time_iso_8601": "2019-10-27T07:01:37.916237Z", "url": "https://files.pythonhosted.org/packages/b5/2f/8e8fd821c41881c8324b6bafea056c4bb59d8271956a01c10aaa568eff6b/Lunas-0.3.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "20ab6aaa43c4e4ef6dfd5f891815845b", "sha256": "8dc9f20d52a58e0d71ee9a47c37c48c862ac093fc0b088aab15d72c3d17592fd" }, "downloads": -1, "filename": "Lunas-0.3.7.tar.gz", "has_sig": false, "md5_digest": "20ab6aaa43c4e4ef6dfd5f891815845b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 11341, "upload_time": "2019-10-27T07:01:39", "upload_time_iso_8601": "2019-10-27T07:01:39.801796Z", "url": "https://files.pythonhosted.org/packages/9d/b7/63647a7019c07b555808824b7ca58c399f4c74e830cbf17156c585dc55c4/Lunas-0.3.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "e705ec096f1a54726e06cdc09143181e", "sha256": "4a29dd56ec2845dd632737f059bf20818f11053c0fcea25a64bedc7de96debf5" }, "downloads": -1, "filename": "Lunas-0.3.8-py3-none-any.whl", "has_sig": false, "md5_digest": "e705ec096f1a54726e06cdc09143181e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17330, "upload_time": "2020-05-31T13:45:07", "upload_time_iso_8601": "2020-05-31T13:45:07.099946Z", "url": "https://files.pythonhosted.org/packages/89/44/727c0fc134d893e1e89eb1160ef4531d1c9b26ef7eabfeca7f867e929760/Lunas-0.3.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f4ee82d923db163c4e94d5471f65f795", "sha256": "7c58c87ac0df5b28b23123ab43a23c673678651a3aca42badcf9a5f6e85e1ece" }, "downloads": -1, "filename": "Lunas-0.3.8.tar.gz", "has_sig": false, "md5_digest": "f4ee82d923db163c4e94d5471f65f795", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15019, "upload_time": "2020-05-31T13:45:08", "upload_time_iso_8601": "2020-05-31T13:45:08.947657Z", "url": "https://files.pythonhosted.org/packages/e2/86/0fd7c345cb3bd6c6bc8210a80d02c15f4a75fc9e0806d7e71d85f859b011/Lunas-0.3.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "4ab3b6de903fab4eb2ce94ccdbe3a71e", "sha256": "76408242225789eb3309fe7c1819e5aafa280c51432c8cb1a1cbf9c2e24f53d1" }, "downloads": -1, "filename": "Lunas-0.3.9-py3-none-any.whl", "has_sig": false, "md5_digest": "4ab3b6de903fab4eb2ce94ccdbe3a71e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18106, "upload_time": "2020-07-29T07:46:27", "upload_time_iso_8601": "2020-07-29T07:46:27.438782Z", "url": "https://files.pythonhosted.org/packages/ab/65/d7a65f7354bf0e2940175cbbd3a927b15573152d43ea461886e6ee274d5d/Lunas-0.3.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1c419770eb936d65a8103e71d7048138", "sha256": "5d3c95f824e76177a26860b495040f979d473997f0d408320a1f10f297096de5" }, "downloads": -1, "filename": "Lunas-0.3.9.tar.gz", "has_sig": false, "md5_digest": "1c419770eb936d65a8103e71d7048138", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15423, "upload_time": "2020-07-29T07:46:30", "upload_time_iso_8601": "2020-07-29T07:46:30.478609Z", "url": "https://files.pythonhosted.org/packages/ea/94/c89bdc71d6426774d2abb09036e6edd39fd03fa23c5d80a2a4de5bea59f7/Lunas-0.3.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "992200315f0ca24cc51ab35dee0c6cf6", "sha256": "6f381936455046ce41d6d1266e3f34921baccbc0b817baca7c73e8694576c4f6" }, "downloads": -1, "filename": "Lunas-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "992200315f0ca24cc51ab35dee0c6cf6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19169, "upload_time": "2020-08-28T05:20:34", "upload_time_iso_8601": "2020-08-28T05:20:34.825897Z", "url": "https://files.pythonhosted.org/packages/91/7f/61d9868ab2c033821164ad8fb64652d67a7570474291cc05567f85bdbc68/Lunas-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c425aed147cf237f7f24ec5b000bd37a", "sha256": "5b91def436cb5549a34aed5e19628e54353ca6e4e8434ce7740a017b67d2425c" }, "downloads": -1, "filename": "Lunas-0.4.0.tar.gz", "has_sig": false, "md5_digest": "c425aed147cf237f7f24ec5b000bd37a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 16048, "upload_time": "2020-08-28T05:20:36", "upload_time_iso_8601": "2020-08-28T05:20:36.982361Z", "url": "https://files.pythonhosted.org/packages/14/5f/3b3243afc9dd150436731fbe6ab206509cb28f33966a3ccbb740f3b2b396/Lunas-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "d16306d388b570b69b21109bdb1e6ae4", "sha256": "5fb976f3aa0e7432a7e2e73df2db09b93993c5765c702812e700c68475f0e48e" }, "downloads": -1, "filename": "Lunas-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d16306d388b570b69b21109bdb1e6ae4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19173, "upload_time": "2022-01-06T08:05:13", "upload_time_iso_8601": "2022-01-06T08:05:13.278130Z", "url": "https://files.pythonhosted.org/packages/83/73/3ce2fe25ee14d402d007ded8c3197b87f0ffb20132283d5a2f6e34b7e80c/Lunas-0.4.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5a80f65ac15f5e5238445a75b41ec8f4", "sha256": "cca42988976f2b34e0d1f3fd1693e7f817989d957b73f13ccbc06dc05aeb2e36" }, "downloads": -1, "filename": "Lunas-0.4.1.tar.gz", "has_sig": false, "md5_digest": "5a80f65ac15f5e5238445a75b41ec8f4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 16008, "upload_time": "2022-01-06T08:05:15", "upload_time_iso_8601": "2022-01-06T08:05:15.772593Z", "url": "https://files.pythonhosted.org/packages/24/57/36a59e096ce30bd01a6d3c50010abf3cca99c908664a21f3d422668ec3d5/Lunas-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "fdd0e73bedede8c8d1f23e937ece2265", "sha256": "768ad83efcea452e3589e09d8b5ff476698f506290052459c3e80e2c94d43f40" }, "downloads": -1, "filename": "Lunas-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fdd0e73bedede8c8d1f23e937ece2265", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19000, "upload_time": "2022-01-12T11:49:50", "upload_time_iso_8601": "2022-01-12T11:49:50.958996Z", "url": "https://files.pythonhosted.org/packages/ae/04/546cd6925be6a61433a507830022e8b883e867edef22952b7e3d0c15e94c/Lunas-0.4.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "273a62c9d9b82d858b351ec589d1a1b9", "sha256": "8c9fa2c96a2992b511b49f7d80cbde48003fc5d7f57cf13c0f4a491c7327d714" }, "downloads": -1, "filename": "Lunas-0.4.2.tar.gz", "has_sig": false, "md5_digest": "273a62c9d9b82d858b351ec589d1a1b9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15864, "upload_time": "2022-01-12T11:49:52", "upload_time_iso_8601": "2022-01-12T11:49:52.764412Z", "url": "https://files.pythonhosted.org/packages/a9/ec/05ffa31971a0012a448b4994d6a2d0b70b75190f548e5fb33531d297ba82/Lunas-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2a0": [ { "comment_text": "", "digests": { "md5": "ccc552c18ac7f0120834b054eb3b6596", "sha256": "f5ff3d8e3bd06801e92500267d78885c5c2e5c13ae8170f65c95ddc8a3a61d20" }, "downloads": -1, "filename": "Lunas-0.4.2a0-py3-none-any.whl", "has_sig": false, "md5_digest": "ccc552c18ac7f0120834b054eb3b6596", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19015, "upload_time": "2022-01-12T11:54:13", "upload_time_iso_8601": "2022-01-12T11:54:13.722740Z", "url": "https://files.pythonhosted.org/packages/78/6e/355f4a7ef696e1807b584b0b32f375b0630f0adda21ee4687b742e42e7b4/Lunas-0.4.2a0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "84453d79b8226a9dcd0ee528a0102c61", "sha256": "b18d461ff78ba3c2c7c52e5ad3ecccb161d0efc84388dc16ab18eaf114f2d61c" }, "downloads": -1, "filename": "Lunas-0.4.2a0.tar.gz", "has_sig": false, "md5_digest": "84453d79b8226a9dcd0ee528a0102c61", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15850, "upload_time": "2022-01-12T11:54:15", "upload_time_iso_8601": "2022-01-12T11:54:15.686061Z", "url": "https://files.pythonhosted.org/packages/d8/3b/615417a671dfc1883da31529a28ebe55908d09289ca8c5ee063202e60ee7/Lunas-0.4.2a0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "141b56e9376e2e90592a34f317c1cc8a", "sha256": "4ebc18bcdae2885b1fb50a2d4256278fe3dbc9fd8349bf067ba38d1861036be4" }, "downloads": -1, "filename": "Lunas-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "141b56e9376e2e90592a34f317c1cc8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18991, "upload_time": "2022-01-12T11:55:40", "upload_time_iso_8601": "2022-01-12T11:55:40.792671Z", "url": "https://files.pythonhosted.org/packages/40/76/f37a31bc4cee4581df4859ef4156d3dc504327025955d3bea2a985cdc6a5/Lunas-0.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2382b404bd4136126b8d56afba7f156f", "sha256": "86af61e754cf1443242ed371b1aa57e80cb749f0b13fcf44e4f0fa54307eeca4" }, "downloads": -1, "filename": "Lunas-0.5.0.tar.gz", "has_sig": false, "md5_digest": "2382b404bd4136126b8d56afba7f156f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15840, "upload_time": "2022-01-12T11:55:43", "upload_time_iso_8601": "2022-01-12T11:55:43.363286Z", "url": "https://files.pythonhosted.org/packages/71/1d/db7f458bbdbc70387fdc21bbb3b24c784bbae6f1f60c9a4ea3de6eef14db/Lunas-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "9d6c83265faed27b083f88eb04121d3b", "sha256": "86c1b42c2c12f224dd8c73980a3f6dd44af7172ed16298b0c0d127c345e77b02" }, "downloads": -1, "filename": "Lunas-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9d6c83265faed27b083f88eb04121d3b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19098, "upload_time": "2022-01-13T09:01:29", "upload_time_iso_8601": "2022-01-13T09:01:29.109706Z", "url": "https://files.pythonhosted.org/packages/a5/bc/a71590fdedb7372d6588f0b2eab82dc71ffbc18a103f3293ccc26f5607ff/Lunas-0.5.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "75c6e4bcb2352ef7be568d29dabdd6a5", "sha256": "169f8be8f1d533e1cbc60b54859f89e9a8f2a98214987e2224c23080ddafc77e" }, "downloads": -1, "filename": "Lunas-0.5.1.tar.gz", "has_sig": false, "md5_digest": "75c6e4bcb2352ef7be568d29dabdd6a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15996, "upload_time": "2022-01-13T09:01:30", "upload_time_iso_8601": "2022-01-13T09:01:30.987016Z", "url": "https://files.pythonhosted.org/packages/78/a5/4e4e93c0a8814fb3b0e83f420b3ff33c81599b55b2bc971edfe2cb8fe387/Lunas-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9d6c83265faed27b083f88eb04121d3b", "sha256": "86c1b42c2c12f224dd8c73980a3f6dd44af7172ed16298b0c0d127c345e77b02" }, "downloads": -1, "filename": "Lunas-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9d6c83265faed27b083f88eb04121d3b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19098, "upload_time": "2022-01-13T09:01:29", "upload_time_iso_8601": "2022-01-13T09:01:29.109706Z", "url": "https://files.pythonhosted.org/packages/a5/bc/a71590fdedb7372d6588f0b2eab82dc71ffbc18a103f3293ccc26f5607ff/Lunas-0.5.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "75c6e4bcb2352ef7be568d29dabdd6a5", "sha256": "169f8be8f1d533e1cbc60b54859f89e9a8f2a98214987e2224c23080ddafc77e" }, "downloads": -1, "filename": "Lunas-0.5.1.tar.gz", "has_sig": false, "md5_digest": "75c6e4bcb2352ef7be568d29dabdd6a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15996, "upload_time": "2022-01-13T09:01:30", "upload_time_iso_8601": "2022-01-13T09:01:30.987016Z", "url": "https://files.pythonhosted.org/packages/78/a5/4e4e93c0a8814fb3b0e83f420b3ff33c81599b55b2bc971edfe2cb8fe387/Lunas-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }