{ "info": { "author": "JRC-SRU on behalf of UNECE's GearShifting TF", "author_email": "ankostis@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Manufacturing", "Intended Audience :: Science/Research", "License :: OSI Approved :: European Union Public Licence 1.1 (EUPL 1.1)", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "################################################################\nwltp: generate WLTC gear-shifts based on vehicle characteristics\n################################################################\n|dev-status| |build-status| |cover-status| |docs-status| |pypi-status| |downloads-count| |github-issues|\n\n:release: 0.1.2a0\n:date: 2019-06-05 22:10:33\n:documentation: https://wltp.readthedocs.org/ (build-date: x.x.x)\n:source: https://github.com/JRCSTU/wltp\n:pypi-repo: https://pypi.python.org/pypi/wltp\n:keywords: UNECE, automotive, car, cars, driving, engine, fuel-consumption, gears, gearshifts,\n rpm, simulation, simulator, standard, vehicle, vehicles, wltc, nedc\n:Copyright: 2013-2014 European Commission (`JRC-IET `_)\n:License: `EUPL 1.1+ `_\n\nA python package to generate the *gear-shifts* of Light-duty vehicles\nrunning the **WLTP** driving-cycles, according to **UNECE**'s **GTRs**.\n\n.. docs/wltc_class3b.png\n :align: center\n\n **Figure 1:** *WLTP cycle for class-3b Vehicles*\n\n\n.. Attention::\n This *wltp* python project is still in *alpha* stage, in the send that\n its results are not \"correct\" by the standard, and no WLTP dyno-tests should rely\n currently on them.\n\n Some of the known deficiencies are described in these places:\n\n * In the doc(`CHANGES`).\n * Presented in the diagrams of the doc(`metrics`) section.\n * Imprinted in the mod(`~wltp.test.wltp_db_tests`) test-case\n which automatically compares, on each build, the mean RPMs & Gears of this program \n against Heinz's *phase-1a* (end of 2014) MSAccess, \n for a pre-determined set of *Heinz-db* vehicles.\n Currently, genrated mean-RPMs differ from Heinz-db < 0.5% and \n gears < 5% for a 1800-step class-3 cycle.\n\n.. _end-opening:\n.. contents:: Table of Contents\n :backlinks: top\n.. _begin-intro:\n\nIntroduction\n============\n\nOverview\n--------\nThe calculator accepts as input the vehicle's technical data, along with parameters for modifying the execution\nof the **WLTC** cycle, and it then spits-out the gear-shifts of the vehicle, the attained speed-profile,\nand any warnings. It does not calculate any |CO2| emissions.\n\n\nAn \"execution\" or a \"run\" of an experiment is depicted in the following diagram::\n\n .---------------------. .----------------------------.\n ; Input-DataModel ; ; Output-DataModel ;\n ;---------------------; ;----------------------------;\n ; +--vehicle ; ____________ ; +---... ;\n ; +--params ; | | ; +--cycle_run: ;\n ; +--wltc_data ; ==> | Cycle | ==> ; t v_class gear ... ;\n ; ; | Generator | ; -------------------- ;\n ; ; |____________| ; 00 0.0 1 ;\n ; ; ; 01 1.3 1 ;\n ; ; ; 02 5.5 1 ;\n ; ; ; ... ;\n '---------------------' '----------------------------.\n\nThe *Input & Output DataModels* are instances of **pandas-model**, trees of strings and numbers, assembled with:\n\n- sequences,\n- dictionaries,\n- class(`pandas.DataFrame`),\n- class(`pandas.Series`), and\n- URI-references to other model-trees.\n\n\nQuick-start\n-----------\n\n.. Note::\n The program runs on **Python-2.7+** and **Python-3.3+** (preferred) and requires\n **numpy/scipy**, **pandas** and **win32** libraries along with their *native backends* to be installed.\n If you do not have such an environment already installed, please read doc(`install`) section below for\n suitable distributions such as |winpython|_ or |anaconda|_.\n\nAssuming that you have a working python-environment, open a *command-shell*,\n(in *Windows* use program(`cmd.exe`) BUT ensure program(`python.exe`) is in its ``env[$PATH]``),\nyou can try the following commands:\n\n.. Tip::\n The commands beginning with ``$``, below, imply a *Unix* like operating system with a *POSIX* shell\n (*Linux*, *OS X*). Although the commands are simple and easy to translate in its *Windows* ``cmd.exe`` counterpart,\n it would be worthwile to install `Cygwin `_ to get the same environment on *Windows*.\n If you choose to do that, include also the following packages in the *Cygwin*'s installation wizard::\n\n * git, git-completion\n * make, zip, unzip, bzip2, dos2unix\n * openssh, curl, wget\n\n But do not install/rely on cygwin's outdated python environment.\n\n:Install:\n .. code-block:: bash\n\n $ pip install wltp ## Use `--pre` if version-string has a build-suffix.\n $ wltp --winmenus ## Adds StartMenu-items, Windows only.\n\n Or in case you need the very latest from *master* branch :\n\n .. code-block:: bash\n\n $ pip install git+git://github.com/ankostis/wltp.git@master --pre\n\n See: doc(`install`)\n\n:Cmd-line:\n .. code-block:: bash\n\n $ wltp --version\n 0.1.2a0\n\n $ wltp --help\n ...\n\n See: ref: *cmd-line-usage*\n\n:Excel:\n .. code-block:: bash\n\n $ wltp --excelrun ## Windows & OS X only\n\n See: ref: *excel-usage*\n\n:Python-code:\n .. code-block:: python\n\n from wltp.experiment import Experiment\n\n input_model = { ... } ## See also \"Python Usage\" for model contents.\n exp = Experiment(input_model)\n output_model = exp.run()\n print('Results: \\n%s' % output_model['cycle_run'])\n\n See: ref: *python-usage*\n\n\n\n.. _wltp-install:\n\nInstall\n=======\nCurrent version(x.x.x) runs on **Python-2.7+** and **Python-3.3+** and requires\n**numpy/scipy**, **pandas** and **win32** libraries along with their *native backends* to be installed.\n\nIt has been tested under *Windows* and *Linux* and *Python-3.3+* is the preferred interpreter,\ni.e, the *Excel* interface and desktop-UI runs only with it.\n\nIt is distributed on `Wheels `_.\n\n\nPython installation\n-------------------\n\n.. Warning::\n On *Windows* it is strongly suggested **NOT to install the standard CPython distribution**,\n unless:\n\n a) you have *administrative priviledges*,\n b) you are an experienced python programmer, so that\n c) you know how to hunt dependencies from *PyPi* repository and/or\n the `Unofficial Windows Binaries for Python Extension Packages `_.\n\nAs explained above, this project depends on packages with *native-backends* that require the use\nof *C* and *Fortran* compilers to build from sources.\nTo avoid this hassle, you should choose one of the user-friendly distributions suggested below.\n\nBelow is a matrix of the two suggested self-wrapped python distributions for running this program\n(we excluded here default *python* included in *linux*). Both distributions:\n\n- are free (as of freedom),\n- do not require *admin-rights* for installation in *Windows*, and\n- have been tested to run successfully this program (also tested on default *linux* distros).\n\n+-----------------+-------------------------------------------+-------------------------------------------+\n| *Distributions* | |winpython|_ | |anaconda|_ |\n| | | |\n+=================+===========================================+===========================================+\n| *Platform* | **Windows** | **Windows**, **Mac OS**, **Linux** |\n+-----------------+-------------------------------------------+-------------------------------------------+\n| *Ease of* | Fair | - *Anaconda:* Easy |\n| | | - *MiniConda:* Moderate |\n| | Currently (March-2015) it | |\n| | requires fiddling with the | |\n| *Installation* | ``env[$PATH]`` after install. | |\n| | | |\n| | | |\n+-----------------+-------------------------------------------+-------------------------------------------+\n| *Ease of Use* | Easy | Moderate |\n| | | |\n| | | Should use command(`conda`) and/or |\n| | | command(`pip`) |\n| | | depending on whether a package |\n| | | contains native libraries |\n| | | |\n+-----------------+-------------------------------------------+-------------------------------------------+\n| *# of Packages* | Only what's included in the | Many 3rd-party packages |\n| | downloaded-archive | uploaded by users |\n| | | |\n| | | |\n+-----------------+-------------------------------------------+-------------------------------------------+\n| *Notes* | After installation, see *faq* for: | - Check also the lighter `miniconda |\n| | | `_. |\n| | - Adding your installation in | - For installing native-dependencies |\n| | ``env[$PATH]`` | with command(`conda`) see files: |\n| | | - file(`requirements/miniconda.txt`) |\n| | | - file(`.travis.yaml`) |\n| | | |\n+-----------------+-------------------------------------------+-------------------------------------------+\n| | Check also installation instructions from `the pandas site |\n| | `_. |\n| | |\n+-----------------+-------------------------------------------+-------------------------------------------+\n\n\n\nPackage installation\n--------------------\n\nBefore installing it, make sure that there are no older versions left over\non the python installation you are using.\nTo cleanly uninstall it, run this command until you cannot find any project installed:\n\n.. code-block:: bash\n\n $ pip uninstall wltp ## Use `pip3` if both python-2 & 3 are in PATH.\n\n\nYou can install the project directly from the |pypi|_ the \"standard\" way,\nby typing the command(`pip`) in the console:\n\n .. code-block:: bash\n\n $ pip install wltp\n\n- If you want to install a *pre-release* version (the version-string is not plain numbers, but\n ends with ``alpha``, ``beta.2`` or something else), use additionally option(`--pre`).\n\n.. code-block:: bash\n\n $ pip install wltp\n\n- Also you can install the very latest version straight from the sources:\n\n .. code-block:: bash\n\n $ pip install git+git://github.com/ankostis/wltp.git --pre\n\n- If you want to upgrade an existing instalation along with all its dependencies,\n add also option(`--upgrade`) (or option(`-U`) equivalently), but then the build might take some\n considerable time to finish. Also there is the possibility the upgraded libraries might break\n existing programs(!) so use it with caution, or from within a |virtualenv|_.\n\n- To install it for different Python environments, repeat the procedure using\n the appropriate program(`python.exe`) interpreter for each environment.\n\n- .. Tip::\n To debug installation problems, you can export a non-empty ``env[$DISTUTILS_DEBUG]``\n and *distutils* will print detailed information about what it is doing and/or\n print the whole command line when an external program (like a C compiler) fails.\n\n\nAfter installation, it is important that you check which version is visible in your ``env[$PATH]``:\n\n.. code-block:: bash\n\n $ wltp --version\n 0.1.2a0\n\n\nTo install for different Python versions, repeat the procedure for every required version.\n\n\n\nOlder versions\n--------------\nAn additional purpose of the versioning schema of the project is to track which specific version\nof the GTR it implements.\nGiven a version number ``MAJOR.MINOR.PATCH``, the ``MAJOR`` part tracks the GTR phase implemented.\nSee the \"GTR version matrix\" section in doc(`CHANGES`) for the mapping of MAJOR-numbers to GTR versions.\n\nTo install an older released version issue the console command:\n\n.. code-block:: bash\n\n $ pip install wltp=1.1.1 ## Use `--pre` if version-string has a build-suffix.\n\nor alternatively straight from the sources:\n\n.. code-block:: bash\n\n $ pip install git+git://github.com/ankostis/wltp.git@v0.0.9-alpha.3.1 --pre\n\nOfcourse you can substitute ``v0.0.9-alpha.3.1`` with any slug from \"commits\", \"branches\" or \"releases\"\nthat you will find on project's `github-repo `_).\n\n.. Note::\n If you have another version already installed, you have to use option(`--ignore-installed`) (or option(`-I`)).\n For using the specific version, check this (untested)\n `stackoverflow question `_ .\n\n You can install each version in a separate |virtualenv|_ and shy away from all this.\n Check\n\n\nInstalling from sources\n-----------------------\nIf you download the sources you have more options for installation.\nThere are various methods to get hold of them:\n\n* Download the *source* distribution from |pypi|_.\n* Download a `release-snapshot from github `_\n* Clone the *git-repository* at *github*.\n\n Assuming you have a working installation of `git `_\n you can fetch and install the latest version of the project with the following series of commands:\n\n .. code-block:: bash\n\n $ git clone \"https://github.com/JRCSTU/wltp.git\" wltp.git\n $ cd wltp.git\n $ python setup.py install ## Use `python3` if both python-2 & 3 installed.\n\n\nWhen working with sources, you need to have installed all libraries that the project depends on:\n\n.. code-block:: bash\n\n $ pip install -r requirements/execution.txt .\n\n\nThe previous command installs a \"snapshot\" of the project as it is found in the sources.\nIf you wish to link the project's sources with your python environment, install the project\nin `development mode `_:\n\n.. code-block:: bash\n\n $ python setup.py develop\n\n\n.. Note:: This last command installs any missing dependencies inside the project-folder.\n\n\n\nProject files and folders\n-------------------------\nThe files and folders of the project are listed below::\n\n +--wltp/ ## (package) The python-code of the calculator\n | +--cycles/ ## (package) The python-code for the WLTC data\n | +--test/ ## (package) Test-cases and the wltp_db\n | +--model ## (module) Describes the data and their schema for the calculation\n | +--experiment ## (module) The calculator\n | +--plots ## (module) Diagram-plotting code and utilities\n +--docs/ ## Documentation folder\n | +--pyplots/ ## (scripts) Plot the metric diagrams embeded in the README\n +--devtools/ ## (scripts) Preprocessing of WLTC data on GTR and the wltp_db\n | +--run_tests.sh ## (script) Executes all TestCases\n +--setup.py ## (script) The entry point for `setuptools`, installing, testing, etc\n +--requirements/ ## (txt-files) Various pip-dependencies for tools.\n +--README.rst\n +--CHANGES.rst\n +--LICENSE.txt\n\n\n\n.. _wltp-usage:\n\nUsage\n=====\n.. _cmd-line-usage:\n\nCmd-line usage\n--------------\n.. Warning:: Not implemented in yet.\n\nThe command-line usage below requires the Python environment to be installed, and provides for\nexecuting an experiment directly from the OS's shell (i.e. program(`cmd`) in windows or program(`bash`) in POSIX),\nand in a *single* command. To have precise control over the inputs and outputs\n(i.e. experiments in a \"batch\" and/or in a design of experiments)\nyou have to run the experiments using the API python, as explained below.\n\n\nThe entry-point script is called program(`wltp`), and it must have been placed in your ``env[$PATH]``\nduring installation. This script can construct a *model* by reading input-data\nfrom multiple files and/or overriding specific single-value items. Conversely,\nit can output multiple parts of the resulting-model into files.\n\nTo get help for this script, use the following commands:\n\n.. code-block:: bash\n\n $ wltp --help ## to get generic help for cmd-line syntax\n $ wltcmdp.py -M vehicle/full_load_curve ## to get help for specific model-paths\n\n\nand then, assuming ``vehicle.csv`` is a CSV file with the vehicle parameters\nfor which you want to override the ``n_idle`` only, run the following:\n\n.. code-block:: bash\n\n $ wltp -v \\\n -I vehicle.csv file_frmt=SERIES model_path=params header@=None \\\n -m vehicle/n_idle:=850 \\\n -O cycle.csv model_path=cycle_run\n\n\n.. _excel-usage:\n\nExcel usage\n-----------\n.. Attention:: Excel-integration requires Python 3 and *Windows* or *OS X*!\n\nIn *Windows* and *OS X* you may utilize the excellent `xlwings `_ library\nto use Excel files for providing input and output to the experiment.\n\nTo create the necessary template-files in your current-directory you should enter:\n\n.. code-block:: console\n\n $ wltp --excel\n\n\nYou could type instead samp(`wltp --excel {file_path}`) to specify a different destination path.\n\nIn *windows*/*OS X* you can type samp(`wltp --excelrun`) and the files will be created in your home-directory\nand the excel will open them in one-shot.\n\nAll the above commands creates two files:\n\nfile(`wltp_excel_runner.xlsm`)\n The python-enabled excel-file where input and output data are written, as seen in the screenshot below:\n\n .. docs/xlwings_screenshot.png\n :scale: 50%\n :alt: Screenshot of the `wltp_excel_runner.xlsm` file.\n\n After opening it the first tie, enable the macros on the workbook, select the python-code at the left and click\n the menuselection(`Run Selection as Pyhon`) button; one sheet per vehicle should be created.\n\n The excel-file contains additionally appropriate *VBA* modules allowing you to invoke *Python code*\n present in *selected cells* with a click of a button, and python-functions declared in the python-script, below,\n using the ``mypy`` namespace.\n\n To add more input-columns, you need to set as column *Headers* the *json-pointers* path of the desired\n model item (see ref: *python-usage* below,).\n\nfile(`wltp_excel_runner.py`)\n Utility python functions used by the above xls-file for running a batch of experiments.\n\n The particular functions included reads multiple vehicles from the input table with various\n vehicle characteristics and/or experiment parameters, and then it adds a new worksheet containing\n the cycle-run of each vehicle .\n Of course you can edit it to further fit your needs.\n\n\n.. Note:: You may reverse the procedure described above and run the python-script instead.\n The script will open the excel-file, run the experiments and add the new sheets, but in case any errors occur,\n this time you can debug them, if you had executed the script through *LiClipse*, or *IPython*!\n\nSome general notes regarding the python-code from excel-cells:\n\n* On each invocation, the predefined VBA module ``pandalon`` executes a dynamically generated python-script file\n in the same folder where the excel-file resides, which, among others, imports the \"sister\" python-script file.\n You can read & modify the sister python-script to import libraries such as 'numpy' and 'pandas',\n or pre-define utility python functions.\n* The name of the sister python-script is automatically calculated from the name of the Excel-file,\n and it must be valid as a python module-name. Therefore do not use non-alphanumeric characters such as\n spaces(`` ``), dashes(``-``) and dots(``.``) on the Excel-file.\n* On errors, a log-file is written in the same folder where the excel-file resides,\n for as long as **the message-box is visible, and it is deleted automatically after you click 'ok'!**\n* Read http://docs.xlwings.org/quickstart.html\n\n\n.. _python-usage:\n\nPython usage\n------------\nExample python REPL (Read-Eval-Print Loop) example-commands are given below\nthat setup and run an *experiment*.\n\nFirst run command(`python`) or command(`ipython`) and try to import the project to check its version:\n\ncode-block::\n\n >>> import wltp\n\n >>> wltp.__version__ ## Check version once more.\n '0.1.2a0'\n\n >>> wltp.__file__ ## To check where it was installed. # doctest: +SKIP\n /usr/local/lib/site-package/wltp-...\n\n\n.. Tip:\n The use command(`ipython`) is preffered over command(`python`) since it offers various user-friendly\n facilities, such as pressing kbd(`Tab`) for completions, or allowing you to suffix commands with ``?`` or ``??``\n to get help and read their source-code.\n\n Additionally you can copy any python commands starting with ``>>>`` and ``...`` and copy paste them directly\n into the ipython interpreter; it will remove these prefixes.\n But in command(`python`) you have to remove it youself.\n\nIf everything works, create the **pandas-model** that will hold the input-data (strings and numbers)\nof the experiment. You can assemble the model-tree by the use of:\n\n* sequences,\n* dictionaries,\n* class(`pandas.DataFrame`),\n* class(`pandas.Series`), and\n* URI-references to other model-trees.\n\n\nFor instance:\n\ncode-block::\n\n >>> from wltp import model\n >>> from wltp.experiment import Experiment\n >>> from collections import OrderedDict as odic ## It is handy to preserve keys-order.\n\n >>> mdl = odic(\n ... vehicle = odic(\n ... unladen_mass = 1430,\n ... test_mass = 1500,\n ... v_max = 195,\n ... p_rated = 100,\n ... n_rated = 5450,\n ... n_idle = 950,\n ... n_min = None, ## Manufacturers my overridde it\n ... gear_ratios = [120.5, 75, 50, 43, 37, 32],\n ... resistance_coeffs = [100, 0.5, 0.04],\n ... )\n ... )\n\n\nFor information on the accepted model-data, check its **JSON-schema**:\n\ncode-block::\n\n >>> model.json_dumps(model.model_schema(), indent=2) # doctest: +SKIP\n {\n \"properties\": {\n \"params\": {\n \"properties\": {\n \"f_n_min_gear2\": {\n \"description\": \"Gear-2 is invalid when N :< f_n_min_gear2 * n_idle.\",\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"default\": 0.9\n },\n \"v_stopped_threshold\": {\n \"description\": \"Velocity (Km/h) under which (<=) to idle gear-shift (Annex 2-3.3, p71).\",\n \"type\": [\n ...\n\n\nYou then have to feed this model-tree to the class(`~wltp.experiment.Experiment`)\nconstructor. Internally the class(`~wltp.pandel.Pandel`) resolves URIs, fills-in default values and\nvalidates the data based on the project's pre-defined JSON-schema:\n\ncode-block::\n\n >>> processor = Experiment(mdl) ## Fills-in defaults and Validates model.\n\n\nAssuming validation passes without errors, you can now inspect the defaulted-model\nbefore running the experiment:\n\ncode-block::\n\n >>> mdl = processor.model ## Returns the validated model with filled-in defaults.\n >>> sorted(mdl) ## The \"defaulted\" model now includes the `params` branch.\n ['params', 'vehicle']\n >>> 'full_load_curve' in mdl['vehicle'] ## A default wot was also provided in the `vehicle`.\n True\n\n\nNow you can run the experiment:\n\ncode-block::\n\n >>> mdl = processor.run() ## Runs experiment and augments the model with results.\n >>> sorted(mdl) ## Print the top-branches of the \"augmented\" model.\n ['cycle_run', 'params', 'vehicle']\n\n\nTo access the time-based cycle-results it is better to use a class(`pandas.DataFrame`):\n\ncode-block::\n\n >>> import pandas as pd\n >>> df = pd.DataFrame(mdl['cycle_run']); df.index.name = 't'\n >>> df.shape ## ROWS(time-steps) X COLUMNS.\n (1801, 11)\n >>> df.columns\n Index(['v_class', 'v_target', 'clutch', 'gears_orig', 'gears', 'v_real', 'p_available', 'p_required', 'rpm', 'rpm_norm', 'driveability'], dtype='object')\n >>> 'Mean engine_speed: %s' % df.rpm.mean()\n 'Mean engine_speed: 1940.72109939'\n >>> df.describe()\n v_class v_target clutch gears_orig gears \\\n count 1801.000000 1801.000000 1801 1801.000000 1801.000000\n mean 46.506718 46.506718 0.0660744 3.794003 3.683509\n std 36.119280 36.119280 0.2484811 2.278959 2.278108\n ...\n \n v_real p_available p_required rpm rpm_norm\n count 1801.000000 1801.000000 1801.000000 1801.000000 1801.000000\n mean 50.356222 28.846639 4.991915 1940.721099 0.214898\n std 32.336908 15.833262 12.139823 840.959339 0.195142\n ...\n\n >>> processor.driveability_report() # doctest: +SKIP\n ...\n 12: (a: X-->0)\n 13: g1: Revolutions too low!\n 14: g1: Revolutions too low!\n ...\n 30: (b2(2): 5-->4)\n ...\n 38: (c1: 4-->3)\n 39: (c1: 4-->3)\n 40: Rule e or g missed downshift(40: 4-->3) in acceleration?\n ...\n 42: Rule e or g missed downshift(42: 3-->2) in acceleration?\n ...\n\nYou can export the cycle-run results in a CSV-file with the following pandas command:\n\n.. code-block:: pycon\n\n >>> df.to_csv('cycle_run.csv') # doctest: +SKIP\n\n\nFor more examples, download the sources and check the test-cases\nfound under the file(`/wltp/test/`) folder.\n\n\n\n\nIPython notebook usage\n----------------------\nThe list of *IPython notebooks* for wltp is maintained at the `wiki `_\nof the project.\n\nRequirements\n^^^^^^^^^^^^\nIn order to run them interactively, ensure that the following requirements are satisfied:\n\na. A `ipython-notebook server `_ >= v2.x.x is installed for *python-3*,\n it is up, and running.\nb. The *wltp* is installed on your system (see doc(`install`) above).\n\nInstructions\n^^^^^^^^^^^^\n* Visit each *notebook* from the wiki-list that you wish to run and **download** it as file(`ipynb`) file\n from the menu (menuselection(`File|Download as...|IPython Notebook(.ipynb)`)).\n* Locate the downloaded file with your *file-browser* and **drag n' drop** it on the landing page\n of your notebook's server (the one with the folder-list).\n\n\nEnjoy!\n\n\n.. _begin-contribute:\n\nGetting Involved\n================\nThis project is hosted in **github**.\nTo provide feedback about bugs and errors or questions and requests for enhancements,\nuse `github's Issue-tracker `_.\n\n\n\nSources & Dependencies\n----------------------\nTo get involved with development, you need a POSIX environment to fully build it\n(*Linux*, *OSX* or *Cygwin* on *Windows*).\n\nFirst you need to download the latest sources:\n\n.. code-block:: console\n\n $ git clone https://github.com/JRCSTU/wltp.git wltp.git\n $ cd wltp.git\n\n\n.. Admonition:: Virtualenv\n :class: note\n\n You may choose to work in a |virtualenv|_,\n to install dependency libraries isolated from system's ones, and/or without *admin-rights*\n (this is recommended for *Linux*/*Mac OS*).\n\n .. Attention::\n If you decide to reuse stystem-installed packages using option(`--system-site-packages`)\n with ``virtualenv <= 1.11.6``\n (to avoid, for instance, having to reinstall *numpy* and *pandas* that require native-libraries)\n you may be bitten by `bug #461 `_ which\n prevents you from upgrading any of the pre-installed packages with command(`pip`).\n\n.. Admonition:: Liclipse IDE\n :class: note\n\n Within the sources there are two sample files for the comprehensive\n `LiClipse IDE `_:\n\n * file(`eclipse.project`)\n * file(`eclipse.pydevproject`)\n\n Remove the ``eclipse`` prefix, (but leave the dot(``.``)) and import it as \"existing project\" from\n Eclipse's *File*`* menu.\n\n Another issue is caused due to the fact that LiClipse contains its own implementation of *Git*, *EGit*,\n which badly interacts with unix *symbolic-links*, such as the file(`docs/docs`), and it detects\n working-directory changes even after a fresh checkout. To workaround this, Right-click on the above file\n menuselection(`Properties --> Team --> Advanced --> Assume Unchanged`)\n\n\nThen you can install all project's dependencies in *`development mode* using the file(`setup.py`) script:\n\n.. code-block:: console\n\n $ python setup.py --help ## Get help for this script.\n Common commands: (see '--help-commands' for more)\n\n setup.py build will build the package underneath 'build/'\n setup.py install will install the package\n\n Global options:\n --verbose (-v) run verbosely (default)\n --quiet (-q) run quietly (turns verbosity off)\n --dry-run (-n) don't actually do anything\n ...\n\n $ python setup.py develop ## Also installs dependencies into project's folder.\n $ python setup.py build ## Check that the project indeed builds ok.\n\n\nYou should now run the test-cases (see doc(`metrics`)) to check\nthat the sources are in good shape:\n\n.. code-block:: console\n\n $ python setup.py test\n\n\n.. Note:: The above commands installed the dependencies inside the project folder and\n for the *virtual-environment*. That is why all build and testing actions have to go through\n samp(`python setup.py {some_cmd}`).\n\n If you are dealing with installation problems and/or you want to permantly install dependant packages,\n you have to *deactivate* the virtual-environment and start installing them into your *base*\n python environment:\n\n .. code-block:: console\n\n $ deactivate\n $ python setup.py develop\n\n or even try the more *permanent* installation-mode:\n\n .. code-block:: console\n\n $ python setup.py install # May require admin-rights\n\n\n\nDevelopment procedure\n---------------------\nFor submitting code, use ``UTF-8`` everywhere, unix-eol(``LF``) and set ``git --config core.autocrlf = input``.\n\nThe typical development procedure is like this:\n\n1. Modify the sources in small, isolated and well-defined changes, i.e.\n adding a single feature, or fixing a specific bug.\n2. Add test-cases \"proving\" your code.\n3. Rerun all test-cases to ensure that you didn't break anything,\n and check their *coverage* remain above 80%:\n\n .. code-block:: console\n\n $ python setup.py nosetests --with-coverage --cover-package wltp.model,wltp.experiment --cover-min-percentage=80\n\n\n .. Tip:: You can enter just: ``python setup.py test_all`` instead of the above cmd-line\n since it has been *aliased* in the file(`setup.cfg`) file.\n Check this file for more example commands to use during development.\n\n\n4. If you made a rather important modification, update also the doc(`CHANGES`) file and/or\n other documents (i.e. README.rst). To see the rendered results of the documents,\n issue the following commands and read the result html at file(`build/sphinx/html/index.html`):\n\n .. code-block:: console\n\n $ python setup.py build_sphinx # Builds html docs\n $ python setup.py build_sphinx -b doctest # Checks if python-code embeded in comments runs ok.\n\n5. If there are no problems, commit your changes with a descriptive message.\n\n6. Repeat this cycle for other bugs/enhancements.\n7. When you are finished, push the changes upstream to *github* and make a *merge_request*.\n You can check whether your merge-request indeed passed the tests by checking\n its build-status |build-status| on the integration-server's site (TravisCI).\n\n .. Hint:: Skim through the small IPython developer's documentantion on the matter:\n `The perfect pull request `_\n\n\n\nSpecs & Algorithm\n-----------------\nThis program was implemented from scratch based on\nthis download(`GTR specification <23.10.2013 ECE-TRANS-WP29-GRPE-2013-13 0930.docx>`)\n(included in the file(`docs/`) folder). The latest version of this GTR, along\nwith other related documents can be found at UNECE's site:\n\n* http://www.unece.org/trans/main/wp29/wp29wgs/wp29grpe/grpedoc_2013.html\n* https://www2.unece.org/wiki/pages/viewpage.action?pageId=2523179\n* Probably a more comprehensible but older spec is this one:\n https://www2.unece.org/wiki/display/trans/DHC+draft+technical+report\n\nThe WLTC-profiles for the various classes in the file(`devtools/data/cycles/`) folder were generated from the tables\nof the specs above using the file(`devtools/csvcolumns8to2.py`) script, but it still requires\nan intermediate manual step involving a spreadsheet to copy the table into ands save them as CSV.\n\nThen use the file(`devtools/buildwltcclass.py`) to construct the respective python-vars into the\nmod(`wltp/model.py`) sources.\n\n\nData-files generated from Steven Heinz's ms-access ``vehicle info`` db-table can be processed\nwith the file(`devtools/preprocheinz.py`) script.\n\n\nCycles\n^^^^^^\n\n.. docs/wltc_class1.png\n :align: center\n.. docs/wltc_class2.png\n :align: center\n.. docs/wltc_class3a.png\n :align: center\n.. docs/wltc_class3b.png\n :align: center\n\n\n.. _dev-team:\n\nDevelopment team\n----------------\n\n* Author:\n * Kostis Anagnostopoulos\n* Contributing Authors:\n * Heinz Steven (test-data, validation and review)\n * Georgios Fontaras (simulation, physics & engineering support)\n * Alessandro Marotta (policy support)\n\n\n\n.. _begin-glossary:\n\nGlossary\n========\n\nrubric::\n\n WLTP\n The `Worldwide harmonised Light duty vehicles Test Procedure `_,\n a `GRPE` informal working group\n\n UNECE\n The United Nations Economic Commission for Europe, which has assumed the steering role\n on the `WLTP`.\n\n GRPE\n `UNECE` Working party on Pollution and Energy - Transport Programme\n\n GTR\n GTRs\n Any of the *Global Technical Regulation* documents of the `WLTP` .\n\n GS Task-Force\n The Gear-shift Task-force of the `GRPE`. It is the team of automotive experts drafting\n the gear-shifting strategy for vehicles running the `WLTP` cycles.\n\n WLTC\n The family of pre-defined *driving-cycles* corresponding to vehicles with different\n PMR (Power to Mass Ratio). Classes 1,2, 3a & 3b are split in 2, 4, 4 and 4 *parts* respectively.\n\n Unladen mass\n *UM* or *Curb weight*, the weight of the vehicle in running order minus\n the mass of the driver.\n\n Test mass\n *TM*, the representative weight of the vehicle used as input for the calculations of the simulation,\n derived by interpolating between high and low values for the |CO2|-family of the vehicle.\n\n Downscaling\n Reduction of the top-velocity of the original drive trace to be followed, to ensure that the vehicle\n is not driven in an unduly high proportion of \"full throttle\".\n\n pandas-model\n The *container* of data that the gear-shift calculator consumes and produces.\n It is implemented by class(`wltp.pandel.Pandel`) as a mergeable stack of `JSON-schema` abiding trees of\n strings and numbers, formed with sequences, dictionaries, mod(`pandas`)-instances and URI-references.\n\n JSON-schema\n The `JSON schema `_ is an `IETF draft `_\n that provides a *contract* for what JSON-data is required for a given application and how to interact\n with it. JSON Schema is intended to define validation, documentation, hyperlink navigation, and\n interaction control of JSON data.\n You can learn more about it from this `excellent guide `_,\n and experiment with this `on-line validator `_.\n\n JSON-pointer\n JSON Pointer(rfc(`6901`)) defines a string syntax for identifying a specific value within\n a JavaScript Object Notation (JSON) document. It aims to serve the same purpose as *XPath* from the XML world,\n but it is much simpler.\n\n\n\n.. _begin-replacements:\n\n.. |CO2| replace:: CO\\ sub(`2`)\n\n.. |virtualenv| replace:: *virtualenv* (isolated Python environment)\n.. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/\n\n.. |pypi| replace:: *PyPi* repo\n.. _pypi: https://pypi.python.org/pypi/wltp\n\n.. |winpython| replace:: *WinPython*\n.. _winpython: http://winpython.github.io/\n\n.. |anaconda| replace:: *Anaconda*\n.. _anaconda: http://docs.continuum.io/anaconda/\n\n.. |build-status| image:: https://travis-ci.org/ankostis/wltp.svg\n :alt: Integration-build status\n :scale: 100%\n :target: https://travis-ci.org/ankostis/wltp/builds\n\n.. |cover-status| image:: https://coveralls.io/repos/ankostis/wltp/badge.png?branch=master\n :target: https://coveralls.io/r/ankostis/wltp?branch=master\n\n.. |docs-status| image:: https://readthedocs.org/projects/wltp/badge/\n :alt: Documentation status\n :scale: 100%\n :target: https://readthedocs.org/builds/wltp/\n\n.. |pypi-status| image:: https://pypip.in/v/wltp/badge.png\n :target: https://pypi.python.org/pypi/wltp/\n :alt: Latest Version in PyPI\n\n.. |python-ver| image:: https://pypip.in/py_versions/wltp/badge.svg\n :target: https://pypi.python.org/pypi/wltp/\n :alt: Supported Python versions\n\n.. |dev-status| image:: https://pypip.in/status/wltp/badge.svg\n :target: https://pypi.python.org/pypi/wltp/\n :alt: Development Status\n\n.. |downloads-count| image:: https://pypip.in/download/wltp/badge.svg?period=week\n :target: https://pypi.python.org/pypi/wltp/\n :alt: Downloads\n\n.. |github-issues| image:: http://img.shields.io/github/issues/ankostis/wltp.svg\n :target: https://github.com/JRCSTU/wltp/issues\n :alt: Issues count\n\n\n", "description_content_type": "text/x-rst", "docs_url": "https://pythonhosted.org/wltp/", "download_url": "https://github.com/ankostis/wltp/tarball/v0.1.2a0", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/JRCSTU/wltp", "keywords": "automotive,vehicles,Light-Duty-Vehicles,cars,gears,gearshifs,simulator,driving,engine,WLTP,wltc,UNECE,standards", "license": "European Union Public Licence 1.1 or later (EUPL 1.1+)", "maintainer": "", "maintainer_email": "", "name": "wltp", "package_url": "https://pypi.org/project/wltp/", "platform": "", "project_url": "https://pypi.org/project/wltp/", "project_urls": { "Bug Tracker": "https://github.com/JRCSTU/wltp/issues", "Documentation": "https://wltp.readthedocs.io/", "Download": "https://github.com/ankostis/wltp/tarball/v0.1.2a0", "Homepage": "https://github.com/JRCSTU/wltp", "Sources": "https://github.com/JRCSTU/wltp" }, "release_url": "https://pypi.org/project/wltp/0.1.2a0/", "requires_dist": [ "six", "jsonschema (<3,>=2.5)", "numpy", "pandas", "mock ; python_version == \"2.7\"", "nose ; extra == 'dev'", "coverage ; extra == 'dev'", "matplotlib ; extra == 'dev'", "coveralls ; extra == 'dev'", "docopt ; extra == 'dev'", "sphinx (>=1.2) ; extra == 'dev'", "wheel ; extra == 'dev'", "twine ; extra == 'dev'", "pylint ; extra == 'dev'", "black ; extra == 'dev'", "doc8 ; extra == 'dev'", "sphinx-autobuild ; extra == 'dev'", "xlwings ; (sys_platform == \"win32\") and extra == 'dev'", "xlwings ; (sys_platform == \"win32\") and extra == 'excel'", "matplotlib ; extra == 'plot'" ], "requires_python": "", "summary": "wltp: generate WLTC gear-shifts based on vehicle characteristics", "version": "0.1.2a0", "yanked": false, "yanked_reason": null }, "last_serial": 6023808, "releases": { "0.0.7-alpha": [ { "comment_text": "", "digests": { "md5": "30a4a0bedd26f420e4e9809d4f6894cb", "sha256": "4da721a41ce4e47cceabe6a4a53ff0a9560f11d57154060b5d69e93be260ffed" }, "downloads": -1, "filename": "wltp-0.0.7-alpha.tar.gz", "has_sig": true, "md5_digest": "30a4a0bedd26f420e4e9809d4f6894cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2550458, "upload_time": "2014-08-01T01:21:07", "upload_time_iso_8601": "2014-08-01T01:21:07.846319Z", "url": "https://files.pythonhosted.org/packages/10/6c/faf8adafe1d33cdd834d504add1c0450b13ee24125890f943f1eabcf2453/wltp-0.0.7-alpha.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.8-alpha": [ { "comment_text": "", "digests": { "md5": "56b83e0cd70bc268f312b1dc1406477c", "sha256": "ea09cccd922d3bdf3135bd7aebf2c336edecf28d80e8f43b38ba74a758b36a18" }, "downloads": -1, "filename": "wltp-0.0.8-alpha.tar.gz", "has_sig": true, "md5_digest": "56b83e0cd70bc268f312b1dc1406477c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2565284, "upload_time": "2014-08-04T19:15:17", "upload_time_iso_8601": "2014-08-04T19:15:17.929951Z", "url": "https://files.pythonhosted.org/packages/bf/ac/d5ed9ead1e70f3866fb8fd69e4c30c8de244a6b4b4e52f51006f45e5ca3e/wltp-0.0.8-alpha.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.8-alpha.2": [ { "comment_text": "", "digests": { "md5": "09ea9519fe4a57c6a9e02d86f80b9f57", "sha256": "79765c7d73c01b6a58ee48afd88a93dc9a099276f52245063bd9e41f6185d5a9" }, "downloads": -1, "filename": "wltp-0.0.8_alpha.2-py3-none-any.whl", "has_sig": true, "md5_digest": "09ea9519fe4a57c6a9e02d86f80b9f57", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 68847, "upload_time": "2014-12-01T11:25:23", "upload_time_iso_8601": "2014-12-01T11:25:23.740514Z", "url": "https://files.pythonhosted.org/packages/4e/99/53051b066caffd39fa3a21f50e43326a6950678ead9ecf6417e0307c45ff/wltp-0.0.8_alpha.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "76ba89fdd01d0c925de0649950caa8cd", "sha256": "21f627f4e2824582bc3c779b0d58dd70d4beb4ee1444eec447dba753298f870e" }, "downloads": -1, "filename": "wltp-0.0.8-alpha.2.tar.gz", "has_sig": false, "md5_digest": "76ba89fdd01d0c925de0649950caa8cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50818753, "upload_time": "2014-12-01T11:20:06", "upload_time_iso_8601": "2014-12-01T11:20:06.351167Z", "url": "https://files.pythonhosted.org/packages/b7/36/acf316f5b08cbd330a7205815904ca163e6660fe1b7b1d0a08cfc5c2edb6/wltp-0.0.8-alpha.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9-alpha.1": [ { "comment_text": "", "digests": { "md5": "c6dbd596d674989f629292fed15d55e1", "sha256": "87beb05c2895b0ca5cc7afa600c1cf97e57d26d666b23fc00375bc4c48829b9b" }, "downloads": -1, "filename": "wltp-0.0.9-alpha.1.tar.gz", "has_sig": true, "md5_digest": "c6dbd596d674989f629292fed15d55e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54874654, "upload_time": "2014-10-01T16:06:07", "upload_time_iso_8601": "2014-10-01T16:06:07.231347Z", "url": "https://files.pythonhosted.org/packages/ca/a2/326a2e143c74271915fac67fe7720724604fe40d34dffae289be7010449b/wltp-0.0.9-alpha.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9-alpha.3": [ { "comment_text": "", "digests": { "md5": "22ee9dd08efe1364d2e62e4576f2e24a", "sha256": "bcef231665f131eca01f8a9b52679c2f1ae4ea000dc84da66a89dd5682d01578" }, "downloads": -1, "filename": "wltp-0.0.9_alpha.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "22ee9dd08efe1364d2e62e4576f2e24a", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 52912417, "upload_time": "2014-12-01T21:39:46", "upload_time_iso_8601": "2014-12-01T21:39:46.997165Z", "url": "https://files.pythonhosted.org/packages/6b/b7/2e1c5930545396bc3f634e3ef830c262ab82393c1d3667456d65213b87dc/wltp-0.0.9_alpha.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2b8600b263f22097febfee5a4c787382", "sha256": "6939b59d98a4a2b01444e6ba1e819b0ee457a041083a52a36111450688b330d3" }, "downloads": -1, "filename": "wltp-0.0.9-alpha.3.tar.gz", "has_sig": true, "md5_digest": "2b8600b263f22097febfee5a4c787382", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55414544, "upload_time": "2014-12-01T21:34:09", "upload_time_iso_8601": "2014-12-01T21:34:09.475750Z", "url": "https://files.pythonhosted.org/packages/d7/ab/db1122421d692c5973cb3abdf373ab73bdbf195ae1ecf205cee3cfe05da1/wltp-0.0.9-alpha.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9a4": [ { "comment_text": "", "digests": { "md5": "fbc4d8de5525b5272ff3c364b58d6337", "sha256": "5dfa4c191768af8f340e3b32f21c9b13503c8e649d8a5ee65109478d0c3e09e7" }, "downloads": -1, "filename": "wltp-0.0.9a4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "fbc4d8de5525b5272ff3c364b58d6337", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 52929870, "upload_time": "2015-10-05T17:43:58", "upload_time_iso_8601": "2015-10-05T17:43:58.686998Z", "url": "https://files.pythonhosted.org/packages/53/fa/e94190f7fa0539fe7ffa6f8cb17e3367fda6d6f8b5e2c0d00f9fdd915686/wltp-0.0.9a4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7e29631a98f7e97692a07f7f2fecedf9", "sha256": "4a61c43147915e854ae4c3582b39820a62a12716c9bab2a2d5ef5a0b8ec174b7" }, "downloads": -1, "filename": "wltp-0.0.9a4.zip", "has_sig": true, "md5_digest": "7e29631a98f7e97692a07f7f2fecedf9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55869334, "upload_time": "2015-10-05T17:43:05", "upload_time_iso_8601": "2015-10-05T17:43:05.923691Z", "url": "https://files.pythonhosted.org/packages/b6/01/69f15b7df7731e0a747bf6e999552b1893ad1d553c3ef4bb9bf63501a63d/wltp-0.0.9a4.zip", "yanked": false, "yanked_reason": null } ], "0.0.9a5": [ { "comment_text": "", "digests": { "md5": "aee62fa9b6082e9aa03b302209a16ad6", "sha256": "219071507412d7241e895318145debc31f2f47f04393441235f7bce9a16d044c" }, "downloads": -1, "filename": "wltp-0.0.9a5-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "aee62fa9b6082e9aa03b302209a16ad6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 230104, "upload_time": "2017-02-07T04:21:38", "upload_time_iso_8601": "2017-02-07T04:21:38.104853Z", "url": "https://files.pythonhosted.org/packages/1a/a4/20610bb2202ebcf710ded841bd3f94f8280f32742038ed2eb4e91654e84b/wltp-0.0.9a5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bc33d2cb5d33be1c0fb5f0d6d2423db5", "sha256": "f0b2f866c4f11d5b5ba5cc57093bf8642031bec0dbd68017d3d483721a16bb99" }, "downloads": -1, "filename": "wltp-0.0.9a5.tar.gz", "has_sig": true, "md5_digest": "bc33d2cb5d33be1c0fb5f0d6d2423db5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3140995, "upload_time": "2017-02-07T04:22:05", "upload_time_iso_8601": "2017-02-07T04:22:05.162734Z", "url": "https://files.pythonhosted.org/packages/5d/78/23d14e460120bc72faf7d5a84bbd62585468140b392dd1055fb94d4a62f5/wltp-0.0.9a5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0a0": [ { "comment_text": "", "digests": { "md5": "b999f02cf98f86257fb11e3e025f5f51", "sha256": "9a218519eee5a0346690080ca614bf4567e7524f4433700375c96752511e7645" }, "downloads": -1, "filename": "wltp-0.1.0a0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "b999f02cf98f86257fb11e3e025f5f51", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 152181, "upload_time": "2017-02-26T14:38:55", "upload_time_iso_8601": "2017-02-26T14:38:55.127440Z", "url": "https://files.pythonhosted.org/packages/a5/40/8cc97ef56b4613b26e2cd1657f076cfbe028961e81d8db225d720036f5e0/wltp-0.1.0a0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "684cc0cd930dfaf4b56a01a51c4eb75a", "sha256": "6eba9dd906579796ca6c29807ec2257d46df082de6982645f43100fd6bcc9a83" }, "downloads": -1, "filename": "wltp-0.1.0a0.tar.gz", "has_sig": true, "md5_digest": "684cc0cd930dfaf4b56a01a51c4eb75a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 150785, "upload_time": "2017-02-26T14:38:58", "upload_time_iso_8601": "2017-02-26T14:38:58.313046Z", "url": "https://files.pythonhosted.org/packages/6a/3e/33872cde31ba1934b655a9dfe7389d68ec95c8b21e02e649b8a9a3ad0c77/wltp-0.1.0a0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0a1": [ { "comment_text": "", "digests": { "md5": "4d8e027e7167e80ad747e5513c9dc851", "sha256": "a07adcd7cf1d977bfd08cb15a7a57d8dedddcf7e9a821f2e49055eca2fcb3f87" }, "downloads": -1, "filename": "wltp-0.1.0a1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "4d8e027e7167e80ad747e5513c9dc851", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 223222, "upload_time": "2017-03-09T11:49:03", "upload_time_iso_8601": "2017-03-09T11:49:03.001191Z", "url": "https://files.pythonhosted.org/packages/2a/66/482a9250bbf0a4ad12119bfee9fddfee808acb63f292fc7059ffb0be3eac/wltp-0.1.0a1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a6ec1080e391bdcbac16e3c641a44681", "sha256": "84b4f909bac66c4582e74fd58c317db1b792f9eb822814414c06722c3f8e08c5" }, "downloads": -1, "filename": "wltp-0.1.0a1.tar.gz", "has_sig": true, "md5_digest": "a6ec1080e391bdcbac16e3c641a44681", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3135204, "upload_time": "2017-03-09T11:49:25", "upload_time_iso_8601": "2017-03-09T11:49:25.997848Z", "url": "https://files.pythonhosted.org/packages/36/a5/d51666980fa07631168001187052391c6d01e777afe8ad83826a1e4f0119/wltp-0.1.0a1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0a2": [ { "comment_text": "", "digests": { "md5": "5c4947dbd57c46104e9e5e8063d92783", "sha256": "1eca84305a8e2141dfc6cbbbe2209b73b568888d50860794e07bd0e1ce936135" }, "downloads": -1, "filename": "wltp-0.1.0a2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5c4947dbd57c46104e9e5e8063d92783", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 153862, "upload_time": "2017-05-25T17:42:08", "upload_time_iso_8601": "2017-05-25T17:42:08.751997Z", "url": "https://files.pythonhosted.org/packages/2d/2a/feb811e7d6b3184acfe36600673216887d49634d26af7452f7e6df182f0b/wltp-0.1.0a2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cf17dabefca4f859a29cd50b77f13068", "sha256": "e3cb9a4c53629cb708bec12a9fa3f74a2b3aec44eb423e3a1336fafe515ae459" }, "downloads": -1, "filename": "wltp-0.1.0a2.tar.gz", "has_sig": true, "md5_digest": "cf17dabefca4f859a29cd50b77f13068", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 151702, "upload_time": "2017-05-25T17:42:11", "upload_time_iso_8601": "2017-05-25T17:42:11.255163Z", "url": "https://files.pythonhosted.org/packages/6e/eb/056dced643e75f9512ad5474f1e4552cb4454e1e28f1fa4a1b205514ba39/wltp-0.1.0a2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0a3": [ { "comment_text": "", "digests": { "md5": "9427c2b18564a2835e8dc3f6c000e233", "sha256": "042865a69e3673562e66a426cd30a491f1a0adad84f670f8f6b306bf1e2a1241" }, "downloads": -1, "filename": "wltp-0.1.0a3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "9427c2b18564a2835e8dc3f6c000e233", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 161459, "upload_time": "2018-08-23T19:16:13", "upload_time_iso_8601": "2018-08-23T19:16:13.500097Z", "url": "https://files.pythonhosted.org/packages/07/2b/429a9f1ae0c8157356c20792c871367aa486c243b957c50364ea1d38e27c/wltp-0.1.0a3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "72115ec0e3747302ff0a436e4bdbce77", "sha256": "e8f7815fc2c317c02cfed2c61efe86f2a909b5f42c1a197acd41e6b48ea1d234" }, "downloads": -1, "filename": "wltp-0.1.0a3.tar.gz", "has_sig": false, "md5_digest": "72115ec0e3747302ff0a436e4bdbce77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3104416, "upload_time": "2019-05-02T01:03:26", "upload_time_iso_8601": "2019-05-02T01:03:26.315104Z", "url": "https://files.pythonhosted.org/packages/11/54/99ceb6686288588675138b7f0aa6d959e20a073b8a3bef9bd4df81200728/wltp-0.1.0a3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1a0": [ { "comment_text": "", "digests": { "md5": "3726150e9b6f9b60d8ce618687497441", "sha256": "ac2529aad96c2b7bd9619501f173feef0241837c8f00d3e042ff4b273776ff1f" }, "downloads": -1, "filename": "wltp-0.1.1a0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "3726150e9b6f9b60d8ce618687497441", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 165138, "upload_time": "2019-05-25T22:53:05", "upload_time_iso_8601": "2019-05-25T22:53:05.288456Z", "url": "https://files.pythonhosted.org/packages/d6/5d/b112005df7896692ac1a08b6afda3d8c8c09a5cfcb4cc6366077fe4293a3/wltp-0.1.1a0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "006dbdcd25dac0373d0e60a28b50fecb", "sha256": "0e12de3866376af026a0e5d4d9f87f5efcaa6c2642ebb825cb5d45b5b21f94d6" }, "downloads": -1, "filename": "wltp-0.1.1a0.tar.gz", "has_sig": true, "md5_digest": "006dbdcd25dac0373d0e60a28b50fecb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3106545, "upload_time": "2019-05-25T22:53:16", "upload_time_iso_8601": "2019-05-25T22:53:16.906228Z", "url": "https://files.pythonhosted.org/packages/67/35/e7a8e0d3934c309eb8f63d2ccf6073cd802cb24cd2a84788ac610d1f95a2/wltp-0.1.1a0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2a0": [ { "comment_text": "", "digests": { "md5": "6bf6ade0894feeadb2d6209c850ad5f7", "sha256": "2687f9ba7c97fd2ad7b883b1a40422ba7fd3c77ab21b4464dc4a96d1809485eb" }, "downloads": -1, "filename": "wltp-0.1.2a0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "6bf6ade0894feeadb2d6209c850ad5f7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 165114, "upload_time": "2019-06-05T20:15:45", "upload_time_iso_8601": "2019-06-05T20:15:45.354345Z", "url": "https://files.pythonhosted.org/packages/33/b3/72cd36633b52f044c98437819207a5ae10fda894bcf658bfb11adf58e1f1/wltp-0.1.2a0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1c03bfbf071788d99e7139f2a849dddb", "sha256": "82107f71ba85f36cdd4b44c5d4e8595a5dc9a9a737789d2a7e0c867dc043e630" }, "downloads": -1, "filename": "wltp-0.1.2a0.tar.gz", "has_sig": true, "md5_digest": "1c03bfbf071788d99e7139f2a849dddb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3106532, "upload_time": "2019-06-05T20:15:56", "upload_time_iso_8601": "2019-06-05T20:15:56.809315Z", "url": "https://files.pythonhosted.org/packages/fe/15/be212aeb846543100dae678a658b3ede7472348665f5bbabc9124b65af22/wltp-0.1.2a0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6bf6ade0894feeadb2d6209c850ad5f7", "sha256": "2687f9ba7c97fd2ad7b883b1a40422ba7fd3c77ab21b4464dc4a96d1809485eb" }, "downloads": -1, "filename": "wltp-0.1.2a0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "6bf6ade0894feeadb2d6209c850ad5f7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 165114, "upload_time": "2019-06-05T20:15:45", "upload_time_iso_8601": "2019-06-05T20:15:45.354345Z", "url": "https://files.pythonhosted.org/packages/33/b3/72cd36633b52f044c98437819207a5ae10fda894bcf658bfb11adf58e1f1/wltp-0.1.2a0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1c03bfbf071788d99e7139f2a849dddb", "sha256": "82107f71ba85f36cdd4b44c5d4e8595a5dc9a9a737789d2a7e0c867dc043e630" }, "downloads": -1, "filename": "wltp-0.1.2a0.tar.gz", "has_sig": true, "md5_digest": "1c03bfbf071788d99e7139f2a849dddb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3106532, "upload_time": "2019-06-05T20:15:56", "upload_time_iso_8601": "2019-06-05T20:15:56.809315Z", "url": "https://files.pythonhosted.org/packages/fe/15/be212aeb846543100dae678a658b3ede7472348665f5bbabc9124b65af22/wltp-0.1.2a0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }