Skip to main content

ntgen: generate your NamedTuple definition

Project description

ntgen - named tuple generator

CircleCI PyPI - Package Version PyPI - Python Version PyPI - License

Generate NamedTuple definitions with typehints based on your data automatically. If you've ever felt like preparing NamedTuple skeletons for any json data you're dealing with is tedious and could be automated, well, this is the tool that automates the process.

Usage

Let's say you want to prepare a NamedTuple definition for the following json object:

$ cat apartment.json
{
    "id": "1234-1234",
    "type": "living",
    "isAvailable": true,
    "countryCode": "DE",
    "address": {
        "borough": "Dulsberg",
        "city": "Hamburg",
        "houseNumber": "2",
        "latitude": 53.587485,
        "longitude": 10.063215,
        "postalCode": "22049",
        "streetName": "Nordschleswiger Strasse",
        "area": "Hamburg"
    },
    "_attachments": "attachments/",
    "_ts": 15828103462
}%

All you need to do is run the following command:

$ ntgen apartment.json
class Address(NamedTuple):
    borough: str
    city: str
    house_number: str
    latitude: float
    longitude: float
    postal_code: str
    street_name: str
    area: str


class Apartment(NamedTuple):
    id: str
    type: str
    is_available: bool
    country_code: str
    address: Address
    attachments: str
    ts: int

The output will be directed to stdout by default - you may also redirect it to a file to bootstrap a Python module with the class definitions.

Runtime configuration

To find out about all of the runtime configuration options, run:

$ ntgen --help
usage: ntgen [--out OUT] [--name NAME] [-s] [-c] [-f] [-t]
             [--max_level MAX_LEVEL] [-h]
             input

positional arguments:
  input                 (str, default=None) Json file containing an object
                        with the data to analyzed

optional arguments:
  --out OUT             (Union[str, NoneType], default=None) Destination file
                        to write the Python code to
  --name NAME           (str, default=NTGenTuple) Name of the main NamedTuple
  -s, --snake-case      (bool, default=True) Convert the NamedTuple field
                        names to snake_case
  -c, --camel-case      (bool, default=True) Convert the NamedTuple class
                        names to CamelCase
  -f, --constructors    (bool, default=False) Insert generic methods that will
                        allow for parsing of the analyzed data structures
  -t, --as-dict         (bool, default=False) Insert generic methods allowing
                        for dumping the nested NamedTuple hierarchy to a dict
  --max_level MAX_LEVEL
                        (Union[int, NoneType], default=None) Specify the max
                        nesting level of the NamedTuple
  -h, --help            show this help message and exit

Other invocation options

You can also use the library from the Python context:

>>> from ntgen import generate_from_dict
>>> data = {'name': 'John Wick', 'profession': 'assassin', 'age': 34}
>>> print(generate_from_dict(data=data, name="Character"))
class Character(NamedTuple):
    name: str
    profession: str
    age: int

Installation

You'll need to be running Python >= 3.6.

pip install ntgen

Verify that the latest package version was installed correctly:

>>> import ntgen
>>> ntgen.__version__
'0.2.0'

License

This project is licensed under the MIT License - see the LICENSE file for details

Author

Maciej Rapacz

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ntgen-0.2.0.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

ntgen-0.2.0-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file ntgen-0.2.0.tar.gz.

File metadata

  • Download URL: ntgen-0.2.0.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0.post20200210 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for ntgen-0.2.0.tar.gz
Algorithm Hash digest
SHA256 93c5b80cebcbbda6fe6d79cce05857890e5af619da8f5414dedff2919fed2eb7
MD5 570e6a41631565f9f3808390bf225512
BLAKE2b-256 c3e2d0df7425e5780eb957e1025c4058153fb0eb3df1793503d5768b9dee17a1

See more details on using hashes here.

File details

Details for the file ntgen-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ntgen-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0.post20200210 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for ntgen-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 873fdaee0ce060c204ac1737a75bbb01e47b5a992544e6e8459b6341ba71e797
MD5 a9f3b2bfabd353479e638e655ce22ccf
BLAKE2b-256 7579dad96ccbdd5de9a495664d5ee5989d4ad78e9a3a69e8b1d95a0e18e7896e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page