基于类型注释的夹具生成器。

fistro的Python项目详细描述


https://img.shields.io/pypi/v/fistro.svghttps://img.shields.io/pypi/pyversions/fistro.svghttps://img.shields.io/circleci/project/github/kingoodie/fistro.svghttps://codecov.io/gh/kingoodie/fistro/branch/master/graph/badge.svg

基于类型注释的夹具生成器。

示例

>>> from dataclasses import dataclass
>>> from datetime import datetime, date
>>> from typing import List
>>>
>>> from fistro.fistro import generate
>>>
>>>
>>> @dataclass
>>> class Employee:
>>>    id: int
>>>    birthday: date
>>>    last_access: datetime
>>>    password: str
>>>    number_plates: List[int]
>>>    name: str = 'Carlos Sánchez'
>>>
>>>
>>> employee = generate(Employee)()
>>> print(employee)

它将显示如下内容:

>>> Employee(id=5809893100, birthday=datetime.date(559, 3, 6), last_access=datetime.datetime(1053, 8, 29, 19, 11, 14), password="iFZ>?)V0'", number_plates=[85863115, 3528889142, 2818728907, 6043092538, 4985672707], name='Carlos Sánchez')

另一个有用的函数是generate_from_jsonget_class_body_from_annotations

>>> from json import loads
>>>
>>> from fistro.fistro import generate_from_json, get_class_body_from_annotations
>>>
>>> specific_str = """{
>>>             "_id": "5ae09b3947467b00111e7bf6",
>>>             "localExposure": 0,
>>>             "answer": "mitigate",
>>>             "idRisk": "5ae09b3947467b00111e7bf6",
>>>             "version": 4,
>>>             "country": "BR",
>>>             "company": "0185",
>>>             "currency": "BRL",
>>>             "zone": "DIRT8",
>>>             "internalRef": "RSP-BR-0185-DIRT8-105",
>>>             "creationDate": "2017-12-13T23:00:00.000Z",
>>>             "title": "Tributário: Contribuições Previdenciárias sobre Plano de Stock Options",
>>>             "riskCategory": {
>>>                 "es": "22. Contingencias tributarias",
>>>                 "en": "22. Tax contingencies",
>>>                 "pt": "22. Contingências Fiscais"
>>>             },
>>>             "evaluationType": "quantitative",
>>>             "basicRef": "26376309-2cc2-4a0d-9c6a-373e0a7d9043",
>>>             "localQUANTITATIVENetCASHFLOW": 0,
>>>             "euroQUANTITATIVENetCASHFLOW": 0,
>>>             "localQUANTITATIVEGrossCASHFLOW": 241000000,
>>>             "euroQUANTITATIVEGrossCASHFLOW": 57324742,
>>>             "probability": "veryPossible",
>>>             "status": "open",
>>>             "commissionApproval": false,
>>>             "companyRegistry": true,
>>>             "companyCode": "0185",
>>>             "IDNotification": "0aa0370e-e6d6-405c-a619-a47da0602dee",
>>>             "localQUANTITATIVEGrossOIBDA": 241000000,
>>>             "localQUANTITATIVEGrossCAPEX": 0,
>>>             "localQUANTITATIVENetOIBDA": 0,
>>>             "localQUANTITATIVENetCAPEX": 0,
>>>             "euroQUANTITATIVEGrossOIBDA": 57324742,
>>>             "euroQUANTITATIVEGrossCAPEX": 0,
>>>             "euroQUANTITATIVENetOIBDA": 0,
>>>             "euroQUANTITATIVENetCAPEX": 0,
>>>             "hierarchy": "principal",
>>>             "hierarchySubsidiaries": [],
>>>             "owner": "Vasco Gruber"
>>>         }"""
>>>
>>> specific_json = loads(specific_str)
>>>
>>> the_class = generate_from_json(specific_json)
>>> print(get_class_body_from_annotations(the_class.__annotations__))

它将打印:

>>> _id: str
>>> localExposure: int
>>> answer: str
>>> idRisk: str
>>> version: int
>>> country: str
>>> company: str
>>> currency: str
>>> zone: str
>>> internalRef: str
>>> creationDate: str
>>> title: str
>>> riskCategory: typing.Dict[str, str]
>>> evaluationType: str
>>> basicRef: str
>>> localQUANTITATIVENetCASHFLOW: int
>>> euroQUANTITATIVENetCASHFLOW: int
>>> localQUANTITATIVEGrossCASHFLOW: int
>>> euroQUANTITATIVEGrossCASHFLOW: int
>>> probability: str
>>> status: str
>>> commissionApproval: bool
>>> companyRegistry: bool
>>> companyCode: str
>>> IDNotification: str
>>> localQUANTITATIVEGrossOIBDA: int
>>> localQUANTITATIVEGrossCAPEX: int
>>> localQUANTITATIVENetOIBDA: int
>>> localQUANTITATIVENetCAPEX: int
>>> euroQUANTITATIVEGrossOIBDA: int
>>> euroQUANTITATIVEGrossCAPEX: int
>>> euroQUANTITATIVENetOIBDA: int
>>> euroQUANTITATIVENetCAPEX: int
>>> hierarchy: str
>>> hierarchySubsidiaries: typing.List[typing.Any]
>>> owner: str

安装

>>> pip install fistro

学分

为了纪念Chiquito de la Calzada

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

推荐PyPI第三方库


热门话题
HTTP标头的java InputStream未终止   java测试SpringWebListener   具有定义的替换编号Java的regex ReplaceAll   在java中使用contains()方法   java在选择查询中使用JoinColumn字段   具有用户的java Start-stop demon不是以给定用户启动   java glBufferData生成GL\u无效\u操作   java中循环代码的循环   Java位无符号移位(>>>>)会产生奇怪的结果   java HQL使用点分隔符从select获取结果   条纹、弹簧、玩耍(或?):使用哪种高性能Java框架?   广播接收机中的java停止服务   java回收器视图占据整个屏幕。不在上面显示我的UI元素   java使MySQL查询更快   java MappedByteBuffer查询   java递归算法问题