基于类型注释的夹具生成器。
fistro的Python项目详细描述
基于类型注释的夹具生成器。
示例
>>> 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_json和get_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