A fixture generator based on type annotations.
Project description
Fistro
A fixture generator based on type annotations.
Examples
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)
It will show something like this:
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
function can be called with to_json
or to_dict
boolean pararameters to return json or dict
representation respectively:
class AreaOfCompany(BaseModel):
enable: bool
riskOwner: str
description: str
name: str
code: str
print(fistro.generate(AreaOfCompany, as_dict=True))
>>> {'enable': True, 'riskOwner': 'LqPqS\x0c{kZ', 'description': 'k1917GvOV', 'name': '`;ORxzQ7i', 'code': 'w2 |P\rEps'}
print(fistro.generate(AreaOfCompany, as_json=True))
>>> {"enable": true, "riskOwner": "h@Ij34u?H", "description": ",R,G%0<y#", "name": "K4.\u000b:lK!}", "code": "fvitVYrk3"}
Another useful functions are generate_from_json
and 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__))
It will print:
_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
Installation
pip install fistro
Credits
In memoriam of Chiquito de la Calzada.
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
fistro-0.3.0.tar.gz
(8.7 kB
view details)
Built Distribution
File details
Details for the file fistro-0.3.0.tar.gz
.
File metadata
- Download URL: fistro-0.3.0.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.10.0 Linux/5.10.60.1-microsoft-standard-WSL2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebb20642f694716897a5b7a8e5cf078cc396e4931ec51aec8f0fd3a8e3f6f5e8 |
|
MD5 | ce9ae87882ffaf7b6f665ea982fd8a33 |
|
BLAKE2b-256 | 8e37561823bf96145d8b67e1eae23ae2dc5b02edcfff905f40991aee8161297c |
File details
Details for the file fistro-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: fistro-0.3.0-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.10.0 Linux/5.10.60.1-microsoft-standard-WSL2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e1661766cca0d001b3b25129e439f0f1e249dab287f2ada4b7a5ec3decee1e4 |
|
MD5 | 327e59635fce628701fa5299913d8a7a |
|
BLAKE2b-256 | 8340a69580f86299f050b2c72e2d4b7913c01f7802a929064ca9439bbb6eeeb6 |