{ "info": { "author": "CIMBA - Cimpress Technology", "author_email": "cimba@cimpress.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![PyPI version](https://badge.fury.io/py/j2v.svg)](https://badge.fury.io/py/j2v) \n\n[![CI/CD](https://github.com/Cimpress-MCP/j2v/workflows/Test/badge.svg)](https://github.com/Cimpress-MCP/j2v/actions?query=workflow%3ATest)\n\n# JSONs to Looker views (J2V)\n\nJ2V is a simple command-line tool to convert JSON to [Looker](https://looker.com/) readable files in forms of [Looker Views](https://docs.looker.com/reference/view-params/view) and [Looker Explores](https://docs.looker.com/reference/explore-params/explore).\n\nAlso it outputs an SQL with proper paths and explosion expressions.\n\nThis is useful to be used in combination with databases that are focusing on schema-on-read, and data is stored in raw JSON instead of exploded into columns of a table or view.\n\n## Example use case\n\nYou have a table in your database. This table contains a column containing JSONs (one JSON per row). You are very curious how these data look like exploded, but you do not want to spend 2h going through the JSON structure and specifying all the fields just to surface them in Looker.\n\nWith J2V all the structures are discovered automatically and two files are generated - a Looker View and Looker Explore. All you need to do is copy/paste the output of this command line tool into your Looker project and you can start exploring.\n\n# Usage\n\n## Requirements\n\n[Python 3](https://www.python.org/downloads/) must be installed.\n\n## How to run\n* use code from github or\n* `pip install j2v`\n\n## Parameters\n\n* `json_files`: Files in JSON format, representing the data stored in a table\n* `output_view`: Name of Looker View output file to be created\n* `output_explore`: Name of Looker model output file to be created\n* `sql_table_name`: Name of the DB table to be used (this is only used in the LookML files; no actual connection to a database will be done as part of this tool)\n* `table_alias`: Name of the table alias \n* `column_name`: Name of the column in the DB table as specified in `sql_table_name`. (this is only used in the LookML files; no actual connection to a database will be done as part of this tool)\n* `primary_key`: Name of the primary key from JSON field\n* `sql_dialect`: Specifies the sql dialect of the output. [snowflake | bigquery]\n\n## Output\n\n* `output_view`: File containing definitions of Looker views (see [examples](./examples/) directory in this repository)\n* `output_explore`: File containing definition of looker explore exploding the structures (see [examples](./examples/) directory in this repository)\n\n## Example usage\n\n### Using all parameters\n\n`python main.py --json_files data1.json data2.json --output_view RESTAURANT_CHAIN --output_explore RESTAURANT_CHAIN --column_name DATA --sql_table_name RESTAURANT_DETAILS --table_alias chains_table --handle_null_values_in_sql true --primary_key apiVersion`\n### Using only mandatory parameters\n\n`python3 main.py --json_files order_example.json order_example2.json order_example3.json`
\n\n# Contribution\n\n## Project structure:\n\n* `j2v` - source code of a package\n* `examples` - working examples\n* `tests` - tests\n\n## Contribute\n\n1. If unsure, open an issue for a discussion\n1. Create a fork\n1. Make your change\n1. Make a pull request\n1. Happy contribution!\n\n## EXAMPLE\n\n### Input: \n```json\n{\n \"apiVersion\": \"v3.4\",\n \"data Provider\": \"Eat me\",\n \"restaurants\": [\n {\n \"name\": \"Super Burger\",\n \"city\": \"Sydney\",\n \"country\": \"Australia\",\n \"address\": \"Big Street 3\",\n \"currency\": \"AUD\",\n \"openTime\": 1571143824,\n \"menu\": [\n {\n \"dishName\": \"BurgerPlus\",\n \"price\": 10,\n \"ingredients\": [\"Meat\", \"Cheese\", \"Bun\"]\n }\n ]\n }\n ],\n \"headquarter\": {\n \"employees\": 36,\n \"city\": \"Olsztyn\",\n \"country\": \"Poland\",\n \"building\": {\n \"address\": \"3 Maja 10\",\n \"floors\": [1, 2, 7]\n }\n },\n \"dataGenerationTimestamp\": \"2019-03-30T11:30:00.812Z\",\n \"payloadPrimaryKeyValue\": \"3ab21b54-22d6-473c-b055-4430f8927d4c\",\n \"version\": null\n}\n```\n\n### Ouput:\n\n#### SQL output:\n\n- Snowflake [Default]\n- BigQuery\n\n```SNOWFLAKE SQL\n\n ---VIEW WITH NUll VALUE HANDLING---\n\n\nSELECT\n---chains_table Information\nIFNULL(chains_table.\"DATA\":\"apiVersion\"::string,'N/A') AS API_VERSION,\nIFNULL(chains_table.\"DATA\":\"data Provider\"::string,'N/A') AS DATA_PROVIDER,\nIFNULL(chains_table.\"DATA\":\"headquarter\":\"building\":\"address\"::string,'N/A') AS HEADQUARTER_BUILDING_ADDRESS,\nIFNULL(chains_table.\"DATA\":\"headquarter\":\"city\"::string,'N/A') AS HEADQUARTER_CITY,\nIFNULL(chains_table.\"DATA\":\"headquarter\":\"country\"::string,'N/A') AS HEADQUARTER_COUNTRY,\nIFNULL(chains_table.\"DATA\":\"headquarter\":\"employees\"::number,0) AS HEADQUARTER_EMPLOYEES,\nIFNULL(chains_table.\"DATA\":\"payloadPrimaryKeyValue\"::string,'N/A') AS PAYLOAD_PRIMARY_KEY_VALUE,\nIFNULL(chains_table.\"DATA\":\"version\"::string,'N/A') AS VERSION,\nchains_table.\"DATA\":\"dataGenerationTimestamp\"::timestamp AS DATA_GENERATION_TIMESTAMP,\n---restaurants Information\nIFNULL(restaurants.VALUE:\"address\"::string,'N/A') AS RESTAURANTS_ADDRESS,\nIFNULL(restaurants.VALUE:\"city\"::string,'N/A') AS RESTAURANTS_CITY,\nIFNULL(restaurants.VALUE:\"country\"::string,'N/A') AS RESTAURANTS_COUNTRY,\nIFNULL(restaurants.VALUE:\"currency\"::string,'N/A') AS RESTAURANTS_CURRENCY,\nIFNULL(restaurants.VALUE:\"name\"::string,'N/A') AS RESTAURANTS_NAME,\nIFNULL(restaurants.VALUE:\"openTime\"::number,0) AS RESTAURANTS_OPEN_TIME,\n---restaurants_menu Information\nIFNULL(restaurants_menu.VALUE:\"dishName\"::string,'N/A') AS RESTAURANTS_MENU_DISH_NAME,\nIFNULL(restaurants_menu.VALUE:\"price\"::number,0) AS RESTAURANTS_MENU_PRICE,\n---restaurants_menu_ingredients Information\nIFNULL(restaurants_menu_ingredients.VALUE::string,'N/A') AS RESTAURANTS_MENU_INGREDIENTS_VALUE,\n---headquarter_building_floors Information\nIFNULL(headquarter_building_floors.VALUE::number,0) AS HEADQUARTER_BUILDING_FLOORS_VALUE\nFROM RESTAURANT_DETAILS AS chains_table,\nLATERAL FLATTEN(OUTER => TRUE, INPUT => chains_table.\"DATA\":\"restaurants\") restaurants,\nLATERAL FLATTEN(OUTER => TRUE, INPUT => restaurants.VALUE:\"menu\") restaurants_menu,\nLATERAL FLATTEN(OUTER => TRUE, INPUT => restaurants_menu.VALUE:\"ingredients\") restaurants_menu_ingredients,\nLATERAL FLATTEN(OUTER => TRUE, INPUT => chains_table.\"DATA\":\"headquarter\":\"building\":\"floors\") headquarter_building_floors\n```\n\n``` BIGQUERY SQL\n\n ---VIEW WITH NUll VALUE HANDLING---\nSELECT\n---chains_table Information\nIFNULL(chains_table.DATA.apiVersion,'N/A') AS API_VERSION,\nIFNULL(chains_table.DATA.data Provider,'N/A') AS DATA_PROVIDER,\nIFNULL(chains_table.DATA.headquarter.building.address,'N/A') AS HEADQUARTER_BUILDING_ADDRESS,\nIFNULL(chains_table.DATA.headquarter.city,'N/A') AS HEADQUARTER_CITY,\nIFNULL(chains_table.DATA.headquarter.country,'N/A') AS HEADQUARTER_COUNTRY,\nIFNULL(chains_table.DATA.headquarter.employees,0) AS HEADQUARTER_EMPLOYEES,\nIFNULL(chains_table.DATA.payloadPrimaryKeyValue,'N/A') AS PAYLOAD_PRIMARY_KEY_VALUE,\nIFNULL(chains_table.DATA.version,'N/A') AS VERSION,\nchains_table.DATA.dataGenerationTimestamp AS DATA_GENERATION_TIMESTAMP,\n---headquarter_building_floors Information\nIFNULL(headquarter_building_floors.,0) AS HEADQUARTER_BUILDING_FLOORS,\n---restaurants Information\nIFNULL(restaurants.address,'N/A') AS RESTAURANTS_ADDRESS,\nIFNULL(restaurants.city,'N/A') AS RESTAURANTS_CITY,\nIFNULL(restaurants.country,'N/A') AS RESTAURANTS_COUNTRY,\nIFNULL(restaurants.currency,'N/A') AS RESTAURANTS_CURRENCY,\nIFNULL(restaurants.name,'N/A') AS RESTAURANTS_NAME,\nIFNULL(restaurants.openTime,0) AS RESTAURANTS_OPEN_TIME,\n---restaurants_menu Information\nIFNULL(restaurants_menu.dishName,'N/A') AS RESTAURANTS_MENU_DISH_NAME,\nIFNULL(restaurants_menu.price,0) AS RESTAURANTS_MENU_PRICE,\n---restaurants_menu_ingredients Information\nIFNULL(restaurants_menu_ingredients.,'N/A') AS RESTAURANTS_MENU_INGREDIENTS\nFROM RESTAURANT_DETAILS AS chains_table\nLEFT JOIN UNNEST(chains_table.DATA.headquarter.building.floors) AS headquarter_building_floors\nLEFT JOIN UNNEST(chains_table.DATA.restaurants) AS restaurants\nLEFT JOIN UNNEST(restaurants.menu) AS restaurants_menu\nLEFT JOIN UNNEST(restaurants_menu.ingredients) AS restaurants_menu_ingredients\n```\n\n#### Ouput files:\n\n##### View file:\n\n```LookML\n\n\nview: chains_table { \n sql_table_name: RESTAURANT_DETAILS ;;\n\n dimension: address {\n description: \"Address\"\n type: string\n sql: ${TABLE}.\"DATA\":\"headquarter\":\"building\":\"address\"::string ;;\n group_label: \"Building\"\n }\n\n dimension: api_version {\n description: \"Api version\"\n primary_key: yes\n type: string\n sql: ${TABLE}.\"DATA\":\"apiVersion\"::string ;;\n }\n\n dimension: city {\n description: \"City\"\n type: string\n sql: ${TABLE}.\"DATA\":\"headquarter\":\"city\"::string ;;\n group_label: \"Headquarter\"\n }\n\n dimension: country {\n description: \"Country\"\n type: string\n sql: ${TABLE}.\"DATA\":\"headquarter\":\"country\"::string ;;\n group_label: \"Headquarter\"\n }\n\n dimension: data_provider {\n description: \"Data provider\"\n type: string\n sql: ${TABLE}.\"DATA\":\"data Provider\"::string ;;\n }\n\n dimension: employees {\n description: \"Employees\"\n type: number\n sql: ${TABLE}.\"DATA\":\"headquarter\":\"employees\"::number ;;\n group_label: \"Headquarter\"\n }\n\n dimension: payload_primary_key_value {\n description: \"Payload primary key value\"\n type: string\n sql: ${TABLE}.\"DATA\":\"payloadPrimaryKeyValue\"::string ;;\n }\n\n dimension: version {\n description: \"Version\"\n type: string\n sql: ${TABLE}.\"DATA\":\"version\"::string ;;\n }\n\n dimension_group: data_generation_timestamp {\n description: \"Data generation timestamp\"\n type: time\n timeframes: [\n raw,\n time,\n date,\n week,\n month,\n quarter,\n year\n ]\n sql: ${TABLE}.\"DATA\":\"dataGenerationTimestamp\"::timestamp ;;\n }\n\n}\n\nview: restaurants { \n\n dimension: address {\n description: \"Address\"\n type: string\n sql: ${TABLE}.VALUE:\"address\"::string ;;\n }\n\n dimension: city {\n description: \"City\"\n type: string\n sql: ${TABLE}.VALUE:\"city\"::string ;;\n }\n\n dimension: country {\n description: \"Country\"\n type: string\n sql: ${TABLE}.VALUE:\"country\"::string ;;\n }\n\n dimension: currency {\n description: \"Currency\"\n type: string\n sql: ${TABLE}.VALUE:\"currency\"::string ;;\n }\n\n dimension: name {\n description: \"Name\"\n type: string\n sql: ${TABLE}.VALUE:\"name\"::string ;;\n }\n\n dimension_group: open_time {\n description: \"Open time\"\n datatype: epoch\n type: time\n timeframes: [\n raw,\n time,\n date,\n week,\n month,\n quarter,\n year\n ]\n sql: ${TABLE}.VALUE:\"openTime\"::number ;;\n }\n\n}\n\nview: restaurants_menu { \n\n dimension: dish_name {\n description: \"Dish name\"\n type: string\n sql: ${TABLE}.VALUE:\"dishName\"::string ;;\n }\n\n dimension: price {\n description: \"Price\"\n type: number\n sql: ${TABLE}.VALUE:\"price\"::number ;;\n }\n\n}\n\nview: restaurants_menu_ingredients { \n\n dimension: value {\n description: \"Value\"\n type: string\n sql: ${TABLE}.VALUE::string ;;\n }\n\n}\n\nview: headquarter_building_floors { \n\n dimension: value {\n description: \"Value\"\n type: number\n sql: ${TABLE}.VALUE::number ;;\n }\n\n}\n\n\n```\n\n##### Explore file:\n\n```LookML\n\ninclude: \"restaurant_chain.view.lkml\"\n\nexplore: chains_table {\n view_name: chains_table\n from: chains_table\n label: \"chains_table explore\"\n description: \"chains_table explore\"\n\n join: restaurants {\n from: restaurants\n sql:,LATERAL FLATTEN(OUTER => TRUE, INPUT => chains_table.\"DATA\":\"restaurants\") restaurants;;\n relationship: one_to_many \n }\n\n join: restaurants_menu {\n from: restaurants_menu\n sql:,LATERAL FLATTEN(OUTER => TRUE, INPUT => restaurants.VALUE:\"menu\") restaurants_menu;;\n relationship: one_to_many \n required_joins: [restaurants]\n }\n\n join: restaurants_menu_ingredients {\n from: restaurants_menu_ingredients\n sql:,LATERAL FLATTEN(OUTER => TRUE, INPUT => restaurants_menu.VALUE:\"ingredients\") restaurants_menu_ingredients;;\n relationship: one_to_many \n required_joins: [restaurants_menu]\n }\n\n join: headquarter_building_floors {\n from: headquarter_building_floors\n sql:,LATERAL FLATTEN(OUTER => TRUE, INPUT => chains_table.\"DATA\":\"headquarter\":\"building\":\"floors\") headquarter_building_floors;;\n relationship: one_to_many \n }\n\n}\n\n```\n\n\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/Cimpress-MCP/j2v", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "j2v", "package_url": "https://pypi.org/project/j2v/", "platform": "", "project_url": "https://pypi.org/project/j2v/", "project_urls": { "Homepage": "https://github.com/Cimpress-MCP/j2v" }, "release_url": "https://pypi.org/project/j2v/1.6.0/", "requires_dist": [ "PyYAML (>=5.1)" ], "requires_python": ">=3", "summary": "A tool to generate Looker views and explores from JSONs", "version": "1.6.0", "yanked": false, "yanked_reason": null }, "last_serial": 10486166, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "bac824306a0172e7546bb7cb00c76c51", "sha256": "9cd98d09a57d46c3d942db1b1e5f744da91aa8506f7d90408b976e7881003c59" }, "downloads": -1, "filename": "j2v-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bac824306a0172e7546bb7cb00c76c51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 19504, "upload_time": "2019-04-03T12:50:48", "upload_time_iso_8601": "2019-04-03T12:50:48.802942Z", "url": "https://files.pythonhosted.org/packages/02/13/4966b6bb210d5db0af00178d1786fbce6f3953b52f07a508418abae574bd/j2v-1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "547e9024c50480fb4809c806d2c48a84", "sha256": "6851b879f68b3b74d04830a047ebdf6598d7eaaf91cc2d9779b1c16c3a2bf608" }, "downloads": -1, "filename": "j2v-1.1.tar.gz", "has_sig": false, "md5_digest": "547e9024c50480fb4809c806d2c48a84", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5724, "upload_time": "2019-04-03T12:50:49", "upload_time_iso_8601": "2019-04-03T12:50:49.989388Z", "url": "https://files.pythonhosted.org/packages/c6/bc/b10e3ae2b540f3c07ac8f54547a07c25b155e70c529b0e935204bcc758be/j2v-1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "982ec35f31c69555196a799ab9f2c364", "sha256": "322f9df6a64d0669b8acc852c9fbf4057f79af248c22bd7d2a105544f9b76ed6" }, "downloads": -1, "filename": "j2v-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "982ec35f31c69555196a799ab9f2c364", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 11373, "upload_time": "2019-04-03T14:10:24", "upload_time_iso_8601": "2019-04-03T14:10:24.079383Z", "url": "https://files.pythonhosted.org/packages/90/df/e0be3321cba841040e84ad1a61d63825c875974ae9270e75a0399a7e7620/j2v-1.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "dd1f90df15e29d2638126c7ea9fbd851", "sha256": "4d0d75c4cccbb93622d22d89953444e19df64bd88df3741228810523d9f7c2ca" }, "downloads": -1, "filename": "j2v-1.1.1.tar.gz", "has_sig": false, "md5_digest": "dd1f90df15e29d2638126c7ea9fbd851", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5805, "upload_time": "2019-04-03T14:10:25", "upload_time_iso_8601": "2019-04-03T14:10:25.490872Z", "url": "https://files.pythonhosted.org/packages/be/b6/f3790e0b61d0046c722800a31345b7a3f32b251bb9c9de35d6d6ad833f34/j2v-1.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "1404ed91345d0e5571c3a2322150ac67", "sha256": "dce96b1f8daf4e7b543e3f07c9245d42e6f657f24e865fb84d9993e2215255ab" }, "downloads": -1, "filename": "j2v-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1404ed91345d0e5571c3a2322150ac67", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 11742, "upload_time": "2019-04-04T16:33:42", "upload_time_iso_8601": "2019-04-04T16:33:42.415814Z", "url": "https://files.pythonhosted.org/packages/8d/2d/bd6d68fb97763bddcf3e98c73de1760cfa39c4ff50e4af5ae7b034274eca/j2v-1.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9721c5ca2102bbc88986685215f1abaf", "sha256": "631ff6adb0df9fe292649f454861d8c187f5d5f0a0e539982f45f40892c32e11" }, "downloads": -1, "filename": "j2v-1.1.2.tar.gz", "has_sig": false, "md5_digest": "9721c5ca2102bbc88986685215f1abaf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6150, "upload_time": "2019-04-04T16:33:44", "upload_time_iso_8601": "2019-04-04T16:33:44.774955Z", "url": "https://files.pythonhosted.org/packages/7b/2f/c15c679f1a7e1353e929aa54719580f22ac5b294b91a6d47bf7ac801d111/j2v-1.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "27555b53631b454b4a166c68459fa8a0", "sha256": "7e2b032dd35305ebdaf94b5aa0809a1a10a7df5c9fe3ebdde9382f8d463eda49" }, "downloads": -1, "filename": "j2v-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "27555b53631b454b4a166c68459fa8a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 13317, "upload_time": "2019-04-05T12:23:30", "upload_time_iso_8601": "2019-04-05T12:23:30.888748Z", "url": "https://files.pythonhosted.org/packages/d6/94/5f463a04f8d2430f042d2a79f13f289351d1e69fdd028aa3f3fe09bf2b00/j2v-1.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ceb09cb4f3d69096fca9a2c66703e4bf", "sha256": "c952dda8de7ca9f486555abc4ad5df27995c5d360c6aa09c86dbb5822db8024c" }, "downloads": -1, "filename": "j2v-1.1.3.tar.gz", "has_sig": false, "md5_digest": "ceb09cb4f3d69096fca9a2c66703e4bf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10467, "upload_time": "2019-04-05T12:23:33", "upload_time_iso_8601": "2019-04-05T12:23:33.570905Z", "url": "https://files.pythonhosted.org/packages/f5/10/223e441f1ad608b7b361b40af3435ca9bef59c90d155febc61873ef53cde/j2v-1.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2": [ { "comment_text": "", "digests": { "md5": "647a3cd912b9ae89aa605ee47c44a8bf", "sha256": "e3d22efbf165aaac332210d279160e7e7d263a2a1ef48ba6df350b7d295f2f40" }, "downloads": -1, "filename": "j2v-1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "647a3cd912b9ae89aa605ee47c44a8bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15026, "upload_time": "2019-04-16T14:44:02", "upload_time_iso_8601": "2019-04-16T14:44:02.844092Z", "url": "https://files.pythonhosted.org/packages/0b/c7/0b12027c75817e7b5f7ac908bcf45aa194c260e10f166a75722db55037d9/j2v-1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0e3316652f14feef066180db91c38073", "sha256": "7ff3be9ec6a5be8946b0fdac3a4a90c13673bdf67c7ba0bfedb63c7f6bb59918" }, "downloads": -1, "filename": "j2v-1.2.tar.gz", "has_sig": false, "md5_digest": "0e3316652f14feef066180db91c38073", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11833, "upload_time": "2019-04-16T14:44:06", "upload_time_iso_8601": "2019-04-16T14:44:06.018058Z", "url": "https://files.pythonhosted.org/packages/b4/6e/a1ca3a59c220cb90d620165c49b29d6b64bdec836633dcd8b15a66c13a1a/j2v-1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "cbb19839be9b918fd9e7bfaaafede0ee", "sha256": "254a904582e22e8aff697dcc22b58bfad227d18a0de0a3379a2728c52462eb46" }, "downloads": -1, "filename": "j2v-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cbb19839be9b918fd9e7bfaaafede0ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16675, "upload_time": "2019-04-17T08:20:57", "upload_time_iso_8601": "2019-04-17T08:20:57.095540Z", "url": "https://files.pythonhosted.org/packages/14/75/275c0138b6d73f6b1a19e2f52fc76865d85568b160999e454441d485c717/j2v-1.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a3f4f46908e6ff247a3538bda5eb20e4", "sha256": "faed55fe965732d611e9d10972bdadb33f22f480810031e38d98e85d9532a64b" }, "downloads": -1, "filename": "j2v-1.2.1.tar.gz", "has_sig": false, "md5_digest": "a3f4f46908e6ff247a3538bda5eb20e4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11996, "upload_time": "2019-04-17T08:20:58", "upload_time_iso_8601": "2019-04-17T08:20:58.732371Z", "url": "https://files.pythonhosted.org/packages/67/23/60611f680cdcf08d90f14e80c479975e2a72d7b7d16ec2f5f9e5e7592c6e/j2v-1.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "e203e278ad058c94a25dbf4ff078b7e1", "sha256": "70d97623c2fcd5f0a357ade8d2736f980ba76ee97725bf34221ee4134d85f79c" }, "downloads": -1, "filename": "j2v-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e203e278ad058c94a25dbf4ff078b7e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16683, "upload_time": "2019-04-17T09:34:20", "upload_time_iso_8601": "2019-04-17T09:34:20.166825Z", "url": "https://files.pythonhosted.org/packages/0a/d3/bee03ec96aa3a7f2fd4962089bd0ca019e533bec4ee5c59380c0caac94c0/j2v-1.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2854f3b8421762f41cd86c786a0f7717", "sha256": "c312ee0871159325f6448bf7e6ad848a166d7f8bd04c8691712e2ffaed0eeb91" }, "downloads": -1, "filename": "j2v-1.2.2.tar.gz", "has_sig": false, "md5_digest": "2854f3b8421762f41cd86c786a0f7717", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12001, "upload_time": "2019-04-17T09:34:22", "upload_time_iso_8601": "2019-04-17T09:34:22.053026Z", "url": "https://files.pythonhosted.org/packages/83/1e/aac981b9ed1aa9b8478650e333bfd5b9d41f0270a182126ea22d95a57f04/j2v-1.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "691478a4ada11b4e6b7e00d690088f7c", "sha256": "2a03680fa4a44461363021754aea629f83828f0f744e3783fcb2da1d30d1bd07" }, "downloads": -1, "filename": "j2v-1.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "691478a4ada11b4e6b7e00d690088f7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16682, "upload_time": "2019-04-17T09:41:33", "upload_time_iso_8601": "2019-04-17T09:41:33.646511Z", "url": "https://files.pythonhosted.org/packages/7e/2c/5184ec947871ef2ed0e77fa1839c3d08a4a79207bec2b46e91df4b286179/j2v-1.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a2dae6465b8a07b0496c0cedbc252c99", "sha256": "d5a0bb025bd196fad561153d142862d8c814b48b8ed2c64f515c616e7d487114" }, "downloads": -1, "filename": "j2v-1.2.3.tar.gz", "has_sig": false, "md5_digest": "a2dae6465b8a07b0496c0cedbc252c99", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12001, "upload_time": "2019-04-17T09:41:36", "upload_time_iso_8601": "2019-04-17T09:41:36.139120Z", "url": "https://files.pythonhosted.org/packages/9b/5d/d16e224c6b29559871c469b83e76132037a74debc275a83b2582a795d91c/j2v-1.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3": [ { "comment_text": "", "digests": { "md5": "03d9f39364806af18e9e82926a5ebc15", "sha256": "b81e881d11b2b43a3c4510488abf5436d67d8779dbdcb65c6276033d7fb0bfdc" }, "downloads": -1, "filename": "j2v-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "03d9f39364806af18e9e82926a5ebc15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16743, "upload_time": "2019-06-27T13:28:51", "upload_time_iso_8601": "2019-06-27T13:28:51.239710Z", "url": "https://files.pythonhosted.org/packages/84/3c/7afbaf1439e4b5b332dfa25f20427f9604ea0718d606f0d59a4e2b04183b/j2v-1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a90342e0d892110fe5d0e4ce440058b2", "sha256": "dff2ff7a2dc212ba1dd1e398fba6f9e0dd30c20db96c84399b3587d5e8b0d0bb" }, "downloads": -1, "filename": "j2v-1.3.tar.gz", "has_sig": false, "md5_digest": "a90342e0d892110fe5d0e4ce440058b2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12075, "upload_time": "2019-06-27T13:28:57", "upload_time_iso_8601": "2019-06-27T13:28:57.174537Z", "url": "https://files.pythonhosted.org/packages/45/98/40ed082a775002c5b4ad9ffea0d469a4baf9193071d2a4e509a282846037/j2v-1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "def06e034d0a00c967810e57f649b05a", "sha256": "d8d8456a0c3618959fa84b57e913caeaab4151bd723abf7dfc292475d6022ce8" }, "downloads": -1, "filename": "j2v-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "def06e034d0a00c967810e57f649b05a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16762, "upload_time": "2019-07-10T10:59:57", "upload_time_iso_8601": "2019-07-10T10:59:57.924189Z", "url": "https://files.pythonhosted.org/packages/f1/eb/930763e699d72e966d336bf1b6c3f91bc637656354fdb4f96903776e1779/j2v-1.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8c05aa9188e59056a1dda484dc5d056c", "sha256": "e679bdbfc429a8a73d61298705d330cb4961726a3cd7aface43cec02284f9a3e" }, "downloads": -1, "filename": "j2v-1.3.1.tar.gz", "has_sig": false, "md5_digest": "8c05aa9188e59056a1dda484dc5d056c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12081, "upload_time": "2019-07-10T11:00:03", "upload_time_iso_8601": "2019-07-10T11:00:03.559532Z", "url": "https://files.pythonhosted.org/packages/f8/be/81a34e9c13ade4c6dd34ffae78172e298681af64a59a34dd4b58826b2682/j2v-1.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "3724ac222b85bcfa3ddbfe0aa1ff6f53", "sha256": "89844e780471dcc03935c0805832e08757f8defc42fa3672994f8aa601299802" }, "downloads": -1, "filename": "j2v-1.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3724ac222b85bcfa3ddbfe0aa1ff6f53", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 16764, "upload_time": "2019-07-10T11:19:18", "upload_time_iso_8601": "2019-07-10T11:19:18.867846Z", "url": "https://files.pythonhosted.org/packages/2d/ca/0ed020850f84d7eb53ed8bf27e6f254670097b1739dbe61d1de474215861/j2v-1.3.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d72e0a64bcfd7459cc9b11276f0a0791", "sha256": "319024125adbeeb63db12a7d50af340a02152808c65912302d9e1705f8b22b95" }, "downloads": -1, "filename": "j2v-1.3.2.tar.gz", "has_sig": false, "md5_digest": "d72e0a64bcfd7459cc9b11276f0a0791", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12079, "upload_time": "2019-07-10T11:19:20", "upload_time_iso_8601": "2019-07-10T11:19:20.792899Z", "url": "https://files.pythonhosted.org/packages/a8/ee/1fc9e8770bda4a97c0194c99859d82b7cca14fb6bbaa479a2be0dbec2b9b/j2v-1.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "d91edaea1cb79c7e35380ffc9306eba3", "sha256": "5c079d9fb09d8c74510c747b7807cf046a89ca1315f7bbc7c6fcf9afa67afe8d" }, "downloads": -1, "filename": "j2v-1.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d91edaea1cb79c7e35380ffc9306eba3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15457, "upload_time": "2019-07-10T11:29:01", "upload_time_iso_8601": "2019-07-10T11:29:01.158082Z", "url": "https://files.pythonhosted.org/packages/ae/4b/823872e4d1b964dbffd0af97c68ba8ed3a2ff650ac6b8280c3ff698c9ae6/j2v-1.3.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f6bfd44a5ba60865537523ecbfd96644", "sha256": "b71ba814236ba4d9891b85128987b81e2cf7becf6726418c427a651b2d6ab8ec" }, "downloads": -1, "filename": "j2v-1.3.3.tar.gz", "has_sig": false, "md5_digest": "f6bfd44a5ba60865537523ecbfd96644", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12081, "upload_time": "2019-07-10T11:29:04", "upload_time_iso_8601": "2019-07-10T11:29:04.027350Z", "url": "https://files.pythonhosted.org/packages/bf/f8/fed531e973e5a99109e8c75b648fced1aaea7542c169facda9c7b088a9a5/j2v-1.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.4": [ { "comment_text": "", "digests": { "md5": "730b1dbd334508f6fbe2d71f5aef6934", "sha256": "c36dd1db85aef8f0e937700cb7ab8b50741e21c19bf959e22cb54a4224016dd9" }, "downloads": -1, "filename": "j2v-1.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "730b1dbd334508f6fbe2d71f5aef6934", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15610, "upload_time": "2019-08-23T10:36:52", "upload_time_iso_8601": "2019-08-23T10:36:52.338141Z", "url": "https://files.pythonhosted.org/packages/6c/89/ef7602942a2363ff52581d395ea43ee9a75d33258d535386b37205870bd5/j2v-1.3.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1511594b37cab6fdde1d3a45ee5b4e23", "sha256": "e3af060202b8ce8bb61ebaf2ea2ad5ba16fac7240e0f5c9388b3389723bb4036" }, "downloads": -1, "filename": "j2v-1.3.4.tar.gz", "has_sig": false, "md5_digest": "1511594b37cab6fdde1d3a45ee5b4e23", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12217, "upload_time": "2019-08-23T10:36:55", "upload_time_iso_8601": "2019-08-23T10:36:55.442777Z", "url": "https://files.pythonhosted.org/packages/3b/c7/19f5311edcf33a313e3434b35f690c6a7912b497449808ba054a01766864/j2v-1.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.5": [ { "comment_text": "", "digests": { "md5": "6d4008bdcbeff0428b51d0ad76dbe572", "sha256": "edaefde105617f364c0e775ffda3ea28625e501304d32c62c3b06a49f8e23e23" }, "downloads": -1, "filename": "j2v-1.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "6d4008bdcbeff0428b51d0ad76dbe572", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 15611, "upload_time": "2019-08-23T13:36:48", "upload_time_iso_8601": "2019-08-23T13:36:48.304817Z", "url": "https://files.pythonhosted.org/packages/7d/bd/98ed4d697a3f3ac989b1ea3eb96873a8f4bfeb4323f2149026389a960dec/j2v-1.3.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2df1a17d302ff5addaadf683b902f0a3", "sha256": "22a35f32814ddde16c5a28344dc394af70d3a0c69e01b5f9b25fa30b5e4f177c" }, "downloads": -1, "filename": "j2v-1.3.5.tar.gz", "has_sig": false, "md5_digest": "2df1a17d302ff5addaadf683b902f0a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12213, "upload_time": "2019-08-23T13:36:53", "upload_time_iso_8601": "2019-08-23T13:36:53.178753Z", "url": "https://files.pythonhosted.org/packages/65/d3/7c90f4ea1a18b33635cb92fa63494a97892a6a53ad604a28dcf56c7c2b83/j2v-1.3.5.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.6": [ { "comment_text": "", "digests": { "md5": "1c47cf55baedf0f6a57cd7c1e0d51cb9", "sha256": "a8382f7a67265eb79fb94e72de6e08654387f8fe9c288ead63b70dfe8a9c2b51" }, "downloads": -1, "filename": "j2v-1.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "1c47cf55baedf0f6a57cd7c1e0d51cb9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17080, "upload_time": "2019-08-29T08:25:38", "upload_time_iso_8601": "2019-08-29T08:25:38.123034Z", "url": "https://files.pythonhosted.org/packages/7b/28/6ad94802538fc2ba26661c2164fb264e1de91f464d6bc42b6e1678cdf68f/j2v-1.3.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "eb66b9115453ea23aaeac357c1889b71", "sha256": "2931f0e51c3b298afc2ecc844c38355ee9506c4a8fccba4cb0d75cf870c93e81" }, "downloads": -1, "filename": "j2v-1.3.6.tar.gz", "has_sig": false, "md5_digest": "eb66b9115453ea23aaeac357c1889b71", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 13307, "upload_time": "2019-08-29T08:25:43", "upload_time_iso_8601": "2019-08-29T08:25:43.709725Z", "url": "https://files.pythonhosted.org/packages/5f/ea/7372b3c2d90a5bfd8f7970023bace23aedee2d8815868b44e30f81f2de8f/j2v-1.3.6.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.7": [ { "comment_text": "", "digests": { "md5": "906338c053b1dd24410548b009c01e35", "sha256": "cfc96aa14ccfd5131b1085e2aeec7656b7f6ecbb4e96a75f617ac1ee0ec99c36" }, "downloads": -1, "filename": "j2v-1.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "906338c053b1dd24410548b009c01e35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17101, "upload_time": "2019-09-09T08:24:54", "upload_time_iso_8601": "2019-09-09T08:24:54.210788Z", "url": "https://files.pythonhosted.org/packages/b7/7f/0d8614f928704058f44fcfbb6c39d2df782794a9b61bb237ec18a8cd7947/j2v-1.3.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "378722fb7a3dceedcae8234c51ad30cb", "sha256": "fe003e9d2b4a8ea3d8b11d967adfb7d2d6fb52781b660a1f1b749a45c712a1ac" }, "downloads": -1, "filename": "j2v-1.3.7.tar.gz", "has_sig": false, "md5_digest": "378722fb7a3dceedcae8234c51ad30cb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 13350, "upload_time": "2019-09-09T08:25:00", "upload_time_iso_8601": "2019-09-09T08:25:00.770888Z", "url": "https://files.pythonhosted.org/packages/a5/6a/a1172c524c7047b581989506767b9400958084c83cddbe6ed754373504a1/j2v-1.3.7.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.8": [ { "comment_text": "", "digests": { "md5": "f52b9379629d7ec6e006360d2334f112", "sha256": "2596055f9043f5b163cf281ed05a04e3e6942f341a463263933e582f640a4f59" }, "downloads": -1, "filename": "j2v-1.3.8-py3-none-any.whl", "has_sig": false, "md5_digest": "f52b9379629d7ec6e006360d2334f112", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17454, "upload_time": "2019-09-30T05:24:54", "upload_time_iso_8601": "2019-09-30T05:24:54.330781Z", "url": "https://files.pythonhosted.org/packages/e2/28/198a03b072be4b704b24637c0bab039326f511a02b53fafdd4ff69b0d3b7/j2v-1.3.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "976576cc79a6cd53ac8960633bd3ec7c", "sha256": "8370e3720f3ca7f5b7e281a033194d1137e05f684901a0432ea895d10491ded0" }, "downloads": -1, "filename": "j2v-1.3.8.tar.gz", "has_sig": false, "md5_digest": "976576cc79a6cd53ac8960633bd3ec7c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 13714, "upload_time": "2019-09-30T05:24:58", "upload_time_iso_8601": "2019-09-30T05:24:58.553192Z", "url": "https://files.pythonhosted.org/packages/a2/f8/9a6278ffd90b63010d9614cf719ed6a94442e53570c7ccd3b0f17df742b8/j2v-1.3.8.tar.gz", "yanked": false, "yanked_reason": null } ], "1.3.9": [ { "comment_text": "", "digests": { "md5": "5f90b7de1b2720e8297c95b638e003e4", "sha256": "4143fd43d2d55ebc08378b50da0bced73ccbb9b049d92756bbac05740d842dec" }, "downloads": -1, "filename": "j2v-1.3.9-py3-none-any.whl", "has_sig": false, "md5_digest": "5f90b7de1b2720e8297c95b638e003e4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17446, "upload_time": "2019-09-30T11:29:49", "upload_time_iso_8601": "2019-09-30T11:29:49.796351Z", "url": "https://files.pythonhosted.org/packages/3d/e1/10f5a0535a04ca127bd717cad35a441663b6cecc51473632a09efa62a45b/j2v-1.3.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a977fad95bc34cc3a1d7b29efba62924", "sha256": "86da42b6cd0d7bee149c1ed166dbab9eb9b7805175e909890c652ae8aee15f64" }, "downloads": -1, "filename": "j2v-1.3.9.tar.gz", "has_sig": false, "md5_digest": "a977fad95bc34cc3a1d7b29efba62924", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 13708, "upload_time": "2019-09-30T11:29:52", "upload_time_iso_8601": "2019-09-30T11:29:52.534783Z", "url": "https://files.pythonhosted.org/packages/9e/b7/27e591d718fc9712a7271d6f89caa34aa05f039606b48db2b1f494fbb514/j2v-1.3.9.tar.gz", "yanked": false, "yanked_reason": null } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "c4de65a4db729c0a7c87272ea76dd1fd", "sha256": "50626489e79b590c46708b78075f5d19df672564bbea9e959c31ec105f53f9ab" }, "downloads": -1, "filename": "j2v-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c4de65a4db729c0a7c87272ea76dd1fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17891, "upload_time": "2019-10-17T21:20:01", "upload_time_iso_8601": "2019-10-17T21:20:01.148234Z", "url": "https://files.pythonhosted.org/packages/e7/15/f4ccb241af4f11031995f7aea6d23eb95aaee7d6622f05bb234d46a39855/j2v-1.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e4fc74ca76f90414c510a2fbb96267ea", "sha256": "e2ccb2122f3133c5f3f87c0657a32673d9b1c4dd813ab14638473e30dbde0d05" }, "downloads": -1, "filename": "j2v-1.4.0.tar.gz", "has_sig": false, "md5_digest": "e4fc74ca76f90414c510a2fbb96267ea", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 14155, "upload_time": "2019-10-17T21:20:03", "upload_time_iso_8601": "2019-10-17T21:20:03.890777Z", "url": "https://files.pythonhosted.org/packages/e5/9c/bbb9829a322430944713f4cff877fe8e4d1918e6359eb4fe7169b2b57cd8/j2v-1.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "50eb25bea0abc59ea895fa85673dd671", "sha256": "14117365a49c3586256fa7b371681ade6774df494d93bd2ad9b1907356a9f373" }, "downloads": -1, "filename": "j2v-1.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "50eb25bea0abc59ea895fa85673dd671", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 17880, "upload_time": "2019-10-23T11:26:29", "upload_time_iso_8601": "2019-10-23T11:26:29.198545Z", "url": "https://files.pythonhosted.org/packages/e6/b7/b081a919681c125801bafa92976dfbdf612dca9a2d13e8b396978e3f61a0/j2v-1.4.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a327654cb8e3b29274d82f02c3c2622b", "sha256": "83d8d8d16c06effbc238ae647853264d7460b1a9513cc2b54c86dba937732332" }, "downloads": -1, "filename": "j2v-1.4.1.tar.gz", "has_sig": false, "md5_digest": "a327654cb8e3b29274d82f02c3c2622b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 14142, "upload_time": "2019-10-23T11:26:31", "upload_time_iso_8601": "2019-10-23T11:26:31.113575Z", "url": "https://files.pythonhosted.org/packages/7e/37/921c75f474c3ff1fb1ec74cda8e2ead0da737e1e8b0220a94376685a29da/j2v-1.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "515ee3ef3df12be54de5b4af86ff491f", "sha256": "2ccb4e2df42410b832062cf88e8ea0d7e86b391f3f0c60b1fb51012ed8bfe42c" }, "downloads": -1, "filename": "j2v-1.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "515ee3ef3df12be54de5b4af86ff491f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 18254, "upload_time": "2019-10-25T16:05:39", "upload_time_iso_8601": "2019-10-25T16:05:39.896522Z", "url": "https://files.pythonhosted.org/packages/6d/ae/2e2775a5081ada60e4b44f2ec6e173f710753ec0799e228258053f91b3f3/j2v-1.4.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0999d95af1e0156b8c8f1cac743b1004", "sha256": "1cb5fefa38e728fbaef076e1c65108ef80fe30b8689f71c75d0b5f831196697e" }, "downloads": -1, "filename": "j2v-1.4.2.tar.gz", "has_sig": false, "md5_digest": "0999d95af1e0156b8c8f1cac743b1004", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 14541, "upload_time": "2019-10-25T16:05:42", "upload_time_iso_8601": "2019-10-25T16:05:42.119073Z", "url": "https://files.pythonhosted.org/packages/33/fd/78423fbc5a0044b293e7e359781d4f15dda54cd5b39711c7faf85b70e1a8/j2v-1.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "b99db1277457e52b1743eac34371c9da", "sha256": "b80e44d69cd9569343c173959ecc2145d220a25fe85b5acd2054cca5b3009eee" }, "downloads": -1, "filename": "j2v-1.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b99db1277457e52b1743eac34371c9da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 18731, "upload_time": "2019-10-30T07:31:01", "upload_time_iso_8601": "2019-10-30T07:31:01.208518Z", "url": "https://files.pythonhosted.org/packages/ee/f0/ec2039de7b874127c5c543b02ab606c9b244b5940e1207d6aab8e514ba20/j2v-1.4.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b3db482c89da09187a3247857cf7ef06", "sha256": "31127b540dd2677705fbdd04f155ead7181033a660168dfa1fb9c3ccf052dd53" }, "downloads": -1, "filename": "j2v-1.4.3.tar.gz", "has_sig": false, "md5_digest": "b3db482c89da09187a3247857cf7ef06", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 15110, "upload_time": "2019-10-30T07:31:08", "upload_time_iso_8601": "2019-10-30T07:31:08.938995Z", "url": "https://files.pythonhosted.org/packages/d1/8e/8db9ed31243f0f9592c654e7f20f5e513d67c8f2888ecf2f5585938983c7/j2v-1.4.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "b3dfad7cc6b1ef831a00bbfb1fcad456", "sha256": "9f16393ce088ad372f436e7f9244c77c226bbef08f2bdbe31ceb1af4b2c74a40" }, "downloads": -1, "filename": "j2v-1.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b3dfad7cc6b1ef831a00bbfb1fcad456", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 19076, "upload_time": "2019-11-07T10:19:34", "upload_time_iso_8601": "2019-11-07T10:19:34.664600Z", "url": "https://files.pythonhosted.org/packages/d8/52/6be90d97d71843be56d6cf9a0b105b76ef448e8c3326834bffba3e3a9b55/j2v-1.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2e21aac7d4bb52e7b677673fd0c61718", "sha256": "eba4f7fe18b6384c1be9de146301c23fae1bef69b993c415e8dd10a6c4f6bd19" }, "downloads": -1, "filename": "j2v-1.5.0.tar.gz", "has_sig": false, "md5_digest": "2e21aac7d4bb52e7b677673fd0c61718", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 15529, "upload_time": "2019-11-07T10:19:44", "upload_time_iso_8601": "2019-11-07T10:19:44.569006Z", "url": "https://files.pythonhosted.org/packages/95/84/37ae180b9d8d4a357f2b78d622220643ed39b4c6a119bcf87850756ce165/j2v-1.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "2b953122a970bec7fc7659df80b7acc9", "sha256": "fee3a758d7d25d767144e292479f4950d0f3d6403e6518871895d2b59844a541" }, "downloads": -1, "filename": "j2v-1.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2b953122a970bec7fc7659df80b7acc9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 19124, "upload_time": "2020-01-17T09:11:18", "upload_time_iso_8601": "2020-01-17T09:11:18.196408Z", "url": "https://files.pythonhosted.org/packages/87/25/f641bacfb5bc68ab6bd82486c2ef3ac71e567dcef7b05e719ed80a915af0/j2v-1.5.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "eaf9f10e2d76c7ed75faebeed7ea5ff1", "sha256": "0bffedb31edcd7a47e3b554b8afca4445ecf93c7b5240ce0a5e19e6c0a3b91d7" }, "downloads": -1, "filename": "j2v-1.5.1.tar.gz", "has_sig": false, "md5_digest": "eaf9f10e2d76c7ed75faebeed7ea5ff1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 15469, "upload_time": "2020-01-17T09:11:20", "upload_time_iso_8601": "2020-01-17T09:11:20.357502Z", "url": "https://files.pythonhosted.org/packages/de/2b/5b2aba1396ac34a4c50d461860a141c320e0f8169eee4473f2b4a4e36d8b/j2v-1.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "fe4e91f5eaef3390921fa30013f123c3", "sha256": "469987ea349bf57628b35fdde6016a85ed0c39950a0059786cbbd1f53d6c6056" }, "downloads": -1, "filename": "j2v-1.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fe4e91f5eaef3390921fa30013f123c3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 19360, "upload_time": "2020-10-27T13:24:30", "upload_time_iso_8601": "2020-10-27T13:24:30.286786Z", "url": "https://files.pythonhosted.org/packages/6b/f9/8f19819b9ca00b3ea591ef492a8a2c758112b8d3854c47039181be6dc5da/j2v-1.5.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6c67286384218abe5d8bf0e29c85c270", "sha256": "b607429f65f567f2b17f7eba6d90f477a356d6170639f0996a92367db12f760d" }, "downloads": -1, "filename": "j2v-1.5.2.tar.gz", "has_sig": false, "md5_digest": "6c67286384218abe5d8bf0e29c85c270", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 15734, "upload_time": "2020-10-27T13:24:33", "upload_time_iso_8601": "2020-10-27T13:24:33.143131Z", "url": "https://files.pythonhosted.org/packages/0d/57/aee38923fc64bf87d62e340dd494d9287781f313132e824fa2dc108d26a8/j2v-1.5.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "b06c3c1554b417e1bffe3c90ec944cf7", "sha256": "e05175082cdb76ea15ca0971f264fca540db825fb9011e3d35b9878c85bad9d6" }, "downloads": -1, "filename": "j2v-1.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b06c3c1554b417e1bffe3c90ec944cf7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 20160, "upload_time": "2021-05-27T09:18:51", "upload_time_iso_8601": "2021-05-27T09:18:51.218785Z", "url": "https://files.pythonhosted.org/packages/d5/ef/b51cb90a61e1fc574ee001fc4a7ca7aeed8900cda78baa1e41cc741c1326/j2v-1.6.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "27cec79693b6c941eb3d45de6e05a821", "sha256": "a5c82285d9776d126698c51a0910deb658087eb09bbdcc524198bfcd8649275b" }, "downloads": -1, "filename": "j2v-1.6.0.tar.gz", "has_sig": false, "md5_digest": "27cec79693b6c941eb3d45de6e05a821", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 16877, "upload_time": "2021-05-27T09:18:52", "upload_time_iso_8601": "2021-05-27T09:18:52.971145Z", "url": "https://files.pythonhosted.org/packages/7e/32/e396f7c561df5a78e761205ea5334921919212b05ab73a1a781397e9295f/j2v-1.6.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b06c3c1554b417e1bffe3c90ec944cf7", "sha256": "e05175082cdb76ea15ca0971f264fca540db825fb9011e3d35b9878c85bad9d6" }, "downloads": -1, "filename": "j2v-1.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b06c3c1554b417e1bffe3c90ec944cf7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 20160, "upload_time": "2021-05-27T09:18:51", "upload_time_iso_8601": "2021-05-27T09:18:51.218785Z", "url": "https://files.pythonhosted.org/packages/d5/ef/b51cb90a61e1fc574ee001fc4a7ca7aeed8900cda78baa1e41cc741c1326/j2v-1.6.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "27cec79693b6c941eb3d45de6e05a821", "sha256": "a5c82285d9776d126698c51a0910deb658087eb09bbdcc524198bfcd8649275b" }, "downloads": -1, "filename": "j2v-1.6.0.tar.gz", "has_sig": false, "md5_digest": "27cec79693b6c941eb3d45de6e05a821", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 16877, "upload_time": "2021-05-27T09:18:52", "upload_time_iso_8601": "2021-05-27T09:18:52.971145Z", "url": "https://files.pythonhosted.org/packages/7e/32/e396f7c561df5a78e761205ea5334921919212b05ab73a1a781397e9295f/j2v-1.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }