From 0e04fce2d16dc841b29a089fa3e87d957bd816a6 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 20:35:18 +0300 Subject: [PATCH 01/19] README --- README.md | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ etc/convert.png | Bin 0 -> 26222 bytes etc/logo.png | Bin 0 -> 17609 bytes 3 files changed, 86 insertions(+) create mode 100644 README.md create mode 100644 etc/convert.png create mode 100644 etc/logo.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..b634d08 --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +[![json2python-models](/etc/logo.png)](https://github.com/bogdandm/json2python-models) + +# JSON to Python models + +[![PyPI version](https://badge.fury.io/py/json2python-models.svg)](https://badge.fury.io/py/json2python-models) +[![Build Status](https://travis-ci.org/bogdandm/json2python-models.svg?branch=master)](https://travis-ci.org/bogdandm/json2python-models) +[![Coverage Status](https://coveralls.io/repos/github/bogdandm/json2python-models/badge.svg?branch=master)](https://coveralls.io/github/bogdandm/json2python-models?branch=master) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/11e13f2b81d7450eb0bca4b941d16d81)](https://www.codacy.com/app/bogdandm/json2python-models?utm_source=github.com&utm_medium=referral&utm_content=bogdandm/json2python-models&utm_campaign=Badge_Grade) + +![Example](/etc/convert.png) + +json2python-models is a [Python](https://www.python.org/) tool that can generate Python models classes +(dataclasses, attrs) from JSON dataset. + +It could handle recursive data structures, detect complex datatypes, generalize similar models, etc. + +## Features + +* Full `typing` module support +* Types merging - if some field could contains data of different types it will handle it +* Fields and models names generation (unicode support included) +* Similar models generalization +* Handling recursive data structures (i.e family tree) +* Detecting string literals (i.e. datetime or just stringify numbers) +* Generation models as tree (nested models) or list +* Specifying when dictionaries should be processed as is +* CLI tool + +## Installation + +> **Be ware**: it supports only `python3.7` and higher. + +To install Requests, use `pip`: + +`pip install` + +Or you can build it from source: + +``` +git clone https://github.com/bogdandm/json2python-models.git +cd json2python-models +python setup.py install +``` + + +## Tests + +To run tests you should clone project and install `pytest` and `requests` (to download online datasets): + +``` +git clone https://github.com/bogdandm/json2python-models.git +cd json2python-models +pip install pytest>=4.4.0 +python setup.py install +python setup.py test -a '' +or +pytest tests +``` + +Also I would recommend you to install `pytest-xdist` for parallel execution +and `pytest-sugar` for pretty printing test results + +### Test examples + +> + +## Built With + +* [python-dateutil](https://github.com/dateutil/dateutil) - Datetime parsing +* [inflection](https://github.com/jpvanhal/inflection) - String transformations +* [Unidecode](https://pypi.org/project/Unidecode/) - Unicode to ASCII conversion +* [Jinja2](https://github.com/pallets/jinja) - Code templates +* [ordered-set](https://github.com/LuminosoInsight/ordered-set) is used in models merging algorithm + +## Contributing + +Feel free to open pull requests with new features or bug fixes. Just follow few rules: +1. Always use some code formatter ([black](https://github.com/ambv/black) or PyCharm built-in) +2. Keep code coverage above 95-98% +3. All existing tests should be passed (including test examples) +4. Use `typing` module +5. Fix [codacy](https://app.codacy.com/project/bogdandm/json2python-models/dashboard) issues + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details diff --git a/etc/convert.png b/etc/convert.png new file mode 100644 index 0000000000000000000000000000000000000000..68e1d462232c5f6f220ffa7a77d2bf7c9913f57f GIT binary patch literal 26222 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 P6CyQbO{F45lYsvNU>8o% literal 0 HcmV?d00001 diff --git a/etc/logo.png b/etc/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc2c742728cf41efb1d6b1991fa366db02b85af GIT binary patch literal 17609 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 literal 0 HcmV?d00001 From 8408604f49fa0794815e5d1e933d353eb28305c2 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 20:39:36 +0300 Subject: [PATCH 02/19] README --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index b634d08..85f5137 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ [![json2python-models](/etc/logo.png)](https://github.com/bogdandm/json2python-models) -# JSON to Python models - [![PyPI version](https://badge.fury.io/py/json2python-models.svg)](https://badge.fury.io/py/json2python-models) [![Build Status](https://travis-ci.org/bogdandm/json2python-models.svg?branch=master)](https://travis-ci.org/bogdandm/json2python-models) [![Coverage Status](https://coveralls.io/repos/github/bogdandm/json2python-models/badge.svg?branch=master)](https://coveralls.io/github/bogdandm/json2python-models?branch=master) @@ -12,8 +10,6 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate Python models classes (dataclasses, attrs) from JSON dataset. -It could handle recursive data structures, detect complex datatypes, generalize similar models, etc. - ## Features * Full `typing` module support @@ -28,7 +24,9 @@ It could handle recursive data structures, detect complex datatypes, generalize ## Installation -> **Be ware**: it supports only `python3.7` and higher. + To install Requests, use `pip`: @@ -51,7 +49,7 @@ To run tests you should clone project and install `pytest` and `requests` (to do git clone https://github.com/bogdandm/json2python-models.git cd json2python-models pip install pytest>=4.4.0 -python setup.py install + python setup.py test -a '' or pytest tests From f08d378663c16412241c7b9f9dad4b7fc992e7cd Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 20:41:41 +0300 Subject: [PATCH 03/19] README --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 85f5137..28fa55d 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,8 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate ## Installation - +| **Be ware**: it supports only `python3.7` and higher. | +| --- | To install Requests, use `pip`: From 7a56a14b081187cd6673a3ee0abd21e17a01c2f2 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 22:22:34 +0300 Subject: [PATCH 04/19] README and update examples --- README.md | 138 +++++++++++++++++++++++-- etc/logo.png | Bin 17609 -> 16344 bytes testing_tools/real_apis/f1.py | 5 +- testing_tools/real_apis/openlibrary.py | 16 +-- testing_tools/real_apis/pathofexile.py | 8 +- testing_tools/real_apis/randomapis.py | 14 ++- 6 files changed, 153 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 28fa55d..3ea853f 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,112 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate * Specifying when dictionaries should be processed as is * CLI tool +## Examples +[*skip*](#installation) + +```json +[ + { + "season": "2019", + "round": "3", + "DriverStandings": [ + { + "position": "1", + "positionText": "1", + "points": "68", + "wins": "2", + "Driver": { + "driverId": "hamilton", + "permanentNumber": "44", + "code": "HAM", + "url": "http://en.wikipedia.org/wiki/Lewis_Hamilton", + "givenName": "Lewis", + "familyName": "Hamilton", + "dateOfBirth": "1985-01-07", + "nationality": "British" + }, + "Constructors": [ + { + "constructorId": "mercedes", + "url": "http://en.wikipedia.org/wiki/Mercedes-Benz_in_Formula_One", + "name": "Mercedes", + "nationality": "German" + } + ] + }, + { + "position": "2", + "positionText": "2", + "points": "62", + "wins": "1", + "Driver": { + "driverId": "bottas", + "permanentNumber": "77", + "code": "BOT", + "url": "http://en.wikipedia.org/wiki/Valtteri_Bottas", + "givenName": "Valtteri", + "familyName": "Bottas", + "dateOfBirth": "1989-08-28", + "nationality": "Finnish" + }, + "Constructors": [ + { + "constructorId": "mercedes", + "url": "http://en.wikipedia.org/wiki/Mercedes-Benz_in_Formula_One", + "name": "Mercedes", + "nationality": "German" + } + ] + } + ] + } +] +``` + +```python +import attr +from json_to_models.dynamic_typing import IntString, IsoDateString +from typing import List + + +@attr.s +class DriverStandings: + @attr.s + class DriverStanding: + @attr.s + class Driver: + driver_id: str = attr.ib() + permanent_number: IntString = attr.ib(converter=IntString) + code: str = attr.ib() + url: str = attr.ib() + given_name: str = attr.ib() + family_name: str = attr.ib() + date_of_birth: IsoDateString = attr.ib(converter=IsoDateString) + nationality: str = attr.ib() + + @attr.s + class Constructor: + constructor_id: str = attr.ib() + url: str = attr.ib() + name: str = attr.ib() + nationality: str = attr.ib() + + position: IntString = attr.ib(converter=IntString) + position_text: IntString = attr.ib(converter=IntString) + points: IntString = attr.ib(converter=IntString) + wins: IntString = attr.ib(converter=IntString) + driver: 'Driver' = attr.ib() + constructors: List['Constructor'] = attr.ib() + + season: IntString = attr.ib(converter=IntString) + round: IntString = attr.ib(converter=IntString) + driver_standings: List['DriverStanding'] = attr.ib() +``` + ## Installation -| **Be ware**: it supports only `python3.7` and higher. | -| --- | +| **Be ware**: this project supports only `python3.7` and higher. | +| --- | To install Requests, use `pip`: @@ -39,6 +141,15 @@ cd json2python-models python setup.py install ``` +## Usage + +### CLI + +> Coming soon + +### Low level + +> Coming soon (Wiki) ## Tests @@ -47,19 +158,23 @@ To run tests you should clone project and install `pytest` and `requests` (to do ``` git clone https://github.com/bogdandm/json2python-models.git cd json2python-models -pip install pytest>=4.4.0 -python setup.py test -a '' -or -pytest tests +python setup.py test -a '' ``` -Also I would recommend you to install `pytest-xdist` for parallel execution -and `pytest-sugar` for pretty printing test results +Also I would recommend you to install `pytest-sugar` for pretty printing test results ### Test examples -> +You can find out some examples of usage of this project at [testing_tools/real_apis/...](/testing_tools/real_apis) + +Each file contains functions to download data from some online API (references included at the top of file) and +`main` function that generate and print code. Some examples may print debug data before actual code. +Downloaded data will be saved at `testing_tools/real_apis//.json` + +## API docs + +> Coming soon (Wiki) ## Built With @@ -72,11 +187,12 @@ and `pytest-sugar` for pretty printing test results ## Contributing Feel free to open pull requests with new features or bug fixes. Just follow few rules: + 1. Always use some code formatter ([black](https://github.com/ambv/black) or PyCharm built-in) 2. Keep code coverage above 95-98% -3. All existing tests should be passed (including test examples) +3. All existing tests should be passed (including test examples from `testing_tools/real_apis`) 4. Use `typing` module -5. Fix [codacy](https://app.codacy.com/project/bogdandm/json2python-models/dashboard) issues +5. Fix [codacy](https://app.codacy.com/project/bogdandm/json2python-models/dashboard) issues from your PR ## License diff --git a/etc/logo.png b/etc/logo.png index 7bc2c742728cf41efb1d6b1991fa366db02b85af..c05be9d65ac1592e6e6d7f27c133f83af4ba60ac 100644 GIT binary patch literal 16344 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 diff --git a/testing_tools/real_apis/f1.py b/testing_tools/real_apis/f1.py index fad35c0..502d687 100644 --- a/testing_tools/real_apis/f1.py +++ b/testing_tools/real_apis/f1.py @@ -11,7 +11,6 @@ from json_to_models.models.attr import AttrsModelCodeGenerator from json_to_models.models.base import generate_code from json_to_models.registry import ModelRegistry -from json_to_models.utils import json_format from testing_tools.pprint_meta_data import pretty_format_meta from testing_tools.real_apis import dump_response @@ -58,8 +57,8 @@ def main(): print("=" * 20, end='') structure = compose_models(reg.models_map) - print('\n', json_format([structure[0], {str(a): str(b) for a, b in structure[1].items()}])) - print("=" * 20) + # print('\n', json_format([structure[0], {str(a): str(b) for a, b in structure[1].items()}])) + # print("=" * 20) print(generate_code(structure, AttrsModelCodeGenerator)) diff --git a/testing_tools/real_apis/openlibrary.py b/testing_tools/real_apis/openlibrary.py index 3287130..37e6625 100644 --- a/testing_tools/real_apis/openlibrary.py +++ b/testing_tools/real_apis/openlibrary.py @@ -4,8 +4,10 @@ import requests from json_to_models.generator import MetadataGenerator +from json_to_models.models import compose_models +from json_to_models.models.attr import AttrsModelCodeGenerator +from json_to_models.models.base import generate_code from json_to_models.registry import ModelRegistry -from testing_tools.pprint_meta_data import pretty_format_meta from testing_tools.real_apis import dump_response session = requests.Session() @@ -44,16 +46,16 @@ def main(): gen = MetadataGenerator() reg = ModelRegistry() - for data in (search_result, books): - reg.process_meta_data(gen.generate(*data)) + reg.process_meta_data(gen.generate(*search_result), model_name="Search") + reg.process_meta_data(gen.generate(*books), model_name="Book") reg.merge_models(generator=gen) - print("\n" + "=" * 20, end='') + print("\n" + "=" * 20) for model in reg.models: model.generate_name() - for model in reg.models: - print(pretty_format_meta(model)) - print("\n" + "=" * 20, end='') + + structure = compose_models(reg.models_map) + print(generate_code(structure, AttrsModelCodeGenerator)) if __name__ == '__main__': diff --git a/testing_tools/real_apis/pathofexile.py b/testing_tools/real_apis/pathofexile.py index ea6335c..afc4449 100644 --- a/testing_tools/real_apis/pathofexile.py +++ b/testing_tools/real_apis/pathofexile.py @@ -1,5 +1,5 @@ """ -Path of Exile API http://www.pathofexile.com/developer/docs/api-resource-public-stash-tabs +Path of Exile Stash API http://www.pathofexile.com/developer/docs/api-resource-public-stash-tabs """ from datetime import datetime @@ -10,7 +10,6 @@ from json_to_models.models.attr import AttrsModelCodeGenerator from json_to_models.models.base import generate_code from json_to_models.registry import ModelRegistry -from json_to_models.utils import json_format from testing_tools.pprint_meta_data import pretty_format_meta from testing_tools.real_apis import dump_response @@ -34,12 +33,13 @@ def main(): reg.merge_models(generator=gen) reg.generate_names() + print("Meta tree:") print(pretty_format_meta(next(iter(reg.models)))) print("\n" + "=" * 20, end='') structure = compose_models_flat(reg.models_map) - print('\n', json_format([structure[0], {str(a): str(b) for a, b in structure[1].items()}])) - print("=" * 20) + # print('\n', json_format([structure[0], {str(a): str(b) for a, b in structure[1].items()}])) + # print("=" * 20) print(generate_code(structure, AttrsModelCodeGenerator)) print(f"{(datetime.now() - start_t).total_seconds():.4f} seconds") diff --git a/testing_tools/real_apis/randomapis.py b/testing_tools/real_apis/randomapis.py index cf7d2b2..2df337c 100644 --- a/testing_tools/real_apis/randomapis.py +++ b/testing_tools/real_apis/randomapis.py @@ -39,11 +39,19 @@ def main(): gen = MetadataGenerator() reg = ModelRegistry() - for data in ([chroniclingamerica_data], [launchlibrary_data], university_domains_data): - fields = gen.generate(*data) - reg.process_meta_data(fields) + + fields = gen.generate(chroniclingamerica_data) + reg.process_meta_data(fields, model_name="CHRONICLING") + + fields = gen.generate(launchlibrary_data) + reg.process_meta_data(fields, model_name="LaunchLibrary") + + fields = gen.generate(*university_domains_data) + reg.process_meta_data(fields, model_name="Universities") + reg.merge_models(generator=gen) reg.generate_names() + structure = compose_models(reg.models_map) print(generate_code(structure, AttrsModelCodeGenerator)) From 4b6ad47bb554f38db80d818bcf9fdaad18092f6e Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 22:26:25 +0300 Subject: [PATCH 05/19] README and update examples --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 3ea853f..e95a3fa 100644 --- a/README.md +++ b/README.md @@ -13,17 +13,17 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate ## Features * Full `typing` module support -* Types merging - if some field could contains data of different types it will handle it -* Fields and models names generation (unicode support included) -* Similar models generalization -* Handling recursive data structures (i.e family tree) -* Detecting string literals (i.e. datetime or just stringify numbers) -* Generation models as tree (nested models) or list -* Specifying when dictionaries should be processed as is -* CLI tool +* **Types merging** - if some field contains data of different types this will be represent as `Union` type +* Fields and models **names** generation (unicode support included) +* Similar **models generalization** +* Handling **recursive data** structures (i.e family tree) +* Detecting **string literals** (i.e. datetime or just stringify numbers) +* Generation models as **tree** (nested models) or **list** +* Specifying when dictionaries should be processed as **`dict` type** (by default every dict is considered as some model) +* **CLI** tool ## Examples -[*skip*](#installation) +[*skip to **Installation***](#installation) ```json [ From 0a5ad366fdef4883c71008a4c21419b1a360878c Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 22:26:58 +0300 Subject: [PATCH 06/19] README and update examples --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e95a3fa..03238bc 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate ## Features -* Full `typing` module support +* Full **`typing` module** support * **Types merging** - if some field contains data of different types this will be represent as `Union` type * Fields and models **names** generation (unicode support included) * Similar **models generalization** From a98b55365ac2952c152536a4e693bb981478fb39 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 22:36:43 +0300 Subject: [PATCH 07/19] README --- README.md | 38 +++++++------------------------------- etc/convert.png | Bin 26222 -> 26224 bytes 2 files changed, 7 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 03238bc..715262b 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,10 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate * Specifying when dictionaries should be processed as **`dict` type** (by default every dict is considered as some model) * **CLI** tool -## Examples +## Example [*skip to **Installation***](#installation) -```json +``` [ { "season": "2019", @@ -55,30 +55,7 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate } ] }, - { - "position": "2", - "positionText": "2", - "points": "62", - "wins": "1", - "Driver": { - "driverId": "bottas", - "permanentNumber": "77", - "code": "BOT", - "url": "http://en.wikipedia.org/wiki/Valtteri_Bottas", - "givenName": "Valtteri", - "familyName": "Bottas", - "dateOfBirth": "1989-08-28", - "nationality": "Finnish" - }, - "Constructors": [ - { - "constructorId": "mercedes", - "url": "http://en.wikipedia.org/wiki/Mercedes-Benz_in_Formula_One", - "name": "Mercedes", - "nationality": "German" - } - ] - } + ... ] } ] @@ -129,9 +106,9 @@ class DriverStandings: | **Be ware**: this project supports only `python3.7` and higher. | | --- | -To install Requests, use `pip`: +To install it, use `pip`: -`pip install` +`pip install json2pytho-models` Or you can build it from source: @@ -153,12 +130,11 @@ python setup.py install ## Tests -To run tests you should clone project and install `pytest` and `requests` (to download online datasets): +To run tests you should clone project and run `setup.py` script: ``` git clone https://github.com/bogdandm/json2python-models.git cd json2python-models - python setup.py test -a '' ``` @@ -169,7 +145,7 @@ Also I would recommend you to install `pytest-sugar` for pretty printing test re You can find out some examples of usage of this project at [testing_tools/real_apis/...](/testing_tools/real_apis) Each file contains functions to download data from some online API (references included at the top of file) and -`main` function that generate and print code. Some examples may print debug data before actual code. +`main` function that generates and prints code. Some examples may print debug data before actual code. Downloaded data will be saved at `testing_tools/real_apis//.json` ## API docs diff --git a/etc/convert.png b/etc/convert.png index 68e1d462232c5f6f220ffa7a77d2bf7c9913f57f..e1a88ab5d8b9b1880e020a9d15dd49c5cb868f3d 100644 GIT binary patch literal 26224 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 S!T&lrbx%=40WN3$?Ee6EQO^7T literal 26222 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 P6CyQbO{F45lYsvNU>8o% From 2f340fc4ad7572676a4ecfa4c924f5e404a37e82 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 22:42:54 +0300 Subject: [PATCH 08/19] README --- etc/convert.png | Bin 26224 -> 31503 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/etc/convert.png b/etc/convert.png index e1a88ab5d8b9b1880e020a9d15dd49c5cb868f3d..02b7f28c77c11b07a0108af8bda4e584d36ca6f4 100644 GIT binary patch literal 31503 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 S!T&lrbx%=40WN3$?Ee6EQO^7T From 8042a81c9340527faa446d228c74df86d2f0c3c4 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Tue, 23 Apr 2019 22:46:00 +0300 Subject: [PATCH 09/19] README --- etc/convert.png | Bin 31503 -> 31284 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/etc/convert.png b/etc/convert.png index 02b7f28c77c11b07a0108af8bda4e584d36ca6f4..1b5bb8442ee3d1a54201bb92d0fc1e91b3f694c8 100644 GIT binary patch literal 31284 zcmbTeWmpt_*f+fN0s>2SEGQk)NVB8}NJvO`$I>Cq(k+dIfJ&Eybhk(-CEZ<$bUlOD zb=ULW@B88X;ISM#yR$Rr%$(=1{zj^*$m3v9V1Ym&oaYKM>L3tu7YKx82Sx|pncF!s z1zs@W3a?#3AZ)^ie@LLrEHdB|0yfgps;bsbZceV&PH?*C($aKr7bi;_dkYZAYqmVD zTCrP|NOCkfe^r$Y)fw)U#LQg3YuxvNLl#mt2_2mJkf&%vU}!k$k0{W?AoXnT7*vC+ z-XPygI`1w+pdlgPoSpgZ4VTWM8TUeyWD|(pq@(cnQ{QLTJ&!a%W0*A)j&-=8)yHuc zom*_k%icdKL~!okf-FZ*eV=ZEcnAE@p1QjgBiTL|R<~-^;3!SCc;5UDHBpqtLYTtbMFN*F zg|VcdfHUD9qr%M#_E1j8wx-tml^8^G63;}^I?}68C5J(*i zLL$}yfrQgQAX2AkUD^bopkB{qq+WT=?zaYHX-sC{-wX2wzE`o4MaP(@bzp)97ZaI$ z5j;pcbaQqE`B4Jxm zgu^kZ{^qzJL`mQ_SHZ(mM2sJr@qFYw{!P;SJ9A4%%eNWko2P%AX?O+)8@F=iv#y6k zDo?~=ikL7k6aj%TQo2(i|MMqQ>F+z>(5DX@z)+&Dzb^i`D%^2bO~AGax*jJrxt1PoEJuD?RLrPy-Y#io_m-*xql&TSzb&Q7-+RK`<$)yhb_frC7N z2^pbU4M`??m#t!NvN9qvNRuF@F6w;RYD0rOjF;ofEb2poUd2Gw{`4^Q9BtWj<&lhO zwnGG1e1MN846=Fjb2yn3V=tT5gYR7A!5NQ~z7lp^4OC0UzWKYes1?(I_!o-kBx(YuCL7AcjvpV0Z8Gq_Mpp#9f@N{<7XGB9t`sqC8*5am zk;j?-b@&a6SspeU$3Mqm^nU2K+*Aaa06D&RY~b3P<6guedV|esbX^2S7aGC>LM*0f z1yM&wl3B*DcwPeXgf+y06tM}$EvjDmg|8h)&_dVm=*`Fa?CLzmta^*P$v%crvDu-X zm=f?b_QEwcV$1NMWx0aN(Z;YLWu8Snv#wiaSTbIn0ymN@HY-EPS09QZS}-@nn>^>H?sx*SL{5K#2~DB_ zwPP$}fof_SR|p&`(o5b!*o3t;rN_UeklL6XLml+*ARU@$D5U-{TV1`IZ*#~PVvswiQ-c%(+3f~EzF(K`qP9zOp3lgx(~ZT-yR;1xf8WlNDRHl z=1jR6c{HvPhxo(RU0Wc)xDYseWXsaey5Fo9Ca+q!tRpLIQIc&kX2g3r9eQb3pna91 zOyC6z!V zKY!x1KqepZaM$HqWit8{KKfNNV;+T!ClDSNXCPv7y5YYVcbOwehgmcg<$ePs{S=m8{#rj7Jt9`9?8!h5w>BJ{S7zSlEJE$C&}^dABs)yU(|Rcrts*zs z-|Yx;l-5(L>~#}i#rHxGi@%wHoAK3}9rlDtX!W3!jyi5v4xh(l7HJ5DVO}&FKt9rx z+NZY)#C2>4=U+FIirZ~c@V=qO^%P6PGb}A=*OKpmy9US}Vz`?XLT;4`DzhdH;O2U;Nmg28c<`QpAq+FZy$c^s9 zMIzb35bTE^E_q+Ako4qp)0b9{q5?u3A8{PlHwKMWh;~|U>U3vM`J85sE$($b^>b*L zww|6TR}G1r<=5(R7n(TDI;d>p$~aThfOF&vLsHR-X9)A zMRoYn=^Ma1ZcT2~^FEVff@5Q927KIc#G!N-M)sP1kaDFlm&D z9MC#_`kpwMb7*L5_u0%fvR@O{y|531yo2`O@}DMu55}?JPbrb;3=>A4{iYwQL>&8m zhrtN{Slq27jw*CWqNm1~Gjh72l(q*7;b`J%(Fe{tc2NR5{7rs>Oo9AnaoNZAt)R z#9wUwi+8TYM&WY zqK+1fLbOwIn%sEnwd;&1iLAw~P_Ui2Z|j$PhXa>qt4@~TW=;I`F+3@`X5BTX2yfzXZJHrSON2L9QO1EQ* z9PI}B?DAkJf2<>$e)+3YWtP<-$P-6=eRLu{*OaV#l~X^L{mR6^msB+4hN~pK-j7k> z$;_#8r~a`U{HaV}d3Mzo`zH-Xqa$=5k`s6ydB%>u*N_B5KZMC1pD#yq&&`hs?i)|K zF_9mYm;Z{UlC@^9A=mnO&0pK**|A&0!2V<+MH%RU*vKnG z%OkPb8tL^2R3WERfu2ULEkSbRqrf;>?)Mg{?4)-YSKd8WgellW5LSVUDj?J-;ux#y zJ_U~chT9`t9nJ`VBbKb%yD=5{Z;CbX@(bkM3OGxkmi!l4 zIdQ1NK7vWliV68=eLd9Jr9uUrYWHP-1tbun-;|p~ogs&QjVT6HCT_o)p5~N4!(Q5U z@cQ*nMELkCk*l_?6m@^J>G%L{J4B=N$c!;C5?axt+VP}Y3oR>R_suF8cCle1E)KDM zjND|5VuhhcvWK@k?y)J+gw8$7eI++exg(lzhAr$UIQs4D25_xsxL-VOAtuv-6Tg(g8n|>BsPq=N-bpdc#(s*e2z%s5gpW&f9OZ zAHv6HRLC3=%ioJ1-HtA)D-IxNu|S?W`8VzU@2IyJ;1;MQXDy?d-tEI}h1~{}W&uaE zXSY#aF-M`mJ&+zdklEBXB*U{PHo*I>ibdMMtj})JEmt|_We>yeJ|-jy->S{XnU#u% zdudhGaZLxg@|HB*|A6mi&%xgQ5YNr^_Hv950(jY_C9s zMIE%-POR<-o8fTnV*PA%Lb_*|>u>`0*g1R?b+0vWJh@AI$e$2N!kiG%yTpD}>~JhS ze$SddA2O1Td>_!<6gGxz7Z)E(PBw@_U;N zsf`@w(YyZ$HBVa~O_v|DHJz6t&fSXa80L)pjCc;v9M-&kg=3B6?XpbQ34h?hd(VK{ z&@Gj%*^PVzlqV_Dj^<%nI(f_PsshLwTulD&@Ur=j;dR>Apz3*2YZ4NG3wke-6A2T@ zceki$dy|4w#n)w+s4$>d%i5Tmn)F5(|7$clo{HeAMVzI;91&eD8|m{{`%o_Q8HbdJ z@9ETAau9^)vLxpxPSx)0h*eb+l)6kq zsJVMys4qN6rIMpeV3T>^3m>%H;d`3WPI|P$CD((Z{|+t(QPe~V?&!;U`e1PVl`0ty z4Uq_I{>#%vW$hwZeMBP9z_rD1G3v9~A^~f z=%_@Dt!zsUyy6o=j%P#dZOw0hCO-OVr1d}GP{)j=y;ojOn!l$llMs5 zqz}v{tVbA%y`p4b7O277)+c-(!^{xO%Z%@_$16r;7;agi$?GS;D;|1V-DSnaUs%1# zHg(?E9ad$;a`nX2Ew^%4Qh|l-M->EFvQ_JotwocTr2^O1@z^rE67)sdSa!= zDvVUH2olg%?QikG6WyI@MMbvH>aLn8F(_MKgNu8S?5x-b)SQC6qP-AJyRECPu}xCQ zzsn)BEmpLy(K41ODbJ3Xrd+wbGZvQ;R=Iq#Q#Qb69_1=I*HXZYBjls^eS{}yk7)jg zEwLTgoR4p18VdN3gK-#cwQ2A(pT^ZCtC@2m;l*?po(S~ABcrP6OH=q4@BZob z%$Ne5w`J=&Dm{w74c_jy3=2b$`|gDq)`lL>zIMdjRGxiq$CC?u$uh#LHWp2l8v8qN zS9Lps(&Q)rDboPIG$t95BBbDUf(C}9Jd^oBZ6tq;3u0+e%oME5?szZz*Dm>C zy`XI;Wh2;a|Mmw1lq&Ae)#l+>yp{8ln?=i_IPfo@XGX|NF=)9tbYdM;%HlanZFjb? z>Y|?433Dq@w$9AC(0b4ch;!i{b$<#oocHm-A<5W%5qTh5hjI{~HFS5m+ed3sd9tT7 zuCI?8zdipj!eImEzrmE=E8?1{U+V-J{wxP~VU4<(oSPtJ+@-6OS<(-1tt|7}Rc-qa zVz5?cqr|r)$0C<@ofF~8`c%V6i3RHUUDy|y9|xE*JnZbT#oJB%!(Kaiq>P-9cZd2< z-6q{VvX}J(iS;T#pe&_7sU8YR2Lrudoue6jNW~h^I(g46%kiUWS_lO>Qz7nLCVGr7 zWP5pG526J^75q|2W`RZ2d#O5)&EcpI`=>;l$x+`l63DeY_9OMMxrnyE;|k=?Z1M~u z>dF;tb=Z4Vr!E#Ae>7I7{I_7kPoJ0L$Ljnlx2w9w=8_WqO(q(@o-?TXq{68)HrlA? zu$#+dZaB@&h#GZ$bwelbC;6kc1z{v-FWOnF!>>O{mFmsHVDVLFM^9qYd4tuKO`km+ zmy#u;lgz~xKbS^0&fDf$gU+FPIoM}?_8mSei=9m4EX#;Ojn3aQQ1WQ#1 z&8F+;#MtL7lYGtM0!pvP4zzLL3h<<=f|Gb4!7l(^hE5b87vtfo*aovuA@i^TH*7`> zAe;c03e51Ygah-UAOG>A+cWK-9}xe4NOg~% z+9Mi!LUE5lZn?4^n6R9!DPn?9oXyF>dK81}3L20Yd}sIBZ-!Cn+9c^Zw}`x1?vO|` z@;*xlUR{PT&~LFBy37UukXQ93Xao!!*xr0wqiT;MxlUKshK{hnUjB(gN@3jjI%Gg2 zw;gFD#{bWL*w^={@!i#SoFDY_#oz=q&JeAaDCTfZ_C*qfN=8uwNgd9?`cQ(|aS0L^ zuArC^>Rv%4!v62Ev94flF?(v*03r;3g_~{_9|AL;X2m35cY6UQr~c*G;boU~}_x#ap| zm~~(|dBnaj=6OkD;7246jo{DN;=}UvNx{mCfmO{DwH8lm3(mRXbx_}lrdo*S|CXy$ z>B72b!V0YbY7Tjj4WW}k%1D9eW%dq|!{-_iap;KKz|kureI4Y!s0hbaJjr1!%Oradp zM##QlB>VFkyWU!^OfM*^wda46K$Aoz2N$3aJDm)pSK1K{VqQC0Ws z`oDY=g=pt)nM~ZpLKDssR__UAT5&e#s)yzIkc7$%AZ=OjZ*>J6n_r`Jk<8<^+O+h* zR);#fuue~$!uJ!XZ4>`084gTQpDvNVPJhSU000gv* zmObbf9VlSPPqpKDpT)8PelL&^kO6sRd+WI<%;7D49}i1q{oRe#_s~HJ?Y@WC%)DFSkDhV zCGANXKXU{QnNRXg=dO%KPY?`t2!N}fX;WRRQNE@GWQ(3{L>Vub<;jOf-3I(e;oWc* z29j-jJj8L}Yz}ZosS9ix8}g3Yxy_io6T|O^=jV_XtI!{V*?iBc7|ka?+iE*tw@1i7 zP`)w|CYC3`Ds5}PtVsH0vO>j|hkrt%bqG=R^rZ%73%!^1v(1kih-a1Tu>v~ALFLZo zTwmCuVUBMTzFg(K(#V`w19pzfzIdA8LTH|khGolu=i0LdQ~1S@SP04Pq_frLm8)Vy zWxm6CfA|CeOOFvrE3k>o@F|&;baJ>DL1_)60A_kM`&9VK?4S-ijeno@m#1g_``#P= z`BaTgRpj;07)#s80}Bjl#A7-vRgH6J*y(1YW&8Q`LMn31?w2JH@*X668kk$MC4oYs z`3uGY@MNzb;u)qMOK^3~@>P`AEcWh3fdB9W_Y*Qb?Jm>byjdJ^i9e&l9GF(eX`(xL z5g+r$&fee02y}k}aW74+6wG=rTIPwUo{{~-Iep^j^-|*ea~OcbS5ly;&bPyc;c^^X8nANm#V%tz8r*Gkk8dVWtNNt`E{EL{WuOZc9xH68&aqv!C^2~^a$e90m@qTWl z<4xiSiv4QKP#D_cDS=BJ#gcPHYQljmy%s(C5-zPN?EL(E=$Nn)-1+gGFc-ID{1B#) zPC8w|0HU~6sFh#IHdyse{KeEri~EZKLB~3Ff#2ZfzZy|UU17q>$?F~_Q7F`eG~;?Pl7N#WFcbtO%X}+cE6!8_LGGL8<87>V-aCj1+;xd7=JiI?+JP?zY&C~ zx{x>3Dz~a*ZWA5WEca)_TWRYV@Wc=Hj%iN+bjP1Y)2ZIT0(A_^ zM6OPli@5x9na_{>1>j2Vs1sWm)?+SLOD9`4QdUsl;o{p>E$`Iun*k?+UyCB#-zQvhBD*W;oSL%f`9lUX5dY7Slw7@tPnp!?;QBim z;=D7t=$&b=Sp#rqEZkqFA!6Y4ApQ~8u#=_{?cV1u!Yy}0yAMBXy3@3lrp8+$oxOVE zA;AWuy_57^=nuetRL;BGv6yDARg-7mw>7ppuZ1sDQgsoX4xNXw+~%>roCS()aoV~;>k&?7b-B<_VnOu zrju<|9M?ByLaI!302PSZo3#BY3!gsh25!;SWAWP27VN{A`)PBL4a;GY#0WB9ybW0w z%G&|dU!Sq3Xug->w2JFQbA%B>8_;9Hddm*uJRfPC$w?;<*gb+(P@ObtULpMXep7Yg zkHQnV)DxdKSEvwYJ9wN1jp42#^DlgPx4+77mu6c4m=3yb+*#sLdSv(`MyP40$ZR#^ z`Y>ujTlG3*;Hlg66Jnq_;5GS`{|%==p7c5D)Fs6AOJ}WSz5c-?=yv$6>3%fQp=RcQ zyQy^Bx!2Q72i34TQ+PEMaO&pk`t6qK$yTvCgFqyO~>nCC7K%2AY$~SVe3cXUG?;g>#Z4ZlIOpIFAHwde>7C`Ox zSUcS?DtJv5CS@Z<-(9&exoA2vbG)ubFlZ=#O?ceL6isCoq?WwTM``D9Gk%e4C)C+z@beb zPz%_s1HgE2amK@YoEk!?h=lK|Cwb`4AP=N~>fwtIll%X+b^l624_p3{0iq|XKXITr z--kL)JfBBkAd_}S^ki5`dz}{;A>Q>=9Ml21@92uuE4JdGMYxoa@9GXtc;UJ5=Vu$Zx7FD z}9f4ViEhA(w+IzatZUYNUx^l8m^#6Bm5BqRo9P&k*%IdKHx}o z3-+uKMn2O;7_O{xj7b3wiH@;d*<07j`nv?@^~WBe6w6Cb|KSi3y$_!6B&Og*da{1p zrze)X)Bt9Qr^s(SIlM$~^9wKW^`U8?J@CxsX@Px`2-6#_=**`djh3eg*}^Yh1bCVc zT{|R zqG#Zh-SJjk&|wSu$sV)Tdb&L)u9z%gWmpW0rQ1`eZUz zqRVh=x_UKkL#OGN+KufSK|?Qi&{?J-)!mnA=#S~;sWKq}?l22L!t}wcJWF$}L+BgW zADbQTpp`{*p38vPaOgeAq>{LTk={>Z>e%pzbj4Z7<6CHQhEpcf3Ou?#6FO-m z;O+*nuNxwhXNyERAv4B(q@>(}nEK2B-&i03GAKN1Fob`G1Mz9SRkTfXqHop9b?e1n5e{*_4xhs*g({_rK!?v?>r=y}pTW?9^F`o^FikY+1~y9CSmWp!1`D z|1XB>=P*aCZVsfZsP3C9K-Ii^{7LSuQ%XXZ2Vgx!uPCUE&@bZ5IN&_6w1%y&VzEy% zE^3;QNi(}5*q&bL+n)eh=9A04X`1rpF>TAr+;j9eh7SOR6Y_MEHf|afo8jNz73Xya zLpOr)P1F&FEgnP(JI@++M$n`u*lJbYtAKXYVb2TU1c5~&p$pTCp$oEeHa$^J1|bVZ zUW2MkOKl*Kj@5Lersf1q!!?l#qfgMDE4?A7VVoYHTKje<2Y5HXQCUS~)4`Xz-Dj7q z&Epoi<#-}GVaE=>My=@>mV$MYD@c3GvFt{*5J>UdU!fz-TOXv){xa+nQoW_}O}#+T zsu23j93Rx)DUjcrWC66#h;VPy%q#NCe{_%)k&CvE!*D;G{M~AcV4%lYsH_?Keu}N? zKX|QK2yom?MWB7S{J0TZ<{w0rU#wd2ZiilG*`yndif4wWTF6MwaQT1a?Ix__EA^&DdjlF zm;P9JI{0U~pg0RKEn^$V z=*?=TsG1M2qdt3deVzZoa(g)!(3WP8GI-0La`oAH-ZRkn%a#6cx9a@00d!~z&M5tu z&CmvcnnR0)-%|9GbqIiRWG-n-+hBI*Zk@p^QWa{MEksH*cohNln{M#sWDjxISxrQ4 zU{iwfB8WU2&uVi?_^6Dx0rhakS*KS6vRb%p?;zC`P@KmB=mn~V>7i1hy}G?-<@y&X|j&UPdr(qO@^#A3Eb2EUwL~c!xuR2dKH4DRUalo}l!Z0au!< zmwF_d~Kgo3|-Iysd3*OEQBh>hC6qbkU==)AY6Z zh%?3gbT0>HL@UU;K1+oG*Z~d&QV$U%a>=0(4$z3rh979F?t5iQvX=SB&61Mzh<@)j zDvm)((z0Kdec$*1bEWpbaK!V|6BnmMKF5q?OILV#jW2z}KP;V8l$W+UNH~b?i*F*m z*DK^=6e#FWfXg~2y+NntWCfR+Pewga6c^7knE~w}NP=m87mUnu^An$nl%dSMOX5#TOAdgYz=z2EwodK_z8smS+4S0H>yc}3RkuKM@Ry&9hZODptRmuwm_1Snlh9F`DMXpB*1_*UDFc`- ztz!{)#%m!AW$T`nP!R6tQ8d0;;~=zpIZz?%8|JT{nb$v4H2e3#eFu6vRt@lW&=ThH z!cUnZCW9ZHS?eJ%vcviTNnuG9#t4c5zf|Ou|M9jn_nRZ{O(+m9Tutn+bqGHintjaU z{@a1Dub-DBjM{4@gSt^5N{7NlkJ8Rvw`oiRmV5dbB~H!f7(gDp>-c;kff$J~A5C2I z#ONBAkg8vI5RTsJ*^|KcUy@7=ri$9hxU{3>FQAN$40DTu%?%4g45dVL7r?{kOxH6i zYaPVm;`0{?gD(I}-mywTNb%1w(ZA9I-4(^JTGENH_rn1HiFwpl0eN3rLFEyBJlvA> zAV6gOrvMS7Y4*nz`hfUh-y?_(^dLTPB#`lVh#o|^89iFjI&TL+2*6A|b8JcQt0fJ; zKX4!T(+@A55&%UsrBx{tPVO!h9QQ{#=w@|CvmvZP zi$QW^lHju#*vg+DKiE!Q;oS34+Y#|)%LfNLIyNHXDj z-e>E3`n{t4A%FTmm*F^KzJHT;NcDEcl@DD(u&XrtW9-We?uZafEk@MATR0GdLnvmA z{-+=@HrCIrVRhjeRX`cIU`f8IgRGTHy;9~*|KK^NGKVRDAw2116*hiRbV}fl1|==0 zctF0N$K3j-@gK~H_<%e{C#?8*j{=)k_(gOdz#I_GoI-WI&m~MFaUxPSf`= zin0_Dhj?H6m`?CHqEY}$=j-R9t1G=*)vy^pb(`ms70z36#gp;b;wJV?dR-+&V#M-y z5ZpytCIMeL?i^`fHs993-x)aYxTPm7ZXZ?HPAxbyJWl)RKSnf^OGrIJhF1n9zx(`T z7tn0BJX=>z|Hi%|vgKCX;QU=pO}!E)mb)=>>=+NmzsYTy6n4wpt*UAEOj4PQ2-Zy` zb4#Z9mood%V8@=MH6c<0^@1@5B{|OYY>(l&3t|7$32xtmD>Sc_V$uhw*e5~}OD`mb zA-Ir%KNhQV)5unJear$FM#!{cp-HL*JI zK2%1&0;?C$&ZQLxh-kkUnEXgvc*=@>{OPLjO&(!7&J0p^KM(TDX6!IfI!IMXA8(xY zt7f^XKY{eNHLBD*!o&ioWYc*4FpptD7FXcjZyCEr1-pWj?~0qdNjD$ft?;cb>~77q zcM1&EuO1W0q{cec@p@6-EG&g^d7yGSKNk6NLAY15I;KQj`Scytq?M3buRY*;7&cJE$hT`}1iVZ8U!G!V2O+t-})8UBQwSiHV)ArvwXb{djN;)y42oWz~X z{b^YH(+}?MNmunWZp0CErb)IHs4jP*@?+?g!(j#n%sj#l6wp;I&-;`=W`%d2 zy*X4S@W0&|zajBfD&37FMhu#?-EDhQ7rK$EK2*SR6 z!^!=MQQD7Q{7#jg1`qP6%LY(b4nn?ebh2h#(r3yTXX9~ulBw0C`8Cdx$2TTCOh#y< zKh9L8AK)L8!>stYdg@*Pie@-cnVutSz8>8t+WFwK%TVl1+qly1pJ?W0(S)5`P59qA z<~4M?ti^VNogPaIzj>m&bphE!Gj|`CW>z34GX7 z*ZyE(0U(HU&q4RZW!ELpvA_hl7Gax6_TFM<_+2Xn54YZnXo2s)K10ds8PJ`EA4UdqQs8hj~r3wh>GLO~(;mB@U7dvO3T%-Hx zaIG|$g$p(`ger_^A`-5FSd?geva<+F{%!r_Wm#b%hO)AA0?yvNp}iPwzuisFs47)kaoPLMcejnLz3@Bv-ij;d&GoH+ zk>Sel`W#mSJPydDQz_-j$$e{i(-!2kWf4VJ7yJFKq}!_u`U&%UE!yRmF+;iO)l45i zAI>h$?+seBcvQ9VOM`o4aei1JBB4>+G4&-PusQ(Oske&v->tn+?zvjn2u%z0%F9AQ$p>P-erS zK@q;`C6`65f^WtHyyJc&Q53-sut}IgUD6a|=Lu->R>JcxKticCerYn=hwQwa`DO7t zb-{A?6L%vdIJt}3ip{_$JGQM~fUp(A^dNTG%57q=Bn>Vmaml@vDC;MRz>0W|8R>oY zGrH21EdX^{8bkpamYkyhrOY}bwY{^mLidkz^#R$m0k7i?Xc2Sq?xMoAl{9YJqM&Qz z3CE9y!+Hrr&%t5xSXB=4G*AP07uoE=^Lp^P61a)GS&E8>N05Y0hR@CLCd_P`)UmfX z8-1^cjWFkrz1P_ZVz2<93P@{7;Xv1cq9WjQ3F}_3f*^A*}obNy#*ZhL6`i8?Tl^sx+HrJFVgL;zx2L}9H91fTa*jH&bjfxA1h#o|Tp8;=Pb z#1ohQE$-5HJOlVFu)6bStAn5J-|}EphH9%2Cq!ZaiTGiLrP&j|KhxQzgemDmk9R*A z>+WrCWQ4ksMzDr~MUnJ5wn;}?@s<||F#=AO?th-{$rl>4?y6#_ZQg^H72m9_O7L=Ky~E9x zHLX2JQuK>I_+QL@W(1QM_SSpM*z_+6evJG~VZ7K|BdAVqeETn#PVcoMd=$V6C zJ`Qe;BQhFCFCvUxm&DQ=gLT6OKZbg-w{IRahi?WPV@}kjGjZggT?DH|Sdqp|+)we+ zHbWqV>*@7MBr|cBq?^ThXJRC``FLvd?kEpK;u>dz_B#*SYmZ14=fRC1TZ=cIY>pQz z+08VvoIl@41Wu%FU8vu?>^4u-Y0B`xsi5b+3fKvc+&XvPX#2sc>BrIEU$egrY&!5< zr$fBRJyZVwsmcKWk)i;ft*PEP^lUmG;|tv%W5X0egNu>=T)>Car^0Ik-$N?sft&!Wnje%HQguZE zN#zK%64bX2M6)`PF+}P59adHah{oL(s+0XIGyJ6LmTi%_2ze^RY3_E&+=iJhl5hl`rYMM0#3Dak~79@(Td`!;i@|m5vs12mVmadkyF?^>gnpT=@JF#%Ol-LXBPl zl0_e=y!nLwBVRF?;KI-QK62a>DeDsGH}7a~^G&h0cDV?69q)`rB*J%zb0X*CT-}W_ z*9um?*a}5^2^xRlr~AD3csU2V@GRZbZmhL{se00rUZj}Z5QFZDLtY?<0nFaKZ6MR6iS*`2Hg;G=(@31`Pl>;Pe&Rwp zpVX^SJC?apFOE2b!&bx@iwOyE3upWe3;?Etos$tyzE5Tr`=2q6d6`MYyEs>?msD2= zPVpYMSJgff+V=g868hiQFV-{TxnP{xx&mLG_QLtc|F^IQ(G*g@qx2Auw)JDD)8l`| zF^dc0A(`Cl7j%SLZp|*IRF~1<2Wv6Nf>&l@>rfaAK4ETN?)H7m!!omu18%k$ z^y68G+ccud1`Bwz1C`&1warElAG;G{835WO&>jh+<;pIm_)EzA*SR?qOG(ZTGM~1! zp$T$oIY8ztDHs|7wZ5!@rsLFOlJy~=RVRFDXl#s>TJ|*_Y}aqQ0~-bV72)W z$#~fXngDQDj)dpRw_Guo?M@a`#nA6b&wZ^IKhoZP7aJL+PgCI_B(AV})j(k#sH}G1 z{<#i`d+8+18R5e+Wb>m z#eJcv6lv?sof@g*5!uq<@#(*X2Ui${Eaz>cr=^BOZ&ZjlubHl$0Om8;g0z97V>+jO zWUTLDyr0^|R=)nTOj5hV8*ZkexM}qA@>FD`6=QjyFyQ`3LgMy!M((sWGiz2@4^tc5 zeJ@4(+oc~ct9}5@lm$^L1)dwF_eb7^33#KJyNPFI1njlcj4Ts0nDv_wzm$r|&9A9L z!@U0(R^KwWC5^e`;ksunIit$NK(J-j+>QjD){wPFW&E3q;if%yC%4DB0^2(lwn&4e zfRz#pIHU8`Z;{rxdA2G?RZKqNLhIrZKJ!FpheBY@+!J==Z;NNYnF1vWKDkdW zp>1I1(AYQwuLfHc=)2$Um(EvKk_%F*~49p=b)C8+c}!0#rq1;Co&eF zo<+JXU@a9+AvHW|bhFhL(k333RpksaaN@4YK{z}K_|62V0)(cSN-Cx-1;^iM)k47_ z;y+hUR(E$^QT8n?LKFh!ceT;w1N+beY64oom*B0 zmz|BwN`;JJP9c9~H*!}WA0HvGIr6r#345QL?G`BO=j}qSxN2^Wuqx9Y)?R!Q=m%%U zRZv|(y9>^%=pKysOU{Q_xn#dj0dMgkHe@a%EOgW!u){4Ax`Y8gYwX9PzCK;aVcL^v zB?;#^3b6TLa=Cuwx0$)OIcKa?_=z*i?srtD;R^uu0ShF7<%1NBp{`am7qe!0cb*!p zrzyHZ+Dv=*{e7eBTv_k>o~8ctGX+n`1Es+cN-Oo=naCWqls8`oCH;l#JeR!J7Jjtf zd@)<9?B@f&Ho}jVS(6ucn=HY}z2w9CQ9K#YXak8xg=)(5bT@_qW#Ym8D<{@*q`djB zERzduVU|O@X6|VNeyaL6)4W6c7wE4MXIxA*B$4*Qb@GR^r}iI7NBnl#qTAelVSEy_ zHJ$0{ddAbX#Pvlg;#=eDO#JM?+jN_cHby?xr6;lJLrZkL+ zt_KN8*Ye*O)8|q1Kh|n1L=)@;yIqYV(*6D?H+ye(dx_rDi;R3UF}lOw%9p4y2+fjR zr3Yy+hn3Jwv*bdJhG{-!4rCMKN;4vVNmNAgZeI6Rw%`l5|h9SS~ z_MGGYQ&vRuu0M#1l6eOVtK1XLp;4?(W+EYO=_gb`ZOwc5Ol7A@5H$LL4F$AH#0cQ# znri0G2Aws(w7Bf%yiJl3oyVvs zT`5eT0cBbWbjV+FE5)XEv`-+>zK2tp=7KYyAi2+nHQi?zTUFusYqTXpxB&kvk{be8 zwBwXg)zQ3w_hc$k>^UgHxRfhZyYM}9egUjP z^L$W(MO`aN4jdj##R9oEm6Pl^MqZe}IQ&`UP#+6mKR2t*YB~11d16ptQe@0~Ene7q z8GihVBz1@ve<{ME-V&>cdh71?dK_bSBiSuGBRk;*CjqZGe7vmk<|sJSRRd{aL3EU< z2*EaJ)6+aT`sM#Ej3iC>TK7Sw3xAV{tasOC5RK!}1Ca=_H}|&wcfsa3h1!IK)Za7c z`kN@qAN^x`wA2c2^m;byK0fb@uRrjBQiVar6?JNao$;&M4d{C(3|${Az4s^gyBde% zT#rO=L$+{FZ?@iD@ACZoHdHbGL+3aHFJS7bKj1=bJ-_Qmo@}U7n~OO~q?_bjDpxpM&1sSfFM6%syFgKXtdd+=r|BU$qS_!u^n(@!LB_uhYkC+aq9e z;P{im-NHXYMM8BOp2h<$Pdz1~`+7`#81_thLMQrPam_C~t*TrJ--MICn3YFu(&2GFGe#Pu)A|n)luRn!dHZ13g>8`|VGMNcE>C6<&lM&Uu;)^DAaHL!R zUa0YczG@^qy&1<48zfXcgo6;~$uZ&Qs^*^A>p^dSJBb%4#Vlc;$L4}7U>y!ez{?9{LjkS{L~PD_@|IeB{`7O*!xhm;N51LJ zG+Z>bzq$jleQ-H4g-YPx%iP?m_V{L@$)lm>Nro4g zh0QgD6b9zlRjX9K(x{{Ca0C6{rk`a1>o5?j+*%u5oqRHF;;J=KQamQ`<#ZMA{*Lk@ z)ym@_$A||M&L3Bgd6x76kf}wR~CqY5jdT#kbe1t%4)DH)o&2@0yN$?<LTuycQ-CsIr65k~d( z-o``}M^>}>R7|5$n^iB)fNZFhwdofgbPFIv40t@j*3>MCseNd$tM(_47jFw*t~Dp_ zJ!SYs)#mz|vTd=JoU(E;jsaUD{#*O)i{W;5&EWdC+b>R`Cm(q^et1UnXx=JX1_lGQ_>cKXTtgfakcH_kQ8&6WuG{~UP4l~y1L zw(?-L<)t#h#v?c~a+;wVi~6)L^4f%uV?T8R>CR2ONEdZSc$bbc18BZssCkxstXdZs}(}Z%Ttj4D__Ta(wf8I%|I^o7Kt=WS?cYN>lnjit0s~5jQc6fOx$?ofw<>B7>-esNZ`=RAL-9IT$jxi?Z&rXSYt zDOi6}PJMCDkvjD0RDn~n)*p-q|DYOuRiM*i?{4kxSp8KW5IO3;bbjXBawFkk>T$;9 zp-2&gm<+s0PZ(HnL7@$%<{xoQ&SPh2By$sTH@v0Zdw*n!p`hk;`^5lW@rlm$^jF$D zI;+at3%!TpnW8mwZ4KBDCWcr(FP;Ea%)}AM_2Lqv^2V@Q%c?WpWpXg|GG0TO5Iv&n zBnvvt+h10avSeBfi6nm;J^_z2zsbRALRHlHe%7qrX?Dz`X|A=%)B_{aW~I6BnUA2c zKV{%486l!y2E~5Q%89|6x?vots zi@=dF#`??{ zX({de+EnSgkdI!=`ElhkMlWur$XDT3_tl^G1iGP|_wV!~BaxPSF7aLpAcB7WUcev5 zpLN(7e6G7ByLoq`8Ram3=?%T^kvWqZzXpZ((b$LH^SPA%jXDAszX^iO!-)PX&G1A3 z^PrHTq;L<~3}?f;9FRJoSIeU57r`W?eii46leziNtV}zB0-k_tIh$ini*epPRQ|>Z z%7`hBA9nFugw`3_D3-Ub!nmI(wt$a$ePGw}%~9ei6i9TJe>&l-Y`^#fBCQ$B7+wqH z%J5GUUya4n+ai^3vSj2Vy4@iPkKXB0euPvkg^~BZeX1^Tl6U6JbfoUBn4xZdFQ_j0 z#eCk|_S5q%637NbI45*kVveQRERFJSgLDYlRKPsPA10pD`*!;?+leZqqM4HLjdeSL zb&YcMN6JkuM8ytLh|bq^=;pW!O_1n9fJ+S~an@h_@(kFL*+^y&h?mGjQ7&rvSUHx0siJZw^KLo6;9=V7omF zWhw}zcA#^HXfnM!h&(e27qTlr^THf)qNJX>v|Gh(E_GH#pY$r-b-(EwzHu<|^U3O` zP_9dNDRS!^I3`&tU%m4DyiShiPSUXP8*TsEZb?=FIR3x(+=!3MQ|*ha_-OR7#njhR zL-VAum=bHU=?!GLayVA_2>ee;|o3L&%HZa9)V95Ns7c<^y<8B3zhGQrw$;-YO5VelyQ*Nj)KAMng=GJ zm(4bl1Rs#1#0mbUJ58){*eCo4T=Ah$3@ad2Jd`UOk?R4H?!EUz{opC>zVrH8w7|;y zh0WUG<+GjEQpK-JIhY$WO`hH~uC6BsPg9^0cmj4?1j_hu+<@~RR5wfINV$st;wjMU zMTI_8ks6de67DfMg=Xu6M zl+oUoq5V(Cm>4{&e-ie(de%YJcBA~^Gvt8{WCIyV==A<74yNU85AB%oEKTOLoIO6H z7BmcnN2;;*d5mT~#Ii4BGx1hD!%GfL8wA1K(RYty1JgVNuQ+QZWCUPSLwelRfiDhF zDqDax8rLF?ej@6JzIzn%b)aKvpxd&jN4!+|RRafgJ5Kfu6WwO>gzl4J%Z2jYPe*;J z`AT;WzH0R*`*fa<`9SQRA%)>&>mQ(OuYU)We~rZC@S381Ebso1nEo!lf!lOMV0uBR zSXy-+hV5}tt$9n=yM*sMisn?pz7PFK`EPdKTUdBS&}_SyM#{4&0HteTUR@$~D<5BfZ9@8tt_lUR-#2^_DB619BO|1~Y15+dDb z<$B|y1frIa*|D1^(U5BN>Yelb*o-Qx&ASj9luxtexjf6RpWgsMdOx18QnW3Bfx)t8 z!A4WQCyLVVS#Y~HOAjJJC{c-WV%3ve5;boLqLSJf)VbfK^Ua4`B)14PCpDm59AYTm z?$rk;o--ewI1Bd>E_qo)v$%ns6EPbGm*%9HlZsFxOn^N&4L_Xx&VzZgwfM$XSH!6& zBefbM5q-7;`A$_Bdipz*wYT5FLrkQJjb zogBt-FEUByBsN1C@(-(VMht~8D>5SbKEX|+1@*_R6US$!lEnQPyEuxc>L;j<`oh!O zlg~THK;g$LT(h-^?*g;WrJN z_gWF(`E*G&RIa(#i)YU{TQaVLa!YW)`RU^OL;oA5jj@E@_4w^c7$KuPN&Nfq>rsGRnoAup*(&cEKfGjlJ(3rDM@-gC(+ovetm}S z{1?H+n3X0RSrk}_S-G@2_ZRDQY?0!X4sHp zhmh7{1rui9)l^MNGADSlX>C}u6vH``%;e6LwbP);uR_|@>*KyOQn!CJ>HCe+fie3A z@@#6U_Hq4%s9$l{WQ!jDR7Vpxj65V2LS+-j7ZLx}Hskqmi-P6(blbwwk(&3?!+k^? zH;Q=DP;xT%AR6Uy#_TBCZvH)E7f&%bYV1io@aUz;>t924v!XGM4I{5$YR&g6+#L+P z6O8@F5;hE$<-{%aKOOO6==*Ys=0|1o&ym^ZS$W6Juc1BZ4?xh2TWV$htuD&!`$uU0 z(-@p!+eP7r?^Bp(_e<)&O$7=B`^gDEzi+d}h zAi}r_`EOb6b=_1%5m%32$^zNh+dP@ByWoaSr?%De^reM7ahibhHDqs}QKt-mCWg62 zlkKto5rJdBU6uEte^d0z7wpQ6u;*&U9`IlAd`lp2zmiZBsG-n;(>R#i&Pp5ZXBWw z^CDzIjHYp?2-BKvo^0SZ**5$jx?UTg9SW{+2AA=*x7I)T>!vs%7GB$_XEWhex;I&kM0|sKP4@e;yy45PG7mv?1Z~T3k%mlco7hb7*4a$N6Azm z?SnHMDD3Vz-Qu$-c-&Gh*oB8invjfa`yZX5DKB1+gD`8R+?xp#gaxR*6Z%rG~-tC*y=4)sn0(bcz~`l$V*OF zUv@sIJBKz`1SC87T}6C!FbM!A#Cf`(LT|uAw~KSOwkc8@5;P92yehXHn_ya${OF2d zpk_w@g zme}YhvfSIEG1ueHc@2*X&S{oUy7}RU#x|cL!(gA&lMXG+6J|H+hU31p#!-XeTQ`Ev zqG16&JMu3#-I_Cc>EHKWrPz|v_716R4zXaPw1gSEkxEz}vNi|Ou`(hpS8W0Zpd+{a7Zm7~?EZm#CS)9eRC zH}e3$knL;s?vI%Hv^j(MhOPcsel%fk#V%8QjY(^FxP*t#lz6&YoDTDTS6g-Ug!gLg zkigcl;P3Al;?5N*By&JNP54g0ALDQXHyWl(oc`_Oz1L_FZIbI&hATYJP6Bk8o*Ntm zqec_fWelsxIXSzM`DletNAHO1pF8u0H4!*^gZoZ&jQi_nIV?xhST+&k@Ff)RKOC9m zTWngbHoq7i2lI^G{MgBLOvr7-EDq6Gu(B74Q<2==mmCe8A(>Ny#7h5FK|f~n)4S__ zli!hqdsk-830LlDC6#x?&0w#Gak+Zf> zJV^qlN85NC#!?RwG;MtjTfXJHq4v*K+dTrvNah%YH*GrXd4c_m8VmEv(m*8ZGh3dQ z?!G;HED16`DvCzC(|u8K$>T+tBmzge2ePhyV|bV9lnDU$=Ymp!(Y?|*Vzp^_Hoj<= z_ap=7GtG^cztHKbDq&T#ZeFi@YnIOC_#zk z@<}RP9(F*C%5W9uY@%}^p&UUIkY+Hw+ytkaP@1bD_!0B^Tf&OW{g0iDiEH5O5Wl0p zeR5$rAbpG-%+>i@Sn>#*-?-2{a;CMIQq@c91V7WNji&a7$&r>|!O>1ef^z-YNyD*X z#?4snwZPi8)MNc#QFZ~uiQoW%W0IBq5fjQm$PELKC|LawUCBM`pBYRw?h6{JCst1k zv&p^b?Cg_FODsKmYqw^n3idwm(vMwY_BQ;*{f{Rexb%V`gyJXd5SJqL&AYb|N^A7P z110{Fg-1|5I8j=vOjZepcQ!uHx=vTJw&%N0U$7sDHr2?w<4aCV}jYN37$aV8x}O-eBls&S_GQ}Ra^$JOlh1x#KAd5`!T5oFbq*dJ2F!LJ=f7#+> zSMMWOBE=0S>se=}IXIO6hYGY9;aFp32Ro7Q{VRHprQ<}sQ4jzSSf|HN5d8(mFq-q1D7wRn6|S$?e&S_>jax@16G^Ws!oLD5X_|ax}EvGXi%QRX8hSr4A;Ek>hG}X1$gvQ zjobydY6@l08yU$ZvE5JBaXKaEQ^jN;0PahzQl)qx+q)%HU7afK0BLxd`E9Bjx6%ia zwIQ)z{x}~z0*&t!5-~TK|2Rv(J~%I=z>zv>Z1RX?H}pBJwww@gS{}Kx;qwj@i*Mk0 zXDu(6Cf`&q_IZ3MlP0T56k90KL~`5Z`vwfrlC^)+?s;Q>cLXWZ%FUr*ON_MTXMyWR-He2-1x_q z%E_aGpCOCE8FA6(jnFRWH=m*0GO2TJ!;+7VNF zWJ!r+!DZKwqn`3xle)BP0-WebZ-byry;hP4C0c9>2;=8ljv_a8=tF0}HM=_g1-+J7 zsxE)43l^81BF&}?ncR;!GrV}P0W2ugDS+vIcd(0}bb8^Ja6zHpVpadLw_6L+>*c%d z&{vU$&qsLI5a->0+4ja#M%pdu))ipY2EY|HdpK^c#5kUW)B%J;ibc1nAOnrrYMzn9 z;$<{;&M}TYS;%OTo%Rvvn0clp4(5=K>W^H#M;%*WSWKr(|li0 zPu>eOVM{y;#x6GU98c`hLD2XN{wPa762LtFJD}}9iahPK%2LQui14SleH?%st=Cl3 zeF^ut^m*$o&*42b^g!o@;ary$+~1&&k^bkWyjb5ZkT8GlqCe3{Tp-Ewi?{tJQOXP# zJB_~NVqA9y;3n*X!cS*Uc;kZ7DHI$4Q`4UWax)(ibG0Mdbu>)$9=4VVj(YLdKVJl% z4S>XRjFD|H)dy)y7^m)-NK z0^}drDb7K8euzSm3pHTG*fZCUCe21#=*#mLk|CcD#w8Q594G%NWUt)A{p4~wN;Ewj zeSKy#WbgU4e42|E2vV^Fz^^qAei_@G`st<_gc~$A7FoxwA70QRUmq2N((fe%{xsXA z@^6sTfc9!B7uSr+Md3L=%KU~d6#zeWhy9L%OWU8D{;&;yvI; zm)3Y|x-ZxsMK_C0mj+(hJ3eGLi3=gb^K}vcsGafry_xu6%D}>{8jz+9X?>i;MqNOt z4jfc3ud3lcnGRqgN|{H9HJwDR7v9z89Y~8_$0bZH;xa3g%bX)IfOH5~g%iyo9@=nbW1ImECEVC7C*&;Ar8+-Ty%S8nv@ zI+%v3dg+a~u-O_z@qOAm3YiqTr>o)S3E+upvh{W)wketnA+5oxFkx6oq(-Hcy>V+u zaNo#_C(}sbznNQEB`KIBI)gE4njei3_`WallzwzN=XGP$81v>rcXxK)Wo2bOBYb_z z_W+;K<#3ldTxeiXCX6XGlcqH4#{vHJ|4|Okpwh{z%)Z}hthd+|Dp~M&xh5W)+%_^Y zu9=iI%4XvY_GtFRnIXr?JH78DHoa#rljZO8gF)OF*j)jpOG(ec8Lx0rvgQ+oFIa{gKwEX|7FU=aG3egS4NMl5yA%zsmJB`lpLP3jz-Z&xVb=MpJfL zmbKTTg=RxSS&$wI280W&+{(G}m@2 z_99K`o8BKOVdK)j%6ogty-(i=Np2MiEQsgJS?Vi5LV*8CPBSye6)L>P?$?i#dmMW6 z)wuQbIX0q7PSSGxzSZVI;ZChKrBot>Y0$W41w&gj@cFN$R$RKoc%kfEq%qX3(B+Fd-5uD!c>M6kfdQ^?<#oM<`-S4h>P$Fa{7VEjz+-t`8*ar4C$!%Jc zd?$V^^};(LZ%gw$$fk!QmC1kY%Bv7k*Mh@!S&Y+on9 z#bof)=jphbkRq?2mYF3Bm*k@Ue8>p=4nX$o_@9`oM+Ubaxe-@y_;hUU$Cl5bZNW%B zoUW_44q;JObbMZ?^!Vhr+iFT%3M5dHdvCEsQU!;1Dn`q*`!l0%cY(R=w~?P)Em|*c zJzz!eHexiOeLd_M$wFGORxkoXbRfBrD0% ziaKT_^9ixSghqaA%`$aflSew*RmM23JN14-mnK>mPA}P$ueW|bUp&^~JL&XJ{W8z> zGH-jK;mxqagZGJpLmnT_A?wQq>UyN)gO=DBl`mMY=IWZ|y4=567n$GpFHlPSz;MV| zMI$YfVtcj6s$zlK>p0Z<@gwgwNfST>t=zK!mQ9LIZM)JmxTo1C-{D+2^XQ5Q!O-rR z$_Ul9;-;S&9-#%7W%3+rgWN7KKf%b1(AvvzdRy zwu|X?eC(TXWK#TH=eXP#Lh-b#c3n+H-3su0V2oOl{0NKb9>;W7S$hDxI+7-N9VYHE zb43LiPH*T*<7!#ILd2W`e1iho^?P#9J!Pe^o)XACbFhiE|`Ud2kygQd#Fy`hT zn+0zvgNEPj^Wx7J*eW;#rXb||9@Qu5=S~{(B^OqAve>%uV6Nx@g_C;P4ikuPib1V2 zl^Nk&X7)f*0e}dpxM-dK9FH$vy>^%m!|&85ZQ+;!{0IQak>0-A{iDT^nlPHh z%DapZkaP1&e9lhSn8Qk^;3m)fx^Gne3uM*sKm4uz!NJ1@p|h^Bxw{K|oMq#1re z6u6z@DcYIJ8lHz3jlUHl9pM~MyGF8ov67()w2QfEC>WnL>K%`N0v6_osU*)LpFFht z9N##y@;k>+Q-bkJ;^!rfDEhRLl3J@0JQ&{r<9Ek%i8*zex{=YT6#Z5a^Z@kl&H!Zb zC4)0^Zy2DJJJcVrD{4sP=sVre6zzFJUJf5#ZsnuhzpM4J~vEy@QH1n>)=dlqt)+;ppkcpFRW|2ieT6$dWEiM?#3Wb zJly1-?PS$J-(~Eg9{~?%1fEDw!iSc9z*fHLHGKnXJGXX4jHLqD+e}&YxkHOd#dkC6 zA{>ZHj^q#Ou^lbz@Fi!C+o8F&?~`4iSwtZ6g8MXBUb}0J#!{t%r#dAHZs+&Yxu-N< zgpNPAQ}T$epWL5#pQd{Q2eF<3@TJ!Qf5hd-WT?ZR||iZjTmO ztjs40m{W82&Rv`MEH>JcDp88J>f<03uTpz8;h}yQyCe#7=`**$)m2tEiAcOB(dMIc z+)nt2A3+$ZBWiYl++Qi<*Wl_eCY51NYu^Y;p;;-#`%+AQjVYk6#(>r ztNu)I42<7_Ah|Lx+FC6!N^>brSRyRXBiT-0S`kP+XxELos(~^)kLl`kPvXlIn8{*h z0h6U_eBTCf3;-%v1z*ti2fgiv2@!%1b#F@{#FC0~Wpi+y+vuo3V^o(JE4RhKJ-`+M z?HVJQpV*{67?4c*5+QT9B^yO0!2*gNxVr58I)K+hgLe=BrGo?7zX+#5gT|#Y@tmtD zw(nPvJUO(!*nDVUEM33tsi%AGlIm@|3!tJ1gS4wYdV%#eG+iD@kzP{8QA8inf9Nd< zNoh#eNA#Cd5ZFI#p$K5e`Hfn3%lBvCb6)@F^-4+B7N?_1!0x?KgO9?vK~}RNZM+33 zzYSQkuQ6-6uCyw6_PF3T0Q|u2PCTxx>)&Mm_53@wTZHR5(?PPCrswZw8MaCp+S=Y1 zc+%r2REt==OsRS?N?aE~6;Wb}`XQHg?}N&-TZJQj+KY^5VAF;q;X7}HvVRgb+0xde z9i{HyHUKlMYOulc8x%`WoOQt^eF$GF6*sy}@Ir&*%#zoakMXUqK5-2+tMSBGzBX2m zh$j7EsXmLB_vPwhj41R?B*yrXS02qSD_|SLmuoW z@UM(#grgcO#<_(RQj zDV^4o-R=@7`*OQmvVhgTGHU5;JmzntdFY=wJjBAie)m#C#s=8aE$51Vx#6?}f+y zX{&i8OjwbOg~w&m#8c=Wr~0MI1(FTPnn`-`z1$}-0ut&kZAwq2k%sK9y4E~c{Qb{^ zxiYxuvl>BwVswuIDdr%~s6t6G@H;%C=mKQ^dk>_s>5<2`smA5OmL5PpeAdzr%W?{A z-IN`W7`CB~_2y`*|U2ko!N`qM^Rcv}?J;FcB>oHr>9pXFRqZ9FL$3LF2`w zk1828>ht@GNo{l=S9~ZLrpXGd;t>*jzS;Yz;N8K~*#zIUt}v1C8vF`|06Og=@wikB%b zM@nb%-lQ1`ROOQvQA+KSp=f*)@nQ5aYKLW*nCV1usg*~sBc$+uCS>**oaF+@V~KZi zfu=Y1O{tf}?W>f=zEJx`=8C%;9En-jCj4H}K%+d-|D*CQ4oaQcsBt z{(y&2|272`%g6K(PXqn1Kc-7hV&c*5_^yN3WNn>0md7yf-VGoOMgdSMYn9>6B4gIfAG+>Sj`tXeQl7PD zGvOgJa+R9@KNyATKS-U+cG-`=jvLEaTKk87?>JEUkAhL$>zr(}tF10|$-~>pbjEYO zWhGRhEZ@pP6f#FHKeHl}yS-Q0ZO4ISn0G!`=4=+li{8sXKX8=y!J>?fh=YA7W5Jdf zv_^J71BF%^^x!S|NA8vN4QLV?ByybJBKEPS_02b&U=tgafS(IwnoPeU`jn-dT_YV- z$X?qmGyfpSqcD}tJ2O*Mlw)VsWz9CJn-c@wr?`uq0wS<=0Zptaia+ zB+p%$2P-e#Rk-*Jz|i0PJKGQ(r(T?jk_FgDuQeXzI@Vwd1huB7X>7R{N+(21!T5wO zLOg|!BaiE%(u`dyL*Ir3GuZv>Sjgm@F-XNbVDrB?pWmFu759iQ&hAPRJPccyfmGYr z2iyNiu-_y|m|P5pcv=_qUtuuprDR^ZS`(!!cUcWU!ofjak$il}08fVA51qVvnYBWvPb71H-&4%FopFqiWZTKG~Q~PzsfcvRl zK&Eb+`$hQjXRn{ZI_ehY;TunN2eF zdJOs?E9#KhL-dY6*d?rPGV4!n9C^Pz48%wvMREUtx-=MB)OYPyO|tYoz5+RZZlw0Y zDe8NX$F>C&QTVj~W7rTPy%m$p1?4>9hwW;%eZK!y(0r4;U@X{9ML(>1O>`3+XJqEZ z?>EEjImf1A10EE_)Az@wcA}ND-;8be?2DF`m*YX|wo^8yz6wp|YF|S>izu~K!LTi2 zI>e2Z?_TnYAo=1dcZ%I4;1s?;)gXg<=I(VUC>c-ksAN%&1I=|K=#EhJKLW9+B^jnp z;$b_~@o1uewdR)-yiytPced!{k(Vo0cG>Y(Zes}+9EDow;akQ{PG?Yd7D%GJy|Xee|7-Q zfbplpR6g{vNb~8LUdOuz<@C8us801aL8N(op_Rnqj-MV$0rq@DY6#1R^IKpSn0E{g zGAS_Eq>$eh_!cf9Y);(KID77=+0@gyQh}>OB@VgvHX&V0#cYv?2?c@0cn4zYvO= zgrsuJTUm@2H5;9mf)2zzV^T{P|FlB6_0FCj-v{DjuUlt^%>&xR56+HvACXW`L1J#y zZdi=!K)Mv1P@xOE?k}d6b9vd!as%ysUa`x8C*|8xFT6Q|c!+;|>pv;N5?G3`^=|m| zv*m4tf;Qz;$YrsuZeHqO7XSVE>rqtj&oXNHu24ErMDD}DSA?L{g+U_5$W3L1$v!^H zxtGjvqG}?M%b`SwP>1}R;)^`&VK{7YkRfAJYbo_rt&A^dMYOs zbt5ha0z@Eq$dJiPyvkVG9RcW0;8#pvLcsm*M${9ME#cdz?(G{rn(p8Tvfi!%GAp=m z^RvLsc}C5X&|fUKEmc`aaT1{OH!GThBCoPA;v}p;t-wcm01%8Ra2SHE)GXYUCMWO1 zI+Gu+`zp%T7AA_h^?QGI2Y^1JoOSm&VWBM@$%!R5P#+sI8YFj&E*RY=Jb9hqcKBJS z2(P5jVr5S+@QLfxSDP-ECJ*YtC4=a=1XE9J#|1-l=R9&mkHajG(tuho;d*1d+^%#{5hf*fB)+dzfhRgl!WPAw+J?xBO^Ertq#hZ_fgGDNf>LBLJtN z<+-8e8UuPg4yBR2>a9<*%Ac*j;>oFhj$aVgz^W&eNXK?ljNFI5;T{Aybb;m;Lh~D! z?WxYfo5ojsBJ~jh$Ofx$OcjG^tqPQ6{G13;#uL=>=n}#3W0uv0inLK?Nizh%}4xWDo(L3-Ow!9`{XZX_j&cUcRc)f=@*4s z=XEe58zn|-e7X-Fn{W=>@IFhL?0eSe0iqG5wthL=utVI$nFLHIC)if7B|y%9{yHPO z#R%d`oEbkKx5s?jch+2*R$TeXO;wh}v_#BLY8RQ%X%q8e;wh8a=9*P7l%|TgI3}*> zLfW|?;a3FyxQUq1+aZr+PgEAHc(?OGxLFNj+^+d;dX0kGL#TS%s{t5)l*B0Xln#=z zB)_$VcnlFC;3?T%T$1Jym!vN99m0_uG3>|MOQ%2%7JFpav*VGN-Nl^_UOO z=+8|QH@P22N(w@UvE+8_NrZ~kYbYBWh7nDNCa;8m0`yf{qX`#eyKKsA_RWHmD|H~n zR@+5t*ZbyQe%6AJ82KyC5{*hCW%|{yf|36d`j#vNy literal 31503 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 Date: Wed, 24 Apr 2019 12:51:17 +0300 Subject: [PATCH 10/19] README --- README.md | 31 +++++++++++++++++++++++-------- etc/convert.png | Bin 31284 -> 31340 bytes 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 715262b..b032fae 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ![Example](/etc/convert.png) json2python-models is a [Python](https://www.python.org/) tool that can generate Python models classes -(dataclasses, attrs) from JSON dataset. +(dataclasses, [attrs](https://github.com/python-attrs/attrs)) from JSON dataset. ## Features @@ -23,7 +23,7 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate * **CLI** tool ## Example -[*skip to **Installation***](#installation) +[*skip up to **Installation***](#installation) ``` [ @@ -122,9 +122,28 @@ python setup.py install ### CLI -> Coming soon +For regular usage CLI tool is a best option. After you install this package you could use it as `json2models` +or `python -m json_to_models`. -### Low level +Arguments: + +| Key | Format | Description | Example | Note | +| --- | --- | --- | --- | --- | +| `-h, -help` | - | show help message and exit | | | +| `-m, --model` | `-m [ ...]` | Model name and its JSON data as path or unix-like path pattern. `*`, `**` or `?` patterns symbols are supported. | `-m Car audi.json reno.json` or `-m Car audi.json -m Car reno.json` (results will be the same) | | +| `-l, --list` | `-l ` | Like `-m` but given json file should contain list of model data (dataset). If this file contains dict with nested list than you can pass `` to lookup. Deep lookups are supported by dot-separated path. If no lookup needed pass '-' as | `-l Car - cars.json -l Person fetch_results.items.persons result.json` | Models names under `-l` arguments should be unique | +| `-f, --framework` | `-f {base,attrs,dataclasses,custom}` | Model framework for which python code is generated. 'base' (default) mean no framework so code will be generated without any decorators and additional meta-data. | `-f attrs` | Default: `-f base` | +| `-s , --structure` | `-s {nested, flat}` | Models composition style. | `-s flat` | Default: `-s nested` | +| `--datetime` | - | Enable datetime/date/time strings parsing. Warn.: This can lead to 6-7 times slowdown on large datasets. Be sure that you really need this option. | | Default: disabled | +| `--merge`| `--merge MERGE_POLICY [MERGE_POLICY ...]` | Merge policy settings. Possible values are: `percent[_]` - two models had a certain percentage of matched field names. Custom value could be i.e. `percent_95`. `number[_]` - two models had a certain number of matched field names. `exact` - two models should have exact same field names to merge. | `--merge percent_95 number_20` - merge if 95% of fields match or 20 fields match | Default: `--merge percent_70 number_10` | +| `--dict-keys-regex, --dkr` | `--dkr RegEx [RegEx ...]` | List of regular expressions (Python syntax). If all keys of some dict are match one of them then this dict will be marked as dict field but not nested model. | `--dkr node_\d+ \d+_\d+_\d+` | `^` and `$` (string borders) tokens will be added automatically but you have escape to other special characters manually. | Optional | +| `--dict-keys-fields, --dkf` | `--dkf FIELD_NAME [FIELD_NAME ...]` | List of model fields names that will be marked as dict fields | `--dkf "dict_data" "mapping"` | Optional | +| `--code-generator` | `--code-generator CODE_GENERATOR` | Absolute import path to GenericModelCodeGenerator subclass. | `-f mypackage.mymodule.DjangoModelsGenerator` | Is ignored without `-f custom` but is required with it | +| `--code-generator-kwargs` | `--code-generator-kwargs [NAME=VALUE [NAME=VALUE ...]]` | List of GenericModelCodeGenerator subclass arguments (for `__init__` method, see docs of specific subclass). Each argument should be in following format: `argument_name=value` or `"argument_name=value with space"`. Boolean values should be passed in JS style: `true` or `false` | `--code-generator-kwargs kwarg1=true kwarg2=10 "kwarg3=It is string with spaces"` | Optional | + +One of model arguments (`-m` or `-l`) is required. + +### Low level API > Coming soon (Wiki) @@ -148,10 +167,6 @@ Each file contains functions to download data from some online API (references i `main` function that generates and prints code. Some examples may print debug data before actual code. Downloaded data will be saved at `testing_tools/real_apis//.json` -## API docs - -> Coming soon (Wiki) - ## Built With * [python-dateutil](https://github.com/dateutil/dateutil) - Datetime parsing diff --git a/etc/convert.png b/etc/convert.png index 1b5bb8442ee3d1a54201bb92d0fc1e91b3f694c8..2912ad721c69c07074f835de34438d33159082dd 100644 GIT binary patch literal 31340 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 From dbc2b1e4c8256b7aef17e78b8e304b5e009287f7 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Wed, 24 Apr 2019 13:11:28 +0300 Subject: [PATCH 11/19] README --- README.md | 93 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 77 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index b032fae..9cee799 100644 --- a/README.md +++ b/README.md @@ -122,24 +122,79 @@ python setup.py install ### CLI -For regular usage CLI tool is a best option. After you install this package you could use it as `json2models` -or `python -m json_to_models`. +For regular usage CLI tool is the best option. After you install this package you could use it as `json2models ` +or `python -m json_to_models `. I.e.: +``` +json2models -m Car car_*.json -f attrs > car.py +``` Arguments: - -| Key | Format | Description | Example | Note | -| --- | --- | --- | --- | --- | -| `-h, -help` | - | show help message and exit | | | -| `-m, --model` | `-m [ ...]` | Model name and its JSON data as path or unix-like path pattern. `*`, `**` or `?` patterns symbols are supported. | `-m Car audi.json reno.json` or `-m Car audi.json -m Car reno.json` (results will be the same) | | -| `-l, --list` | `-l ` | Like `-m` but given json file should contain list of model data (dataset). If this file contains dict with nested list than you can pass `` to lookup. Deep lookups are supported by dot-separated path. If no lookup needed pass '-' as | `-l Car - cars.json -l Person fetch_results.items.persons result.json` | Models names under `-l` arguments should be unique | -| `-f, --framework` | `-f {base,attrs,dataclasses,custom}` | Model framework for which python code is generated. 'base' (default) mean no framework so code will be generated without any decorators and additional meta-data. | `-f attrs` | Default: `-f base` | -| `-s , --structure` | `-s {nested, flat}` | Models composition style. | `-s flat` | Default: `-s nested` | -| `--datetime` | - | Enable datetime/date/time strings parsing. Warn.: This can lead to 6-7 times slowdown on large datasets. Be sure that you really need this option. | | Default: disabled | -| `--merge`| `--merge MERGE_POLICY [MERGE_POLICY ...]` | Merge policy settings. Possible values are: `percent[_]` - two models had a certain percentage of matched field names. Custom value could be i.e. `percent_95`. `number[_]` - two models had a certain number of matched field names. `exact` - two models should have exact same field names to merge. | `--merge percent_95 number_20` - merge if 95% of fields match or 20 fields match | Default: `--merge percent_70 number_10` | -| `--dict-keys-regex, --dkr` | `--dkr RegEx [RegEx ...]` | List of regular expressions (Python syntax). If all keys of some dict are match one of them then this dict will be marked as dict field but not nested model. | `--dkr node_\d+ \d+_\d+_\d+` | `^` and `$` (string borders) tokens will be added automatically but you have escape to other special characters manually. | Optional | -| `--dict-keys-fields, --dkf` | `--dkf FIELD_NAME [FIELD_NAME ...]` | List of model fields names that will be marked as dict fields | `--dkf "dict_data" "mapping"` | Optional | -| `--code-generator` | `--code-generator CODE_GENERATOR` | Absolute import path to GenericModelCodeGenerator subclass. | `-f mypackage.mymodule.DjangoModelsGenerator` | Is ignored without `-f custom` but is required with it | -| `--code-generator-kwargs` | `--code-generator-kwargs [NAME=VALUE [NAME=VALUE ...]]` | List of GenericModelCodeGenerator subclass arguments (for `__init__` method, see docs of specific subclass). Each argument should be in following format: `argument_name=value` or `"argument_name=value with space"`. Boolean values should be passed in JS style: `true` or `false` | `--code-generator-kwargs kwarg1=true kwarg2=10 "kwarg3=It is string with spaces"` | Optional | +* `-h`, `--help` + * Show help message and exit + +* `-m`, `--model` + * **Format**: `-m [ ...]` + * **Description**: Model name and its JSON data as path or unix-like path pattern. `*`, `**` or `?` patterns symbols are supported. + * **Example**: `-m Car audi.json reno.json` or `-m Car audi.json -m Car reno.json` (results will be the same) + +* `-l`, `--list` + * **Format**: `-l ` + * **Description**: Like `-m` but given json file should contain list of model data (dataset). + If this file contains dict with nested list than you can pass `` to lookup. + Deep lookups are supported by dot-separated path. If no lookup needed pass `-` as ``. + * **Example**: `-l Car - cars.json -l Person fetch_results.items.persons result.json` + * **Note**: Models names under this arguments should be unique. + +* `-f`, `--framework` + * **Format**: `-f {base,attrs,dataclasses,custom}` + * **Description**: Model framework for which python code is generated. + `base` (default) mean no framework so code will be generated without any decorators and additional meta-data. + * **Example**: `-f attrs` + * **Default**: `-f base` + +* `--datetime` + * **Description**: Enable datetime/date/time strings parsing. + * **Default**: disabled + * **Warning**: This can lead to 6-7 times slowdown on large datasets. Be sure that you really need this option. + +* `--merge` + * **Format**: `--merge MERGE_POLICY [MERGE_POLICY ...]` + * **Description**: Merge policy settings. Possible values are: + * `percent[_]` - two models had a certain percentage of matched field names. + Custom value could be i.e. `percent_95`. + * `number[_]` - two models had a certain number of matched field names. + * `exact` - two models should have exact same field names to merge. + * **Example**: `--merge percent_95 number_20` - merge if 95% of fields are matched or 20 of fields are matched + * **Default**: `--merge percent_70 number_10` + +* `--dict-keys-regex`, `--dkr` + * **Format**: `--dkr RegEx [RegEx ...]` + * **Description**: List of regular expressions (Python syntax). + If all keys of some dict are match one of them then this dict will be marked as dict field but not nested model. + * **Example**: `--dkr node_\d+ \d+_\d+_\d+` + * **Note**: `^` and `$` (string borders) tokens will be added automatically but you have escape to other special characters manually. + * **Optional** + +* `--dict-keys-fields`, `--dkf` + * **Format**: `--dkf FIELD_NAME [FIELD_NAME ...]` + * **Description**: List of model fields names that will be marked as dict fields + * **Example**: `--dkf "dict_data" "mapping"` + * **Optional** + +* `--code-generator` + * **Format**: `--code-generator CODE_GENERATOR` + * **Description**: Absolute import path to GenericModelCodeGenerator subclass. + * **Example**: `-f mypackage.mymodule.DjangoModelsGenerator` + * **Note**: Is ignored without `-f custom` but is required with it. + +* `--code-generator-kwargs` + * **Format**: `--code-generator-kwargs [NAME=VALUE [NAME=VALUE ...]]` + * **Description**: List of GenericModelCodeGenerator subclass arguments (for `__init__` method, + see docs of specific subclass). + Each argument should be in following format: `argument_name=value` or `"argument_name=value with space"`. + Boolean values should be passed in JS style: `true` or `false` + * **Example**: `--code-generator-kwargs kwarg1=true kwarg2=10 "kwarg3=It is string with spaces"` + * **Optional** One of model arguments (`-m` or `-l`) is required. @@ -175,6 +230,12 @@ Downloaded data will be saved at `testing_tools/real_apis// Date: Wed, 24 Apr 2019 13:14:15 +0300 Subject: [PATCH 12/19] README --- README.md | 43 +++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 9cee799..0fdbbeb 100644 --- a/README.md +++ b/README.md @@ -129,37 +129,32 @@ json2models -m Car car_*.json -f attrs > car.py ``` Arguments: -* `-h`, `--help` - * Show help message and exit +* `-h`, `--help` - Show help message and exit -* `-m`, `--model` +* `-m`, `--model` - Model name and its JSON data as path or unix-like path pattern. `*`, `**` or `?` patterns symbols are supported. * **Format**: `-m [ ...]` - * **Description**: Model name and its JSON data as path or unix-like path pattern. `*`, `**` or `?` patterns symbols are supported. * **Example**: `-m Car audi.json reno.json` or `-m Car audi.json -m Car reno.json` (results will be the same) -* `-l`, `--list` +* `-l`, `--list` - Like `-m` but given json file should contain list of model data (dataset). + If this file contains dict with nested list than you can pass `` to lookup. + Deep lookups are supported by dot-separated path. If no lookup needed pass `-` as ``. * **Format**: `-l ` - * **Description**: Like `-m` but given json file should contain list of model data (dataset). - If this file contains dict with nested list than you can pass `` to lookup. - Deep lookups are supported by dot-separated path. If no lookup needed pass `-` as ``. * **Example**: `-l Car - cars.json -l Person fetch_results.items.persons result.json` * **Note**: Models names under this arguments should be unique. -* `-f`, `--framework` - * **Format**: `-f {base,attrs,dataclasses,custom}` - * **Description**: Model framework for which python code is generated. +* `-f`, `--framework` - Model framework for which python code is generated. `base` (default) mean no framework so code will be generated without any decorators and additional meta-data. + * **Format**: `-f {base,attrs,dataclasses,custom}` * **Example**: `-f attrs` * **Default**: `-f base` -* `--datetime` - * **Description**: Enable datetime/date/time strings parsing. +* `--datetime` - Enable datetime/date/time strings parsing. * **Default**: disabled * **Warning**: This can lead to 6-7 times slowdown on large datasets. Be sure that you really need this option. -* `--merge` +* `--merge` - Merge policy settings. Possible values are: * **Format**: `--merge MERGE_POLICY [MERGE_POLICY ...]` - * **Description**: Merge policy settings. Possible values are: + * **Possible values** (MERGE_POLICY): * `percent[_]` - two models had a certain percentage of matched field names. Custom value could be i.e. `percent_95`. * `number[_]` - two models had a certain number of matched field names. @@ -167,32 +162,28 @@ Arguments: * **Example**: `--merge percent_95 number_20` - merge if 95% of fields are matched or 20 of fields are matched * **Default**: `--merge percent_70 number_10` -* `--dict-keys-regex`, `--dkr` +* `--dict-keys-regex`, `--dkr` - List of regular expressions (Python syntax). * **Format**: `--dkr RegEx [RegEx ...]` - * **Description**: List of regular expressions (Python syntax). If all keys of some dict are match one of them then this dict will be marked as dict field but not nested model. * **Example**: `--dkr node_\d+ \d+_\d+_\d+` * **Note**: `^` and `$` (string borders) tokens will be added automatically but you have escape to other special characters manually. * **Optional** -* `--dict-keys-fields`, `--dkf` +* `--dict-keys-fields`, `--dkf` - List of model fields names that will be marked as dict fields * **Format**: `--dkf FIELD_NAME [FIELD_NAME ...]` - * **Description**: List of model fields names that will be marked as dict fields * **Example**: `--dkf "dict_data" "mapping"` * **Optional** -* `--code-generator` +* `--code-generator` - Absolute import path to `GenericModelCodeGenerator` subclass. * **Format**: `--code-generator CODE_GENERATOR` - * **Description**: Absolute import path to GenericModelCodeGenerator subclass. * **Example**: `-f mypackage.mymodule.DjangoModelsGenerator` * **Note**: Is ignored without `-f custom` but is required with it. -* `--code-generator-kwargs` +* `--code-generator-kwargs` - List of GenericModelCodeGenerator subclass arguments (for `__init__` method, + see docs of specific subclass). + Each argument should be in following format: `argument_name=value` or `"argument_name=value with space"`. + Boolean values should be passed in JS style: `true` or `false` * **Format**: `--code-generator-kwargs [NAME=VALUE [NAME=VALUE ...]]` - * **Description**: List of GenericModelCodeGenerator subclass arguments (for `__init__` method, - see docs of specific subclass). - Each argument should be in following format: `argument_name=value` or `"argument_name=value with space"`. - Boolean values should be passed in JS style: `true` or `false` * **Example**: `--code-generator-kwargs kwarg1=true kwarg2=10 "kwarg3=It is string with spaces"` * **Optional** From 2cd447a604f12ce45b0838d0d81a1fbae6f11b57 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Wed, 24 Apr 2019 13:18:21 +0300 Subject: [PATCH 13/19] README --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0fdbbeb..ef44b11 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate [*skip up to **Installation***](#installation) ``` +driver_standings.json [ { "season": "2019", @@ -61,6 +62,10 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate ] ``` +``` +json2models -f attrs -l DriverStandings driver_standings.json +``` + ```python import attr from json_to_models.dynamic_typing import IntString, IsoDateString @@ -163,10 +168,12 @@ Arguments: * **Default**: `--merge percent_70 number_10` * `--dict-keys-regex`, `--dkr` - List of regular expressions (Python syntax). + If all keys of some dict are match one of the pattern then + this dict will be marked as dict field but not nested model. * **Format**: `--dkr RegEx [RegEx ...]` - If all keys of some dict are match one of them then this dict will be marked as dict field but not nested model. * **Example**: `--dkr node_\d+ \d+_\d+_\d+` - * **Note**: `^` and `$` (string borders) tokens will be added automatically but you have escape to other special characters manually. + * **Note**: `^` and `$` (string borders) tokens will be added automatically but you + have escape to other special characters manually. * **Optional** * `--dict-keys-fields`, `--dkf` - List of model fields names that will be marked as dict fields From 18bec9a4804829fba6de720f45ed8ef9857dd56f Mon Sep 17 00:00:00 2001 From: bogdandm Date: Wed, 24 Apr 2019 13:22:55 +0300 Subject: [PATCH 14/19] README --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ef44b11..66936a8 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,22 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate * Specifying when dictionaries should be processed as **`dict` type** (by default every dict is considered as some model) * **CLI** tool +## Table of Contents + +* [Features](#features) +* [Table of Contents](#table-of-contents) +* [Example](#example) +* [Installation](#installation) +* [Usage](#usage) + * [CLI](#cli) + * [Low level API]() +* [Tests](#tests) + * [Test examples](#test-examples) +* [Built With](#built-with) +* [Contributing](#contributing) +* [License](#license) + ## Example -[*skip up to **Installation***](#installation) ``` driver_standings.json From 127e325d1ea9bfc8a614ee75c0003a77e20cf0ab Mon Sep 17 00:00:00 2001 From: bogdandm Date: Wed, 24 Apr 2019 13:50:14 +0300 Subject: [PATCH 15/19] Update PyPi metadata --- setup.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 18c5e88..ffec23e 100644 --- a/setup.py +++ b/setup.py @@ -8,8 +8,10 @@ with open('requirements.txt') as f: required = f.read().splitlines() -URL = "https://github.com/bogdandm/json2python-models" +with open('README.md') as f: + long_description = f.read() +URL = "https://github.com/bogdandm/json2python-models" CPU_N = multiprocessing.cpu_count() @@ -38,6 +40,8 @@ def run_tests(self): author="bogdandm (Bogdan Kalashnikov)", author_email="bogdan.dm1995@yandex.ru", description="Python models (attrs, dataclasses or custom) generator from JSON data with typing module support", + long_description=long_description, + long_description_content_type='text/markdown', license="MIT", packages=find_packages(exclude=['test', 'testing_tools']), entry_points={ @@ -46,5 +50,5 @@ def run_tests(self): install_requires=required, cmdclass={"test": PyTest}, tests_require=["pytest>=4.4.0", "pytest-xdist", "requests", "attrs"], - data_files=[('', ['pytest.ini', '.coveragerc', 'LICENSE'])] + data_files=[('', ['pytest.ini', '.coveragerc', 'LICENSE', 'README.md', 'CHANGELOG.md'])] ) From b517047085c4c35282da43d6e692adb7dd1a9eff Mon Sep 17 00:00:00 2001 From: bogdandm Date: Wed, 24 Apr 2019 16:34:33 +0300 Subject: [PATCH 16/19] Fix missing arg --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 66936a8..ef08a01 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,11 @@ Arguments: * **Example**: `-f attrs` * **Default**: `-f base` +* `-s , --structure` - Models composition style. + * **Format**: `-s {nested, flat}` + * **Example**: `-s flat` + * **Default**: `-s nested` + * `--datetime` - Enable datetime/date/time strings parsing. * **Default**: disabled * **Warning**: This can lead to 6-7 times slowdown on large datasets. Be sure that you really need this option. From 212387e2e4495cc40058ffac47f50c72b2d22af0 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Wed, 24 Apr 2019 17:17:47 +0300 Subject: [PATCH 17/19] README --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ef08a01..e1bba5d 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,8 @@ json2python-models is a [Python](https://www.python.org/) tool that can generate * Fields and models **names** generation (unicode support included) * Similar **models generalization** * Handling **recursive data** structures (i.e family tree) -* Detecting **string literals** (i.e. datetime or just stringify numbers) +* Detecting **string literals** (i.e. datetime or just stringify numbers) + and providing decorators to easily convert into Python representation * Generation models as **tree** (nested models) or **list** * Specifying when dictionaries should be processed as **`dict` type** (by default every dict is considered as some model) * **CLI** tool @@ -127,7 +128,7 @@ class DriverStandings: To install it, use `pip`: -`pip install json2pytho-models` +`pip install json2python-models` Or you can build it from source: @@ -175,6 +176,9 @@ Arguments: * `--datetime` - Enable datetime/date/time strings parsing. * **Default**: disabled * **Warning**: This can lead to 6-7 times slowdown on large datasets. Be sure that you really need this option. + +* `--strings-converters` - Enable generation of string types converters (i.e. `IsoDatetimeString` or `BooleanString`). + * **Default**: disabled * `--merge` - Merge policy settings. Possible values are: * **Format**: `--merge MERGE_POLICY [MERGE_POLICY ...]` From b6c080ef276a8ed81e7969f69f5d0cf879817099 Mon Sep 17 00:00:00 2001 From: bogdandm Date: Wed, 24 Apr 2019 17:18:22 +0300 Subject: [PATCH 18/19] Bump version (yay!) --- json_to_models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json_to_models/__init__.py b/json_to_models/__init__.py index bf770bf..4ce5e3f 100644 --- a/json_to_models/__init__.py +++ b/json_to_models/__init__.py @@ -1,4 +1,4 @@ from pkg_resources import parse_version -__version__ = "0.1b2" +__version__ = "0.1.0" VERSION = parse_version(__version__) From ff14541be17601ff7cb70bdcbd240f2c4f484f2c Mon Sep 17 00:00:00 2001 From: bogdandm Date: Wed, 24 Apr 2019 17:30:08 +0300 Subject: [PATCH 19/19] Update tests --- .../dynamic_typing/string_serializable.py | 2 ++ test/test_dynamic_typing/test_string_datetime.py | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/json_to_models/dynamic_typing/string_serializable.py b/json_to_models/dynamic_typing/string_serializable.py index 400ccf5..559b87f 100644 --- a/json_to_models/dynamic_typing/string_serializable.py +++ b/json_to_models/dynamic_typing/string_serializable.py @@ -8,6 +8,7 @@ class StringSerializable(BaseType): """ Mixin for classes which are used to (de-)serialize some values in a string form """ + @classmethod def to_internal_value(cls, value: str) -> 'StringSerializable': """ @@ -62,6 +63,7 @@ def add(self, replace_types: Iterable[T_StringSerializable] = (), cls: type = No :param cls: StringSerializable class :return: decorator """ + def decorator(cls): self.types.append(cls) for t in replace_types: diff --git a/test/test_dynamic_typing/test_string_datetime.py b/test/test_dynamic_typing/test_string_datetime.py index de71aff..257960e 100644 --- a/test/test_dynamic_typing/test_string_datetime.py +++ b/test/test_dynamic_typing/test_string_datetime.py @@ -2,9 +2,8 @@ import pytest -from json_to_models.dynamic_typing import ( - FloatString, IntString, IsoDateString, IsoDatetimeString, IsoTimeString, register_datetime_classes -) +from json_to_models.dynamic_typing import (BooleanString, FloatString, IntString, IsoDateString, IsoDatetimeString, + IsoTimeString, register_datetime_classes) from json_to_models.generator import MetadataGenerator register_datetime_classes() @@ -21,6 +20,11 @@ FloatString, id="default_check_float" ), + pytest.param( + "true", + BooleanString, + id="bool" + ), pytest.param( "2018-12-31", IsoDateString, @@ -46,6 +50,11 @@ def test_detect_type(models_generator: MetadataGenerator, value, expected): test_parse_data = [ + pytest.param( + "true", + BooleanString(True), + id="bool" + ), pytest.param( "2018-12-31", IsoDateString(2018, 12, 31),