ntgen:生成NamedTuple定义

ntgen的Python项目详细描述


命名元组生成器

CircleCIPyPI - Package VersionPyPI - Python VersionPyPI - License

根据数据自动生成带有typehints的NamedTuple定义。 如果您曾经觉得为正在处理的任何json数据准备namedtupleskeleton是一件乏味的事情,而且可能是这样 自动化,好吧,这是一个自动化过程的工具。在

使用

假设您要为以下json对象准备NamedTuple定义:

$ 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}%

您只需运行以下命令:

^{pr2}$

默认情况下,输出将定向到stdout—您也可以将其重定向到一个文件,以便使用 类定义。在

运行时配置

要了解所有运行时配置选项,请运行:

$ 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

其他调用选项

也可以从Python上下文中使用库:

>>>fromntgenimportgenerate_from_dict>>>data={'name':'John Wick','profession':'assassin','age':34}>>>print(generate_from_dict(data=data,name="Character"))classCharacter(NamedTuple):name:strprofession:strage:int

安装

您需要运行Python>;=3.6。在

pip install ntgen

验证是否正确安装了最新的程序包版本:

>>>importntgen>>>ntgen.__version__'0.2.0'

许可证

这个项目是在麻省理工学院许可下授权的-有关详细信息,请参阅LICENSE文件

作者

马吉拉帕茨

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为游戏添加声音。需要帮助   java在获取数据时忽略模型类中的forign键映射   java为什么Microsoft JDBC驱动程序忽略failoverPartner主机名   java可以下载mozswing文件   java等价于ObjectOutputStream,不仅保存其状态,还保存整个对象?   Java Android LiveData根据其他LiveData调用房间查询   java如何使用jackson jsonNode实现这一点并获得所需的输出   在web服务器上作为web应用程序运行java应用程序?   groovy中java类的元类属性   返回空指针的java图形对象   标头中包含用户名和密码的java SOAP客户端请求   具有堆栈实现和递归的Hanoi算法塔(Java)   java当我运行这两个类时,我的老鼠不会移动   使用图像进行java相似图像搜索   Java8并行流机制   使用单例对象作为枚举元素的java Scala枚举,是否有可能对它们进行迭代?   java Webview更改高度大小   不可序列化对象和函数的java Spark Scala编程   java my app在eclipse中运行良好,而不是在jar中