{ "info": { "author": "Maher Deeb", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.6" ], "description": "\n\nFor full documentation please check [ML-Navigator](https://ki-labs.github.io/ML-Navigator/index.html)\n\n\n[![Build Status](https://travis-ci.com/KI-labs/ML-Navigator.svg?token=qeb22MSpJyy4b3twFCDG&branch=master)](https://travis-ci.com/KI-labs/ML-Navigator)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n# Concept\n\nML-Navigator is a tutorial-based Machine Learning framework. The main component of ML-Navigator is the flow.\nA flow is a collection of compact methods/functions that can be stuck together with guidance texts. \n\nThe flow functions as a map which shows the road from point A to point B. The guidance texts function as navigator \ninstructions that help the user to figure out the next step after executing the current step.\n\nLike the car navigator, the user is not forced to follow the path. At any point, the user can take a break to explore \ndata, modify the features and make any necessary changes. The user can always come back to the main path which the flow \ndefines.\n\n> The flows are created by the community for the community.\n\n# Introduction\n\n> ML-Navigator is a free editable maps collection of the data science world.
\n\n## Why ML-Navigator\n\nML-Navigator standardizes exchanging knowledge among data scientists. Junior data scientists\ncan learn and apply data science best-practice in a white-box mode. Senior data scientists can\nautomate many repetitive processes and share experience effectively. Enterprises can standardize\ndata science among different departments.\n\n## Background\nData Science has been attracting smart people who have different backgrounds, \nexperiences, and field knowledge. The transformation journey from other disciplines into \ndata science is not a straight forward process. It is time and effort consuming based on \nthe motivation, the background, and the industry where the data scientist wants to work.\nThe data science new joiners follow multiple paths to sharp their data science skills. \nSome of these paths are:
\n- Online courses: Some E-learning platforms, e.g., LinkedIn-learning, \nprovide practical courses to solve specific data science problems. \nOther platforms, such as Coursera, offer theory-based courses. In LinkedIn-learning \nplatform alone, there are 400+ courses related to data science. Selecting the best \ncourses among all of those numerous courses is a challenge for newbies. Moreover, \nthe theory-based courses require solid mathematical knowledge, especially in \ncalculus and linear algebra.\n- Data Science online platforms: Such platforms, like Kaggle, offer playground or \nprize-based competitions. Junior data scientists can learn a lot by applying their \nknowledge and reading kernels, which data scientists write to share their experience. \nPoorly written code and lack of documentation can be frustrating for newbies who want to \nlearn what happened behind the scenes.\n- Manuals of well-known data science frameworks: There are many open-source frameworks \nwhich provide an industry-proven implementation of many methods that have been used by \ndata scientists. Many of these frameworks don't share the same syntax. Data scientists \nmay need to learn new syntax each time they switch to a new framework.\n- Learning from senior data scientists: Onboarding junior data scientists may require \ntime which senior data scientists don't always have.\n\n\n## To whom is ML-Navigator\n### Data science new joiners\nA new joiner is a person who wants to move into data science from a different discipline.\nA new joiner can also be a person who wants to be a part of the data team but not\n a full-time data scientist, e.g., developers with sufficient coding skills.\nML-Navigator provides the data science new joiners the path to analyze real data.\nIt helps the user to navigate through predefined flows, which are End-2-End data\n science pipelines. The user can load a specific flow and follow the instructions starting\n from reading data until training the model. \nThe user can start with the most straightforward flow and later use more complicated \nflows to train accurate models if needed.\n\n### Senior data scientists\nExperienced data scientists may be interested in automating many processes that they follow\n frequently. They can build a flow for each specific problem type. \n The flow can be created from scratch or by modifying or combining other flows. \n They can share their flows with the community and exchange their experience with other data \n scientists.\n\n\n### ML-Navigator for enterprises\nML-navigator can standardize the data science experience in large enterprises.\nJunior data scientists can be productive and efficient from the first day. The onboarding process\ncan be fast, concrete, but not abstracted.\n\nData scientists may use AutoML to produce multiple types of models as an alternative to digging deep in data and gaining \nnew knowledge. AutoML can create a large number of models. \nHowever, it doesn't guarantee that the user gets the model that satisfies the quality requirements. \nIt needs a long time for testing a wide range of hyperparameters values. \nModel reproducibility can be an issue when creating models using AutoML.\n\n# How-to Guides\n## How to install ML-Navigator\n\nTo install the ML-Navigator Package you need to have `Python 3.6`:\n\nYou can install ML-Navigator using the `pip` tool directly:\n\n`pip install ML-Navigator`\n\nTo install the ML-Navigator Package from the Github repo:\n\n1. clone the git repository:\n\n `$ git clone https://github.com/KI-labs/ML-Navigator.git`
\n `$ cd ML-Navigator`
\n\n\n2. create a directory under the name \"data\" and move your data files to it e.g. \"train.csv\" and \"test.csv\"\n\n3. create a virtual environment\n\n `$ pip install virtualenv`
\n `$ virtualenv venv`
\n `$ source /venv/bin/activate`\n\n4. After setting up the virtual environment, you can install the package using pip command as follows:\n\n `$ pip install .`
\n\n## File Structure\nThe structure of the directories looks like the following\n\n````\n.\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 setup.py\n\u251c\u2500\u2500 MANIFEST.in\n\u251c\u2500\u2500 data\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_0\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_1\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_2\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 flow_3\n\u251c\u2500\u2500 feature_engineering\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 feature_generator.py\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 test.py\n\u251c\u2500\u2500 flows\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 example.yaml\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_0.drawio\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_0.json\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_1.drawio\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_1.json\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_2.drawio\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_2.json\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_3.drawio\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_3.json\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flows.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 utils.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 text_helper.py\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 yaml_reader.py\n\u251c\u2500\u2500 images\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_0_record_middle_size.gif\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 logo.png\n\u251c\u2500\u2500 prediction\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 model_predictor.py\n\u251c\u2500\u2500 preprocessing\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 README.md\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 data_clean.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 data_explorer.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 data_science_help_functions.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 data_transformer.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 data_type_detector.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 json_preprocessor.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 test_loading_data.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 test_preprocessing.py\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 utils.py\n\u251c\u2500\u2500 readme.md\n\u251c\u2500\u2500 requirements.txt\n\u251c\u2500\u2500 training\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 __init__.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 model_evaluator.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 optimizer.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 test_split.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 test_training.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 training.py\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 utils.py\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 validator.py\n\u251c\u2500\u2500 tutorials\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_0.png\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_0.ipynb\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_1.ipynb\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_1.png\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_2.ipynb\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_2.png\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 flow_3.ipynb\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 flow_3.png\n\u251c\u2500\u2500 venv\n\u2514\u2500\u2500 visualization\n \u251c\u2500\u2500 __init__.py\n \u2514\u2500\u2500 visualization.py\n\n````\n\n# Tutorials\n\nCreate a directory under the name \"data\" inside the project root directory.\n\nTo run the tutorials, you can download the \"train.csv\" and \"test.csv\" datasets from Kaggle website:\n\n * inside `./data/flow_0` and `./data/flow_1` store the data from the [House Prices: Advanced Regression Techniques competition](https://www.kaggle.com/c/house-prices-advanced-regression-techniques)\n\n * inside `./data/flow_2` directory store the data from the: [TMDB Box Office Prediction competition](https://www.kaggle.com/c/tmdb-box-office-prediction)\n\nPlease check the tutorials directory: [Tutorials](https://github.com/KI-labs/ML-Navigator/tree/master/tutorials)\n\n# Reference\n\nFor more information please check the documentation: [ML-Navigator](https://ki-labs.github.io/ML-Navigator/index.html)\n\n## Modules\n\n### flows\n\nIt is the core module of the ML-Navigator framework. It contains the flows that are defined as YAML files.\nThe Flow class has multiple methods that get their functionalities from calling other packages (self-implemented or external).\n\n### preprocessing\n\nIt contains the main functions and classes that are used to prepare the data for further processing such as discovering\nthe type of data in each column, encode categorical features and scale numeric features.\n\n## feature_engineering\n\nIt contains functions and classes to produce new features. For example, one-hot encoding.\n\n## visualization\n\nIt contains functions and classes to produce graphs. For example, there are functions for comparing the statistical\n properties of different datasets, visualize the count of the missing values, and drawing histograms.\n\n## training\n\nIt contains the functions and classes to train Machine Learning models. Currently, there are two regression models:\n Ridge linear regression (scikit-learn) and LightGBM.\n\n### prediction\n\nIt contains the functions and classes to predict the target using the pre-trained models. Currently, all trained models are saved locally.\n\n## Other directories\n\n### logs\n\nIt contains the logs messages that are produced by different modules of the framework.\n\n### models\n\nIt contains the trained models saved in pkl format.\n\n### venv\n\nThe virtual environment that should be created by the user\n\n### data\n\nIt contains the data, e.g. `train.csv` and `test.csv`.\n\n## Files:\n\n### requirements.txt\n\nIt contains a list of all packages that are required to run the framework.\n\n## How to apply flows to your data\n\nIt is straightforward. You need to point to the location of your data and the name of the datasets after loading a particular flow.\nCurrently, the framework supports only reading CSV files. Here is an example:\n\n````python\npath = './data'\nfiles_list = ['train.csv','test.csv']\n````\n\n## How to create a flow\n\n### Introduction\n\nFor the first version, we have not prepared a tool for creating a flow in a cool way yet. However, this is one of the main focus in the near future.\n\nThe flow should contain two elements:\n\n1. Visualization: I show a flow as a flowchart. I use a free online tool called draw.io to draw a chart. Feel free to use any other tool or method to visualize a flow.\nYou can use the `drawio` files which are provided in the flows modules to create a visualization of new flows.\n\n2. guidance text: I use YAML files to define the guidance instructions for the flows. Currently, this method is not scalable, and it requires setting the steps manually.\nIn the future, the flows will be created using a user interface, and they will be saved in a database using a unique key for each flow.\n\nEach method in the `Flows` class in the `flows/flow.py` has an ID. Each ID is defined as a string using the variable `function_id`. For example, the method `load_data` has `function_id = 0`.\nIn the `flows/flow_instructions_database.yaml` there are the instruction texts. The instruction texts are defined using an ID (integer). Each text has two variables:\n* `function`: it describes the function or the method which is defined in `flows/flow.py`\n* `guide`: it the guidance text that describe how to use the defined function or the method.\n\nTo build a flow you need to create a JSON file, e.g. `flow_0.json`, that map the `function_id` as a key and the ID of the guidance text that is defined in `flows/flow_instructions_database.yaml`.\n
\nIMPORTANT!!!!!
\nIn the `flow_x.json`:
\n`function_id` refers to the id of the current running function
\nThe ID of the guidance text in the `flow_instructions_database.yaml` refers to the function that should be executed after the current running function that has the `function_id`.\n\n````json\n{\"function_id of running function\": \"the ID of the guidance text of the function that should be executed next\"}\n````\n\nAn example for the mapping:\n````json\n{\"0\": 1}\n````\n\nwhere `function_id = 0` refers to the `load_data` method and value 1 refers to the ID of the method `Encode categorical features` guidance text that should run after the `load_data` method.\n\n### Example of creating the flow_0.json\n\n````json\n{\n \"0\": 1,\n \"1\": 2,\n \"2\": 3,\n \"4\": 1000\n}\n````\n\nThe translation of the JSON object is as follows:\n\n````json\n{\n \"the current function: load the data\": \"the next function: Encode categorical features\",\n \"the current function: Encode categorical features\": \"the next function: Scale numeric features\",\n \"the current function: Scale numeric features\": \"the next function: Train a model\",\n \"the current function: Train a model\": \"the next function: Finish or noting which indicates the end of the flow\"\n}\n````\n\n### Creating new flows components\n\nYou can create your own method inside the `Flows` class in the `flows/flow.py` and assign a unique ID to it by defining the variable `function_id`.\nInside the `flow_instructions_database.yaml` you can create your own guidance text for already exiting methods or for the new methods. You should assign a unique ID for the \nnew created guidance texts. Please include the `function` and `quide` keys to help other users understanding and find your guidance text easily.\nThe key `function` is optional but `quide` is required. You can create multiple new guidance texts for the same defined function but each guidance text should have a unique ID.\n\nWhen creating a flow, the essential information that should be added at the end of each step is what the next step is. Adding an example, which shows how to perform\nthe next level and what are the required variables is beneficial to the user.\n\n# Contribution\n\nYour contributions are always welcome and appreciated. Following are the things you can do to contribute to this project.\n\n## Report a bug\nIf you think you have encountered a bug, and I should know about it, feel free to report it [here](https://github.com/KI-labs/ML-Navigator/issues) and I will take care of it.\n\n## Request a feature\nYou can also request for a feature [here](https://github.com/KI-labs/ML-Navigator/issues), and if it will viable, it will be picked for development.\n\n## Create a pull request\nIt can't get better then this, your pull request will be appreciated by the community. You can get started by picking up any open issues from [here](https://github.com/KI-labs/ML-Navigator/issues) and make a pull request.\n\n## create a new flow:\nIf you want to submit a flow, please provide the following in your pull request:\n1. `flow_x.drawio` and `flow_x.png` where x is an integer that has not been given for other flows yet. Please check the flows module `./flows`
\n\n2. `flow_x.json` where x is is an integer that has not been given for other flows yet and has the same value in `flow_x.drawio`
\n\n3. `flow_x.ipynb` where x is is an integer that has not been given for other flows yet and has the same value in `flow_x.drawio` and in `flow_x.json`.
\nThe Jupyter Notebook `flow_x.ipynb` should work end-2-end without any errors.\n\nSteps to create a pull request\n------------------------------\n\n1. Make a PR to master branch.\n2. Comply with the best practices and guidelines.\n3. It must pass all continuous integration checks and get positive reviews.\n4. After this, changes will be merged.\n\n# License\n\nCopyright 2019 KI labs GmbH\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\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://www.ki-labs.com/", "keywords": "Machine Learning Data Science ML-Navigator tutorial-based data pipelines flows flow", "license": "", "maintainer": "", "maintainer_email": "", "name": "ML-Navigator", "package_url": "https://pypi.org/project/ML-Navigator/", "platform": "", "project_url": "https://pypi.org/project/ML-Navigator/", "project_urls": { "Bug Tracker": "https://github.com/KI-labs/ML-Navigator/issues", "Documentation": "https://ki-labs.github.io/ML-Navigator/index.html", "Homepage": "https://www.ki-labs.com/" }, "release_url": "https://pypi.org/project/ML-Navigator/0.0.32/", "requires_dist": [ "appnope (==0.1.0)", "atomicwrites (==1.3.0)", "attrs (==19.1.0)", "backcall (==0.1.0)", "bayesian-optimization (==1.0.1)", "bleach (==3.1.0)", "blessings (==1.7)", "bokeh (==1.3.4)", "category-encoders (==2.0.0)", "certifi (==2019.6.16)", "chardet (==3.0.4)", "Click (==7.0)", "cloudpickle (==1.2.2)", "cycler (==0.10.0)", "decorator (==4.4.0)", "defusedxml (==0.6.0)", "distributed (==2.6.0)", "docutils (==0.15.2)", "entrypoints (==0.3)", "Flask (==1.1.1)", "fsspec (==0.5.2)", "graphviz (==0.13)", "HeapDict (==1.0.1)", "idna (==2.8)", "importlib-metadata (==0.19)", "ipykernel (==5.1.1)", "ipython (==7.5.0)", "ipython-genutils (==0.2.0)", "ipywidgets (==7.4.2)", "itsdangerous (==1.1.0)", "jedi (==0.14.0)", "Jinja2 (==2.10.1)", "joblib (==0.13.2)", "jsonschema (==3.0.1)", "jupyter-client (==5.2.4)", "jupyter-core (==4.5.0)", "kiwisolver (==1.1.0)", "lightgbm (==2.2.3)", "locket (==0.2.0)", "MarkupSafe (==1.1.1)", "matplotlib (==3.1.0)", "mistune (==0.8.4)", "more-itertools (==7.2.0)", "msgpack (==0.6.2)", "nbconvert (==5.5.0)", "nbformat (==4.4.0)", "notebook (==5.7.8)", "numpy (==1.17.3)", "packaging (==19.1)", "pandas (==0.24.2)", "pandocfilters (==1.4.2)", "parso (==0.5.0)", "partd (==1.0.0)", "patsy (==0.5.1)", "pexpect (==4.7.0)", "pickleshare (==0.7.5)", "Pillow (==6.2.1)", "pkginfo (==1.5.0.1)", "pluggy (==0.12.0)", "prometheus-client (==0.7.1)", "prompt-toolkit (==2.0.9)", "psutil (==5.6.3)", "ptyprocess (==0.6.0)", "py (==1.8.0)", "Pygments (==2.4.2)", "pyparsing (==2.4.0)", "pyrsistent (==0.15.2)", "pytest (==5.0.1)", "python-dateutil (==2.8.0)", "pytz (==2019.1)", "PyYAML (==5.1.1)", "pyzmq (==18.0.1)", "readme-renderer (==24.0)", "requests (==2.22.0)", "requests-toolbelt (==0.9.1)", "rrcf (==0.3.2)", "scikit-learn (==0.21.2)", "scipy (==1.3.0)", "seaborn (==0.9.0)", "Send2Trash (==1.5.0)", "six (==1.12.0)", "sortedcontainers (==2.1.0)", "sphinx-theme (==1.0)", "statsmodels (==0.10.1)", "tblib (==1.5.0)", "terminado (==0.8.2)", "testpath (==0.4.2)", "toolz (==0.10.0)", "tornado (==6.0.2)", "tqdm (==4.35.0)", "traitlets (==4.3.2)", "twine (==1.14.0)", "urllib3 (==1.25.3)", "wcwidth (==0.1.7)", "webencodings (==0.5.1)", "Werkzeug (==0.15.5)", "widgetsnbextension (==3.4.2)", "xgboost (==0.90)", "zict (==1.0.0)", "zipp (==0.5.2)" ], "requires_python": ">=3.6", "summary": "ML-Navigator is a tutorial-based Machine Learning framework. The main component of ML-Navigator is the flow. A flow is a collection of compact methods/functions that can be stuck together with guidance texts.", "version": "0.0.32", "yanked": false, "yanked_reason": null }, "last_serial": 6099443, "releases": { "0.0.1": [], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3a76f5ec43788679ee5b59ca0b7b5881", "sha256": "b41048772ba479158fdf69454a922b18f8bc99a78a535eeb807d6a2f18bf4110" }, "downloads": -1, "filename": "ML_Navigator-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3a76f5ec43788679ee5b59ca0b7b5881", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 54576, "upload_time": "2019-09-11T12:00:04", "upload_time_iso_8601": "2019-09-11T12:00:04.142781Z", "url": "https://files.pythonhosted.org/packages/05/09/7d2a384af6c5d4f04511a998085e98f4c435718b4c4e5340aee1679cc9e0/ML_Navigator-0.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "04f31b2cfe12cbc5e32ffe25291e5a3e", "sha256": "5b7e572c4550e0bf63fff4464eaf456c5525833bbe029737d614cfff1647434f" }, "downloads": -1, "filename": "ML_Navigator-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "04f31b2cfe12cbc5e32ffe25291e5a3e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 69803, "upload_time": "2019-09-23T09:48:33", "upload_time_iso_8601": "2019-09-23T09:48:33.093469Z", "url": "https://files.pythonhosted.org/packages/01/1a/de2b6990a0fb932e7a38ab0a52ba447fcb401da3e59df9272b6ea4a7a5ab/ML_Navigator-0.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1a14b32322f9973ee18555f6619d921d", "sha256": "7bf1da4dfab53f8456f365dd1267bddc4ac0ccd9e336c7ad638dcb5b367d9dd5" }, "downloads": -1, "filename": "ML-Navigator-0.0.3.tar.gz", "has_sig": false, "md5_digest": "1a14b32322f9973ee18555f6619d921d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 54490, "upload_time": "2019-09-23T09:48:34", "upload_time_iso_8601": "2019-09-23T09:48:34.856326Z", "url": "https://files.pythonhosted.org/packages/6b/9f/25413f2623aff13b272ce1a976ee43717dd8e14dd3a5137befb59d74e8c6/ML-Navigator-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.31": [ { "comment_text": "", "digests": { "md5": "c3e34dc40e0428a7dcc588065545ba08", "sha256": "37e050fc774da986d594b41a7b03bcf8fbb00437e8ea4374c7813eab847dac5a" }, "downloads": -1, "filename": "ML_Navigator-0.0.31-py3-none-any.whl", "has_sig": false, "md5_digest": "c3e34dc40e0428a7dcc588065545ba08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 74622, "upload_time": "2019-10-21T08:32:35", "upload_time_iso_8601": "2019-10-21T08:32:35.509141Z", "url": "https://files.pythonhosted.org/packages/ca/df/4a2c0418e3ffd130fa82ff11c8bc32d7a5f5c22639df18ad642e25141675/ML_Navigator-0.0.31-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8f0aa5b20519e340be2b55002c3afc82", "sha256": "c7949115c0a3c7ea275ab7398a89e00c3c1bed2b53a456a04490d24d4808a41e" }, "downloads": -1, "filename": "ML-Navigator-0.0.31.tar.gz", "has_sig": false, "md5_digest": "8f0aa5b20519e340be2b55002c3afc82", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 55679, "upload_time": "2019-10-21T08:32:37", "upload_time_iso_8601": "2019-10-21T08:32:37.898784Z", "url": "https://files.pythonhosted.org/packages/8c/98/6e20f67304bb6ce0d938e43ffe62d8d92f91d97c4c3cc9f6e182f3f53aaa/ML-Navigator-0.0.31.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.32": [ { "comment_text": "", "digests": { "md5": "6ae0f9e0a3b2bcb466213bdbf3a3481b", "sha256": "dc4d86e84744c828d44a7e3f37d04e6173c1ac4cc95d0db2bb995d5648b7c9aa" }, "downloads": -1, "filename": "ML_Navigator-0.0.32-py3-none-any.whl", "has_sig": false, "md5_digest": "6ae0f9e0a3b2bcb466213bdbf3a3481b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 79250, "upload_time": "2019-11-08T14:16:18", "upload_time_iso_8601": "2019-11-08T14:16:18.075205Z", "url": "https://files.pythonhosted.org/packages/5e/dc/71e2925fc2642305156e1af41e5acd9f5315ce3b41450820462b2a356265/ML_Navigator-0.0.32-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "24580c043d91aa9964f8336bd5efb407", "sha256": "4e614e24adf7398f930accfb133827e6151d9c651314566204123c39153c4ba2" }, "downloads": -1, "filename": "ML-Navigator-0.0.32.tar.gz", "has_sig": false, "md5_digest": "24580c043d91aa9964f8336bd5efb407", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 59902, "upload_time": "2019-11-08T14:16:19", "upload_time_iso_8601": "2019-11-08T14:16:19.651282Z", "url": "https://files.pythonhosted.org/packages/9a/b2/3424de7740aafa7fa208280639a5d213ca8bf511a11ed54e74602e7d2f88/ML-Navigator-0.0.32.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6ae0f9e0a3b2bcb466213bdbf3a3481b", "sha256": "dc4d86e84744c828d44a7e3f37d04e6173c1ac4cc95d0db2bb995d5648b7c9aa" }, "downloads": -1, "filename": "ML_Navigator-0.0.32-py3-none-any.whl", "has_sig": false, "md5_digest": "6ae0f9e0a3b2bcb466213bdbf3a3481b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 79250, "upload_time": "2019-11-08T14:16:18", "upload_time_iso_8601": "2019-11-08T14:16:18.075205Z", "url": "https://files.pythonhosted.org/packages/5e/dc/71e2925fc2642305156e1af41e5acd9f5315ce3b41450820462b2a356265/ML_Navigator-0.0.32-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "24580c043d91aa9964f8336bd5efb407", "sha256": "4e614e24adf7398f930accfb133827e6151d9c651314566204123c39153c4ba2" }, "downloads": -1, "filename": "ML-Navigator-0.0.32.tar.gz", "has_sig": false, "md5_digest": "24580c043d91aa9964f8336bd5efb407", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 59902, "upload_time": "2019-11-08T14:16:19", "upload_time_iso_8601": "2019-11-08T14:16:19.651282Z", "url": "https://files.pythonhosted.org/packages/9a/b2/3424de7740aafa7fa208280639a5d213ca8bf511a11ed54e74602e7d2f88/ML-Navigator-0.0.32.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }