{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "==================\n\n|CircleCI|\n\nDeterministic Data Driven Schema Modeling\n-----------------------------------------\n\nYour data should define your database schema, not the other way!\n\nAuto generate ORM models, infer normalization and cleaning functionality\ndirectly from your csv files in a **deterministic** way.\n\nWhy?\n====\n\nIf you have ever dealt with CSVs as your data delivery method for the\nsame model, you might have seen:\n\n- Field names that change over time\n- Field that are added or removed\n- Different variations of CSV with different formats for Null, Boolean,\n Datetime, Decimal and etc.\u00a0values.\n- CSVs with hundreds of fields\n- Handcrafting ORM and APIs based on all these variations.\n- Handcrafting API endpoint for the models.\n\nAnd the list goes on.\n\nModelMapper aims to solve all these problems by inferring the model from\nyour CSVs.\n\nInstall\n=======\n\n``pip install modelmapper``\n\nNote: ModelMapper requires Python 3.6 or higher.\n\nHow?\n====\n\n1. Import every training CSV one by one\n2. Normalize the field names based on the rules defined in settings:\n ``field_name_full_conversion`` and ``field_name_part_conversion``\n3. Analyze all the values per field per CSV to infer the type of the\n data and the functionality needed to clean and convert the data to\n proper formats for the database.\n4. Write the analysis results per CSV into individual TOML files. Up to\n this point no comparison between the CSVs are made.\n5. Combine the results between different CSVs to decide what should be\n the final decision for a field.\n6. Prompt the user if the system does not have high confidence in\n certain fields.\n7. The user is provided with option to override field info in a\n seperate overrides TOML file.\n8. Make the final decision about the field type and write into the ORM\n model file.\n9. The user can go ahead and verify the fields that were inserted into\n the ORM model are correct.\n10. Now the user can make Alembic migration files by doing alembic\n autogenerate.\n11. ModelMapper provides the functionality to clean each row of data\n before inserting into database. However it is left up to the user to\n use that functionality.\n\nWorkflow\n========\n\n1. Install modelmapper\n\n ``pip install modelmapper``\n\n2. Initiate the setup for a model\n\n ``modelmapper init mymodel``\n\n The wizard will guide you for configuration.\n\n3. Copy the training csv files to the same folder\n\n4. Git commit so you can see the diff of what will be generated.\n\n5. Generate the SQLAlchemy model and everything that is needed for\n cleaning your data!\n\n ``modelmapper run mymodel_setup.toml``\n\n6. Verify the generated models\n\n7. Run Alembic Autogenerate to create the database migration files\n\n8. Migrate the database\n\n9. Import the data via modelmapper: Initiate the Mapper with the path\n to your setup TOML file and read clean the CSVs via\n get_csv_data_cleaned function.\n\n10. It is left up to the user how to insert the cleaned data it into the\n database.\n\n11. You have new fields in the CSV or something changed? DO NOT MODIFY\n THE GENERATED MODELS DIRECTLY. Instead, add this csv to the list of\n training csvs in your settings TOML file. Re-train the system. Use\n git diff to see what has been changed.\n\nSettings\n========\n\nThe power of ModelMapper lies in how you can easily change the settings,\ntrain the model, look at the results, change the settings, add new\ntraining csvs, etc and quickly iterate through your model.\n\nThe settings are initialized for you by running\n``modelmapper init [identifier]``\n\nExample:\n\n.. code:: toml\n\n [settings]\n null_values = [\"\\\\n\", \"\", \"na\", \"unk\", \"null\", \"none\", \"nan\", \"1/0/00\", \"1/0/1900\", \"-\"] # Any string that should be considered null\n boolean_true = [\"true\", \"t\", \"yes\", \"y\", \"1\"] # Any string that should be considered boolean True\n boolean_false = [\"false\", \"f\", \"no\", \"n\", \"0\"] # Any string that should be considered boolean False\n dollar_to_cent = true # If yes, then when a field is marked as money field, the values in csv will be multiplied by 100 to be stored as cents in integer field. Even if the original data is decimal.\n percent_to_decimal = true # If yes, then when a field is marked as percent values, the csv values will be divided by 100 to be put in database. Example: 10 becomes 0.10\n add_digits_to_decimal_field = 2 # This is for padding decimal fields. If the biggest decimal size in your training csvs is for example xx.xxx, then padding of 2 on each side will define a database field that can fit xxxx.xxxxx\n add_to_string_length = 32 # Padding for string fields. If the biggest string length in your training csvs is X, then the db field size will be X + padding.\n datetime_allowed_characters = \"0123456789/:-\" # If a string value in your training csv has characters that are subset of characters in datetime_allowed_characters, then that string value will be evaluated for possibility of having datetime value.\n datetime_formats = [\"%m/%d/%y\", \"%m/%d/%Y\", \"%Y%m%d\"] # The list of any possible datetime formats in all your training csvs.\n field_name_full_conversion = [] # Use this to tell ModelMapper which field names should be considered to be the same field. This is useful if you have field names changing across different csvs. Example: [['field 1', 'field a'], ['field 2', 'field b']]\n field_name_part_conversion = [[\"#\", \"num\"], [\" (e)\", \"\"], [\"(y/n)\", \"\"], [\" (s)\", \"\"], [\" (e,s)\", \"\"], [\"yyyymmdd\", \"\"], [\")\", \"\"], [\"(\", \"\"], [\": \", \"_\"], [\" \", \"_\"], [\"/\", \"_\"], [\".\", \"_\"], [\"-\", \"_\"], [\"%\", \"_percent\"], [\"?\", \"\"], [\"!\", \"\"], [\",\", \"\"], [\"'\", \"\"], [\"&\", \"_and_\"], [\"@\", \"_at_\"], [\"$\", \"_dollar_\"], [\">=\", \"_bigger_or_equal_\"], [\">\", \"_bigger_\"], [\"<=\", \"_less_or_equal_\"], [\"<\", \"_less_\"], [\"=\", \"_equal_\"], [\"___\", \"_\"], [\"__\", \"_\"]] # list of words in field name that should be replaced by another word.\n dollar_value_if_word_in_field_name = [] # If the field name has any of these words, consider it as money field. It only matters if dollar_to_cent is True\n non_string_fields_are_all_nullable = true # If yes, any non string field will be automatically nullable. Otherwise only if you have null values in your training csv, then it will be marked as nullable.\n string_fields_can_be_nullable = false # Normally string fields should not be nullable since they can be just empty. If you set it to True, then if there are null values inside the string field in any of the training csvs, it will mark the field is nullable.\n training_csvs = [] # The list of relative paths to the training csvs\n output_model_file = '' # The relative path to the ORM model file that the output generated model will be inserted into.\n\n [settings.max_int]\n 32767 = \"SmallInteger\" # An integer field with ALL numbers below this in your training csv will be marked as SmallInteger. If you don't want any SmallIntegerfields, then remove this line.\n 2147483647 = \"Integer\" # An integer field with ALL numbers below this but at least one above SmallInteger in your training csv will be marked as Integer\n 9223372036854775807 = \"BigInteger\" # An integer field with ALL numbers below this but at least one above Integer in your training csv will be marked as BigInteger\n\nF.A.Q\n=====\n\nIs ModelMapper a one-off tool?\n------------------------------\n\nNo.\u00a0ModelMapper is designed to be deterministic. If it does not infer\nany data type changes in your training CSVs, it should keep your model\nintact. The idea is that your data should define your model, not the\nother way. ModelMapper will update your model ONLY if it infers from\nyour data that a change in your ORM schema is needed.\n\nI have certain fields in my ORM model that are not in the training CSVs. How does that work?\n--------------------------------------------------------------------------------------------\n\nModelMapper only deals with the chunk in your ORM file that is inbetween\nModelMapper\u2019s markers. You can have any other field and functionality\noutside those markers and ModelMapper won\u2019t touch them.\n\nSeems like ModelMapper is susceptible to SQL injection\n------------------------------------------------------\n\nThe training of ModelMapper should NEVER happen on a live server.\nModelMapper is ONLY intended for the development time. All it focuses on\nis to help the developer make the right choices in automatic fashion. It\nhas no need to even think about SQL injection. You have to use your\nORM\u2019s recommended methods to escape the data before putting it into your\ndatabase.\n\n.. |CircleCI| image:: https://circleci.com/gh/wearefair/modelmapper.svg?style=svg\n :target: https://circleci.com/gh/wearefair/modelmapper\n\nHome-page: https://github.com/wearefair/modelmapper\nAuthor: Sep Dehpour\nAuthor-email: sepd@fair.com\nLicense: UNKNOWN\nDownload-URL: https://github.com/wearefair/modelmapper/tarball/master\nDescription: UNKNOWN\nPlatform: UNKNOWN\nClassifier: Intended Audience :: Developers\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Software Development\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Development Status :: 4 - Beta\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "modelmapper", "package_url": "https://pypi.org/project/modelmapper/", "platform": "", "project_url": "https://pypi.org/project/modelmapper/", "project_urls": null, "release_url": "https://pypi.org/project/modelmapper/0.7.2/", "requires_dist": [ "pytoml (>=0.1.16)", "click (>=6.7)", "tabulate (>=0.8.2)", "xlrd (>=1.1.0)" ], "requires_python": "", "summary": "Model Mapper 0.4.5", "version": "0.7.2" }, "last_serial": 5101384, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "29ed531f0fc26e9675823c1280e86141", "sha256": "f1dd8e49de6867fb3fef15c33bfcc80df066a40431e66e80dd47feebc5d480cc" }, "downloads": -1, "filename": "modelmapper-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "29ed531f0fc26e9675823c1280e86141", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17407, "upload_time": "2018-06-29T22:17:24", "url": "https://files.pythonhosted.org/packages/78/18/83519bd67290072c4a5850ff3d6d232f6934a900ec7398a3c3098f0dac07/modelmapper-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53bd693e49008bd7022ccc4dd49325fb", "sha256": "21b88b7c32f1ab4f099127ee36fa82903a332fc64cdff63429bdd96a7dc7a951" }, "downloads": -1, "filename": "modelmapper-0.1.0.tar.gz", "has_sig": false, "md5_digest": "53bd693e49008bd7022ccc4dd49325fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19206, "upload_time": "2018-06-29T22:17:25", "url": "https://files.pythonhosted.org/packages/3d/d3/d59f05484268ab8e554d436d5cd042a4638c263883ba6d58fc60d0894a68/modelmapper-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "193f567f119a9a44838943005074ca28", "sha256": "a6fcd61d1ae201ff0a388b23d046fe8066fe7f51c1f78b8823e8cec4b5f16f4c" }, "downloads": -1, "filename": "modelmapper-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "193f567f119a9a44838943005074ca28", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17469, "upload_time": "2018-06-29T22:55:06", "url": "https://files.pythonhosted.org/packages/19/c2/f72c09ecadc7748f3371ffa4d0fc419dae63dc1bca1411760a051cbfcaa4/modelmapper-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc56240cfcb522ab89f1ba1957b297fb", "sha256": "8ba96695c894557b986703ad3ffde5be48083fc5e3c8fb1950f43b205fd1d37e" }, "downloads": -1, "filename": "modelmapper-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fc56240cfcb522ab89f1ba1957b297fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19255, "upload_time": "2018-06-29T22:55:07", "url": "https://files.pythonhosted.org/packages/0f/73/883ba2fb277621d13d757c505bf1d1c1e8d4468308455a11d8510081446e/modelmapper-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "5cfd43a41e2f881c8f4c2a2db6882e80", "sha256": "55032897f7247c0b575dc4283d6b0df38561fcd3b61922e97807e22490de90bd" }, "downloads": -1, "filename": "modelmapper-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5cfd43a41e2f881c8f4c2a2db6882e80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17676, "upload_time": "2018-07-02T06:54:00", "url": "https://files.pythonhosted.org/packages/b1/a9/915981f4ea6ca9446c8863948a009feb17cad4ede4c1dc580e9894ad65ac/modelmapper-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c966e1a6def5189764ea49b7d2d6001f", "sha256": "c3ac50e71997e2b90280bf1807b2d0a598bda06915a82b1d686aedced76bed64" }, "downloads": -1, "filename": "modelmapper-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c966e1a6def5189764ea49b7d2d6001f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19586, "upload_time": "2018-07-02T06:54:01", "url": "https://files.pythonhosted.org/packages/d8/ce/8f24f5d9df5e4c5ed89f45ec553eae93bb8b1e9f35759d3a64fc8300d4a2/modelmapper-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1f80534690c6b65f7a7e45910bb4bd0f", "sha256": "7ac5441c2d1144b84135866caf9a0bdd7921dea26a5e4dfb642d2511e07421b3" }, "downloads": -1, "filename": "modelmapper-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1f80534690c6b65f7a7e45910bb4bd0f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21150, "upload_time": "2018-07-06T05:24:41", "url": "https://files.pythonhosted.org/packages/24/ba/01f5f731b403fad9957fc6c40ea0a38ac7299d609ede5e4e1118b50efb8c/modelmapper-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de29df0d3d7ce3e4cfd3279fc0e935ff", "sha256": "22ff20ec4abce3299a6e4d9d4b7927a664de0b849237aee89c0cbb1511064dc4" }, "downloads": -1, "filename": "modelmapper-0.2.0.tar.gz", "has_sig": false, "md5_digest": "de29df0d3d7ce3e4cfd3279fc0e935ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22100, "upload_time": "2018-07-06T05:24:42", "url": "https://files.pythonhosted.org/packages/82/42/fea173bade51d87034e6b509d3895262092a1321c29b788509b68a4cef90/modelmapper-0.2.0.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "13d3766d278c601a09a84984e5bfd752", "sha256": "6f0822a8b45a0b07559b3f0cbc5b56e6c426035d1728387e7f4f08a333935d93" }, "downloads": -1, "filename": "modelmapper-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "13d3766d278c601a09a84984e5bfd752", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21556, "upload_time": "2018-07-09T19:43:00", "url": "https://files.pythonhosted.org/packages/55/81/b3f9ad1937a5f5089695ad3165ad41d21c24953f357807a5b9e3a5114270/modelmapper-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c58b42a1c78fc7ff4ce766d68a209f3a", "sha256": "78f06f1a2c09b44083c68d422df1b4ef992e9f78c3840ade8b31b75fb6f7c75d" }, "downloads": -1, "filename": "modelmapper-0.2.2.tar.gz", "has_sig": false, "md5_digest": "c58b42a1c78fc7ff4ce766d68a209f3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22464, "upload_time": "2018-07-09T19:43:01", "url": "https://files.pythonhosted.org/packages/09/9d/80ce83e957fea74040fe501bbe251ea04d15992ba493e22af5edb877debd/modelmapper-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7339132b23846292d43969a7e841ef07", "sha256": "981a8c4616e6b91327f98c1212c9a4f6c1e93ef851bc425773961c72d8023c76" }, "downloads": -1, "filename": "modelmapper-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7339132b23846292d43969a7e841ef07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26922, "upload_time": "2018-07-19T20:46:50", "url": "https://files.pythonhosted.org/packages/b8/79/29553493225410e8805a02184c4d0ec9cd1b660009fabb67a84c626786cc/modelmapper-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "738be523f2949121d4c741b06cadde6b", "sha256": "0cb7953447c97e05b988432bfee147a8f1dcc62ae7eda4eabcc87b37b54b4d0d" }, "downloads": -1, "filename": "modelmapper-0.3.0.tar.gz", "has_sig": false, "md5_digest": "738be523f2949121d4c741b06cadde6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26370, "upload_time": "2018-07-19T20:46:51", "url": "https://files.pythonhosted.org/packages/b1/25/0ca257fb85510b09ea921d851f7cca9de36215ff3c845cc7c342da68b4e7/modelmapper-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "f5093b235a6f08c3a9debe4c4345b088", "sha256": "ae842ff56e07df180ef0eadf29908cbe730e4e5995bbf63a6b3add685e529713" }, "downloads": -1, "filename": "modelmapper-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f5093b235a6f08c3a9debe4c4345b088", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31918, "upload_time": "2018-07-24T20:20:36", "url": "https://files.pythonhosted.org/packages/3e/67/f5c96227f91ff0054b7095eabe3fa510057315dfebddff66ab31dc30b141/modelmapper-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c054d98bec024640a64305ee8ea1bce8", "sha256": "abdc74d0b3abd7dce08aa1e6b4b203192ab75e97ce1ff2c9c8c61c5f0ca5d2ec" }, "downloads": -1, "filename": "modelmapper-0.4.0.tar.gz", "has_sig": false, "md5_digest": "c054d98bec024640a64305ee8ea1bce8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30166, "upload_time": "2018-07-24T20:20:37", "url": "https://files.pythonhosted.org/packages/2c/91/fb1ac49ffb17c661fbf08aa949529c16b40c63582c751a9da9700e118221/modelmapper-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "3b9db48966bc186f14025cf937f63c99", "sha256": "ec0590f4d5b9777f21cc00ce4769b61c088b08ff9d9915ae020408cf4a826aa1" }, "downloads": -1, "filename": "modelmapper-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3b9db48966bc186f14025cf937f63c99", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32212, "upload_time": "2018-07-25T23:21:18", "url": "https://files.pythonhosted.org/packages/90/e5/86d131bf8aeb220f68ac5499986ed5eb92f8b8d2f3f73bfcc2d41fab4c01/modelmapper-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "560802ae0c9312927c4dc636ff6e84fe", "sha256": "74076fdc30e796f11730fbd94d76e6b151f44be40dfa66bfd25ba671b8936979" }, "downloads": -1, "filename": "modelmapper-0.4.1.tar.gz", "has_sig": false, "md5_digest": "560802ae0c9312927c4dc636ff6e84fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30375, "upload_time": "2018-07-25T23:21:19", "url": "https://files.pythonhosted.org/packages/48/94/7e475147bed9f4ae7dfb2072ab26c2e0732365b090c5c4ee6058db7689bc/modelmapper-0.4.1.tar.gz" } ], "0.4.10": [ { "comment_text": "", "digests": { "md5": "23ef05ccbc6a0b920da5985a5315a874", "sha256": "ccd76563bf61dacb6f3f8338f7107a68e8b6be4888074ffcd9005f44fb4cb4dc" }, "downloads": -1, "filename": "modelmapper-0.4.10-py3-none-any.whl", "has_sig": false, "md5_digest": "23ef05ccbc6a0b920da5985a5315a874", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40395, "upload_time": "2018-11-19T18:53:59", "url": "https://files.pythonhosted.org/packages/f2/f8/79e778288aaac50d278067868a613141694994a65ed3467cdc9ae50d3bb6/modelmapper-0.4.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "552ade77e1a13e7c246072982b78baa3", "sha256": "f22120c240c3287fa21c9954bf94a91e78c25cb9a87cd63ec87d3fdd3470fc00" }, "downloads": -1, "filename": "modelmapper-0.4.10.tar.gz", "has_sig": false, "md5_digest": "552ade77e1a13e7c246072982b78baa3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36115, "upload_time": "2018-11-19T18:54:02", "url": "https://files.pythonhosted.org/packages/a4/1a/3440d60047d3b6abfca6ceef9a846e08c583a9d4857c7ad4375641832323/modelmapper-0.4.10.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "e6ff8ccf93f37d67933497533c188aa9", "sha256": "3fcccc1fa702d5903d3f3203df9e6d2d5d6465c3de7461920592c50a2fe6652c" }, "downloads": -1, "filename": "modelmapper-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e6ff8ccf93f37d67933497533c188aa9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34216, "upload_time": "2018-07-25T23:49:41", "url": "https://files.pythonhosted.org/packages/71/5e/b71b062db684713e5470cdd6a709a0f8a42ac04f36f8c60cc04eddb7e963/modelmapper-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "794251fd13c07440beecbcda26682275", "sha256": "931e185df3e53ae5f03bcc704ad13908e70fc16c3caa1566d7ac0aa184c788e5" }, "downloads": -1, "filename": "modelmapper-0.4.2.tar.gz", "has_sig": false, "md5_digest": "794251fd13c07440beecbcda26682275", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31008, "upload_time": "2018-07-25T23:49:42", "url": "https://files.pythonhosted.org/packages/8f/5b/94381820b7d2bcb3155ac5e35cf22b5661d47f366dd70450fd12999193e8/modelmapper-0.4.2.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "594eeaac7f67352e08c75eabad8c6526", "sha256": "ab4ed6a9f1189748f83b19f425b93e74e284f92370c344bce3f40db70bb9c4ed" }, "downloads": -1, "filename": "modelmapper-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "594eeaac7f67352e08c75eabad8c6526", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35004, "upload_time": "2018-07-28T00:43:00", "url": "https://files.pythonhosted.org/packages/07/72/1ac31eac394b8bbec0a9ca87343550a1485f878fa6309be8bf82d6c0ea36/modelmapper-0.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f177e91260f022f4fc8f35705a1afcc", "sha256": "c81b8e29727a1706a9101026278e6ca0bb1d22d17878b75d201cb83c8320422a" }, "downloads": -1, "filename": "modelmapper-0.4.4.tar.gz", "has_sig": false, "md5_digest": "9f177e91260f022f4fc8f35705a1afcc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31752, "upload_time": "2018-07-28T00:43:01", "url": "https://files.pythonhosted.org/packages/db/00/675d9f6c47a6ec300c23e3a1d46c81ae2fe559796bebc6767e1a2eb4a47f/modelmapper-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "4e9f7c547bd0ee31b041e5510b17bc4e", "sha256": "b23f3b3df440708da45a57f808bee51a17a611aab285ceb09007f1b1656a2942" }, "downloads": -1, "filename": "modelmapper-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "4e9f7c547bd0ee31b041e5510b17bc4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35112, "upload_time": "2018-08-02T15:39:48", "url": "https://files.pythonhosted.org/packages/37/7a/6536d5a1aa6f4b595dec23db48c12992b059cb6a24979305f0fb5ec557bc/modelmapper-0.4.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d1b2e6991867a9a2aa4f5b8e5a971600", "sha256": "37547d9c5f49cb40725d7818a3b29e38c0779619fb6cddf794b23b943169a701" }, "downloads": -1, "filename": "modelmapper-0.4.5.tar.gz", "has_sig": false, "md5_digest": "d1b2e6991867a9a2aa4f5b8e5a971600", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31851, "upload_time": "2018-08-02T15:39:50", "url": "https://files.pythonhosted.org/packages/cb/c6/232fb2ff224b408a3ff2ad5be642a24ae9416ca2a3846e82957fb5de105c/modelmapper-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "7e8e5e6bf6b9bff095a6a7170b894aad", "sha256": "9da07afac2d9106be85a015dcaf3a661e2ba4f97bc477950021c4f619e91c49d" }, "downloads": -1, "filename": "modelmapper-0.4.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7e8e5e6bf6b9bff095a6a7170b894aad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39739, "upload_time": "2018-08-09T21:25:22", "url": "https://files.pythonhosted.org/packages/49/05/2832b56aea61b4d35f7b9e1b7159c4fa6ca11ae179799c78d1cccf97182e/modelmapper-0.4.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1c27f6eb4d06f992e85ff49eb1d89a0", "sha256": "92946bbcd2e5625161d2065162fcc665db4531c522273ea03f5502999a0bc84f" }, "downloads": -1, "filename": "modelmapper-0.4.6.tar.gz", "has_sig": false, "md5_digest": "b1c27f6eb4d06f992e85ff49eb1d89a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35476, "upload_time": "2018-08-09T21:25:24", "url": "https://files.pythonhosted.org/packages/3b/47/b3e0ece3b7fabc01d2a2909cd515be0d26a3e7b5ba78e56eb21b5677c1ae/modelmapper-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "2c56a405f1c2051974eba69a5775036d", "sha256": "2c95bc1485ef88122ac3871eaf5c118b8b539827454b9dd21e3a0f0f55bba37a" }, "downloads": -1, "filename": "modelmapper-0.4.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2c56a405f1c2051974eba69a5775036d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39810, "upload_time": "2018-08-14T23:11:20", "url": "https://files.pythonhosted.org/packages/c5/a2/4b1f118eb4fb69bfabcda6c0203fdf325a1c5f4ddaa6203239d94d16bb4f/modelmapper-0.4.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77d6f10baeec45a2c4d5e6199a940936", "sha256": "935e03783eef1bc985a0af7034c4c47e7475fb412ef56197007609265ac1d633" }, "downloads": -1, "filename": "modelmapper-0.4.7.tar.gz", "has_sig": false, "md5_digest": "77d6f10baeec45a2c4d5e6199a940936", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35553, "upload_time": "2018-08-14T23:11:22", "url": "https://files.pythonhosted.org/packages/1d/67/3de9a180e3a8c7d2906285a81baf84d5d3b160dc60282d1dfdbf7bc6ff8a/modelmapper-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "f4200c17d67a252b8dbb9cddf8e95846", "sha256": "7e259c31b7664d0cba0818ca9691beeb12373f48e537f1a7ebbca08e4f293d35" }, "downloads": -1, "filename": "modelmapper-0.4.8-py3-none-any.whl", "has_sig": false, "md5_digest": "f4200c17d67a252b8dbb9cddf8e95846", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40260, "upload_time": "2018-08-21T20:56:42", "url": "https://files.pythonhosted.org/packages/b2/c6/a0ddbc5e3aa7227fbd5420aae8603c139f8bc9405e15ca704f83dd07d509/modelmapper-0.4.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "714b70736010368168438aada567c484", "sha256": "283f261140521360fcc7878f469eeda1053b6e9bf7098fa5d22bba25310e75a2" }, "downloads": -1, "filename": "modelmapper-0.4.8.tar.gz", "has_sig": false, "md5_digest": "714b70736010368168438aada567c484", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36001, "upload_time": "2018-08-21T20:56:43", "url": "https://files.pythonhosted.org/packages/46/cf/ca3b30d59b5d7c8cc5131f00bd340a6d050b73e888963562d4ee95c90a88/modelmapper-0.4.8.tar.gz" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "b1e3777d0be5670e189a5cf9cd2232e3", "sha256": "86cce07d788e39c9c293159967d615aaeb54f838b52fdff61600409097110ebb" }, "downloads": -1, "filename": "modelmapper-0.4.9-py3-none-any.whl", "has_sig": false, "md5_digest": "b1e3777d0be5670e189a5cf9cd2232e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40307, "upload_time": "2018-10-17T19:09:32", "url": "https://files.pythonhosted.org/packages/84/26/a7d9842d3fd41739cfd461123aafd290e554fcdaab6aab995c4a7ec4eeb3/modelmapper-0.4.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9014235303ca64cd4907103bbe5faa7", "sha256": "a4d0c2821e87edd0bb5d60ce4a422588cef595c763f00931dffff34f65fe3631" }, "downloads": -1, "filename": "modelmapper-0.4.9.tar.gz", "has_sig": false, "md5_digest": "d9014235303ca64cd4907103bbe5faa7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36052, "upload_time": "2018-10-17T19:09:34", "url": "https://files.pythonhosted.org/packages/67/b1/d5a675681ae8368bb1d103d9656d0727dc10696c7a0220b75ac412cdc9bb/modelmapper-0.4.9.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "20f5ffb6b9f712ed3adcde0bd83bd5f9", "sha256": "4afeea662509cdeacbd4d39b378642c466e060c132d52e136d4dfb06ccf7fce2" }, "downloads": -1, "filename": "modelmapper-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "20f5ffb6b9f712ed3adcde0bd83bd5f9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42111, "upload_time": "2019-02-14T18:06:33", "url": "https://files.pythonhosted.org/packages/d9/ea/7d7bcd78cbd56d3e01e2a1279ca1eda7f1cd4e344c5a34d9694768898c39/modelmapper-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9b6195752557d55b5b2cf42ce80973d", "sha256": "9849df38e26666f113a0f1571af0ef7ae081961cfe72ab68e5bbf5f0711a7332" }, "downloads": -1, "filename": "modelmapper-0.5.0.tar.gz", "has_sig": false, "md5_digest": "b9b6195752557d55b5b2cf42ce80973d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37471, "upload_time": "2019-02-14T18:06:35", "url": "https://files.pythonhosted.org/packages/4a/a6/4dc54227141b3e308d86d00a9c84a497715084554f14a8961cc239568ff6/modelmapper-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "817658e08ca8755e7c019d28b7e3214c", "sha256": "a09f6ad2b028ba61b2c17c81eb8ce7648e5b2cb88477833029e7ad33dd89df5d" }, "downloads": -1, "filename": "modelmapper-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "817658e08ca8755e7c019d28b7e3214c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 42397, "upload_time": "2019-02-20T01:46:34", "url": "https://files.pythonhosted.org/packages/8f/72/c122d8bf7f7dde6ef8d1f169eda4e8899701c968a31654e9f884396a245e/modelmapper-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "185da8b3ed1c8ab223d112b221edde89", "sha256": "7f5d9852d8a3177d9fffd7477b00f2864c7b332cc94b8bbef825879e3ac7f4b3" }, "downloads": -1, "filename": "modelmapper-0.6.0.tar.gz", "has_sig": false, "md5_digest": "185da8b3ed1c8ab223d112b221edde89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37749, "upload_time": "2019-02-20T01:46:36", "url": "https://files.pythonhosted.org/packages/c8/a0/c4863725b22e683b92880a73503a88830797b1c580cee7a5096e17773eaa/modelmapper-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "22ea51c8cbe38099bd13252904fb50be", "sha256": "108af5e62dcf5b7a05cf06770d8ed83d7eca22e85a09e999c0347ecc937d8a95" }, "downloads": -1, "filename": "modelmapper-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "22ea51c8cbe38099bd13252904fb50be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43217, "upload_time": "2019-02-27T21:50:59", "url": "https://files.pythonhosted.org/packages/59/6c/b7d09ca6e87c0b56b09c161c888b499678add1e4409cde2d9bba8d070a4a/modelmapper-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d3df73dfdc31d40fb45d3befe148ba71", "sha256": "2d3b4e2cccc77f6bca549d9c0a7af7d22405097551b0acea28cd28c620b7c7c6" }, "downloads": -1, "filename": "modelmapper-0.7.0.tar.gz", "has_sig": false, "md5_digest": "d3df73dfdc31d40fb45d3befe148ba71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38591, "upload_time": "2019-02-27T21:51:01", "url": "https://files.pythonhosted.org/packages/11/3a/bb3ef08b5a4d70d6ab81a0e6b1b112a0a437e00708ea0b1245a5815e771e/modelmapper-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "a1381e77474e5e43de28d2815f34f70f", "sha256": "ae4c18ebf7ff5504f399320378a7d3564cdbd4a7d2b23f9c51e49a5e0403bb68" }, "downloads": -1, "filename": "modelmapper-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a1381e77474e5e43de28d2815f34f70f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43209, "upload_time": "2019-03-29T21:41:13", "url": "https://files.pythonhosted.org/packages/39/b0/d0f8eeb876d5e87d29b28b522dec7d22c6b8f79877f3f17c5f7fdea29a0d/modelmapper-0.7.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f2334f0ec61a42fd5cebb04b7f1d3f92", "sha256": "02d03ccbb1433fdaf39ae64cc38165aaeaa306fc45f7eae3acca4f799d802abf" }, "downloads": -1, "filename": "modelmapper-0.7.1.tar.gz", "has_sig": false, "md5_digest": "f2334f0ec61a42fd5cebb04b7f1d3f92", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38594, "upload_time": "2019-03-29T21:41:15", "url": "https://files.pythonhosted.org/packages/26/09/6a0d54bbba9cc06c57910a9ceef819cf66050686f7ad0efdc8c3357525ae/modelmapper-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "72449cb2926505f409b50043acf3ac50", "sha256": "ea941eb1f674db97df306bbb23256e45d656bbdbc58923b232f4a7dd35ae49e5" }, "downloads": -1, "filename": "modelmapper-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "72449cb2926505f409b50043acf3ac50", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43207, "upload_time": "2019-04-04T23:29:26", "url": "https://files.pythonhosted.org/packages/c6/db/1d3192298998d8db57ca463b4ea3e8e5ccc6bf1d27be0b825eb35994a6a0/modelmapper-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7483b5e92942f1f4d3e3cb754f7e5da0", "sha256": "f6026d010baa302a5e79c16a0c4040f1fdd8c83340422aa514457465bcca4277" }, "downloads": -1, "filename": "modelmapper-0.7.2.tar.gz", "has_sig": false, "md5_digest": "7483b5e92942f1f4d3e3cb754f7e5da0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38593, "upload_time": "2019-04-04T23:29:28", "url": "https://files.pythonhosted.org/packages/34/1b/ab4263944fc762ce83970de3d5423a8c9f289279d8a720b664a8e0ce20f0/modelmapper-0.7.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "72449cb2926505f409b50043acf3ac50", "sha256": "ea941eb1f674db97df306bbb23256e45d656bbdbc58923b232f4a7dd35ae49e5" }, "downloads": -1, "filename": "modelmapper-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "72449cb2926505f409b50043acf3ac50", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43207, "upload_time": "2019-04-04T23:29:26", "url": "https://files.pythonhosted.org/packages/c6/db/1d3192298998d8db57ca463b4ea3e8e5ccc6bf1d27be0b825eb35994a6a0/modelmapper-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7483b5e92942f1f4d3e3cb754f7e5da0", "sha256": "f6026d010baa302a5e79c16a0c4040f1fdd8c83340422aa514457465bcca4277" }, "downloads": -1, "filename": "modelmapper-0.7.2.tar.gz", "has_sig": false, "md5_digest": "7483b5e92942f1f4d3e3cb754f7e5da0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38593, "upload_time": "2019-04-04T23:29:28", "url": "https://files.pythonhosted.org/packages/34/1b/ab4263944fc762ce83970de3d5423a8c9f289279d8a720b664a8e0ce20f0/modelmapper-0.7.2.tar.gz" } ] }