saffier

View on PyPIReverse Dependencies (1)

1.4.1 saffier-1.4.1-py3-none-any.whl

Wheel Details

Project: saffier
Version: 1.4.1
Filename: saffier-1.4.1-py3-none-any.whl
Download: [link]
Size: 109350
MD5: b7c83b84d4ab175f6a65ef2aaa905c0e
SHA256: 4ae421a7b4e0b33cd43703c1648e9d89dbece6e260532cf0f90f85676445f1c1
Uploaded: 2024-04-30 12:12:39 +0000

dist-info

METADATA

Metadata-Version: 2.3
Name: saffier
Version: 1.4.1
Summary: The only python ORM you will ever need.
Author-Email: Tiago Silva <tiago.arasilva[at]gmail.com>
Project-Url: Homepage, https://github.com/tarsil/saffier
Project-Url: Documentation, https://saffier.tarsild.io/
Project-Url: Changelog, https://saffier.tarsild.io/release-notes/
Project-Url: Funding, https://github.com/sponsors/tarsil
Project-Url: Source, https://github.com/tarsil/saffier
Keywords: api,asgi,fastapi,framework,http,machine learning,ml,openapi,pydantic,rest,starlette,websocket
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: AnyIO
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.8
Requires-Dist: alembic (<2.0.0,>=1.11.3)
Requires-Dist: anyio (<5,>=4.0.0)
Requires-Dist: click (<9.0.0,>=8.1.3)
Requires-Dist: databasez (>=0.7.2)
Requires-Dist: dymmond-settings (>=1.0.4)
Requires-Dist: loguru (<0.10.0,>=0.6.0)
Requires-Dist: orjson (<4.0.0,>=3.8.5)
Requires-Dist: pydantic (<3.0.0,>=2.5.3)
Requires-Dist: rich (<14.0.0,>=13.3.1)
Requires-Dist: databasez[mysql,postgresql,sqlite]; extra == "all"
Requires-Dist: ipython (<9.0.0,>=8.10.0); extra == "all"
Requires-Dist: orjson (<4.0.0,>=3.8.5); extra == "all"
Requires-Dist: ptpython (<4.0.0,>=3.0.23); extra == "all"
Requires-Dist: autoflake (>=1.4.0); extra == "dev"
Requires-Dist: flake8 (>=5.0.4); extra == "dev"
Requires-Dist: pre-commit (<4.0.0,>=2.17.0); extra == "dev"
Requires-Dist: uvicorn[standard] (>=0.19.0); extra == "dev"
Requires-Dist: watchfiles (<0.22.0,>=0.16.1); extra == "dev"
Requires-Dist: griffe-typingdoc (>=0.2.2); extra == "doc"
Requires-Dist: mdx-include (<2.0.0,>=1.4.2); extra == "doc"
Requires-Dist: mkautodoc (<0.3.0,>=0.2.0); extra == "doc"
Requires-Dist: mkdocs-markdownextradata-plugin (<0.3.0,>=0.2.5); extra == "doc"
Requires-Dist: mkdocs-material (<10.0.0,>=9.4.4); extra == "doc"
Requires-Dist: mkdocs-meta-descriptions-plugin (>=2.3.0); extra == "doc"
Requires-Dist: mkdocs (<2.0.0,>=1.1.2); extra == "doc"
Requires-Dist: mkdocstrings[python] (<0.30.0,>=0.23.0); extra == "doc"
Requires-Dist: pyyaml (<7.0.0,>=6.0); extra == "doc"
Requires-Dist: ipython (<9.0.0,>=8.10.0); extra == "ipython"
Requires-Dist: databasez[mysql]; extra == "mysql"
Requires-Dist: databasez[postgresql]; extra == "postgres"
Requires-Dist: ptpython (<4.0.0,>=3.0.23); extra == "ptpython"
Requires-Dist: databasez[sqlite]; extra == "sqlite"
Requires-Dist: asyncmy (<0.3.0,>=0.2.7); extra == "test"
Requires-Dist: asyncpg (<1,>=0.27.0); extra == "test"
Requires-Dist: black (==24.4.2); extra == "test"
Requires-Dist: esmerald (>=3.0.0); extra == "test"
Requires-Dist: flake8 (>=5.0.4); extra == "test"
Requires-Dist: freezegun (<2.0.0,>=1.2.2); extra == "test"
Requires-Dist: httpx (<0.30.0,>=0.25.0); extra == "test"
Requires-Dist: isort (<6.0.0,>=5.0.6); extra == "test"
Requires-Dist: mock (==5.1.0); extra == "test"
Requires-Dist: mypy (==1.10.0); extra == "test"
Requires-Dist: pymysql (<2.0.0,>=1.0.2); extra == "test"
Requires-Dist: pytest-asyncio (>=0.19.0); extra == "test"
Requires-Dist: pytest-cov (<6.0.0,>=2.12.0); extra == "test"
Requires-Dist: pytest (<9.0.0,>=7.1.3); extra == "test"
Requires-Dist: ruff (<1.0.0,>=0.0.256); extra == "test"
Requires-Dist: types-orjson (==3.6.2); extra == "test"
Requires-Dist: sqlalchemy-utils (>=0.40.0); extra == "testing"
Provides-Extra: all
Provides-Extra: dev
Provides-Extra: doc
Provides-Extra: ipython
Provides-Extra: mysql
Provides-Extra: postgres
Provides-Extra: ptpython
Provides-Extra: sqlite
Provides-Extra: test
Provides-Extra: testing
Description-Content-Type: text/markdown
License-Expression: MIT
License-File: LICENSE
[Description omitted; length: 8030 characters]

WHEEL

Wheel-Version: 1.0
Generator: hatchling 1.24.2
Root-Is-Purelib: true
Tag: py3-none-any

RECORD

Path Digest Size
saffier/__init__.py sha256=TlQ8PbpPb5IfSgXknD3Sl0K3CleXXNPccxeO9XCL-QE 1990
saffier/__main__.py sha256=GvF9M_6j3otsibMsxBaTtRJe8KTubUCh1G5-_EPl7vY 146
saffier/exceptions.py sha256=LXl-3aETBh18mZeFLzjocg023AqiRGq-abDfUdlRfBU 1202
saffier/py.typed sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs 1
saffier/testclient.py sha256=rzf4Pm1HsZP7JA6oUrUjhard9VOyPiLzKp5eJLaRa7o 82
saffier/types.py sha256=r0KyYISCPHfzZLkYaTIeNgdfMak8vRh32j1vWihT6eA 70
saffier/cli/__init__.py sha256=L3NVkNsmqbpMGmXM_B-yW630Ls3Sm0suoNVXDx0TGr4 85
saffier/cli/base.py sha256=bZvnAThVJTNCXn9wmVUmlaqW6j26FIb8u3-YZOGZGMg 13056
saffier/cli/cli.py sha256=CdonMv7D0eGmmLX7xniAl8g62hLSrC1xB4LwCTI6OoQ 3268
saffier/cli/constants.py sha256=5w6u4rDs0SB_m9mbyoWjajbY0Rry1pUX_yXe5RuWlBQ 376
saffier/cli/decorators.py sha256=0e09JGRbNeK-Zt_07mRYABS9O4IqUItabMCdlxkb2xw 480
saffier/cli/env.py sha256=alZdpkdCz89qG8KvqoQyQY9I2WfUkrzc8UGilW-LqQo 4686
saffier/cli/operations/__init__.py sha256=x98ZEH7zcHDZcVZXBwyFF0g4_m5gz_m978T3QEVjhTQ 821
saffier/cli/operations/branches.py sha256=1qxdZJ_z0RBA-R-DjIvRWVsreqmMebxPhnkXgThqgik 551
saffier/cli/operations/check.py sha256=q1XBsgzgnde2DoBuxp5OW4I4221dUjKo0Y0pHdjoNuM 394
saffier/cli/operations/current.py sha256=Zv-g5z2voFyPeUOYu-Z7B8dxPt6UGriO46AWn_JssQU 504
saffier/cli/operations/downgrade.py sha256=BGA77SjaSWN3RCIbalBqtM5sLgN4XYkSc0xgwSfdpLk 879
saffier/cli/operations/edit.py sha256=CKph04wXO0kBY2J3BUG9u2Q0LnmzhDIL9gDawyt4wo8 431
saffier/cli/operations/heads.py sha256=mglrkFmJ0VV68OO8skceNAALmuYLsWy-B7MrDYRX1Sg 663
saffier/cli/operations/history.py sha256=rWCHBTc8F7o1VmeZuOXwk_zhkwf8fbMDKjyv53Eq8QQ 843
saffier/cli/operations/init.py sha256=lZIzh0a1PmS9r-QUTR69PRIKc0_HeDdDvwlOfA0P0Jg 689
saffier/cli/operations/inspectdb.py sha256=aELTvx5WXca9jqebpogWXLpPeOfCTpU14CxMur8c69Y 607
saffier/cli/operations/list_templates.py sha256=ydKgnKWTsncOL3FB0I7-BidWK8ztwCO7PS4fRlVmttM 304
saffier/cli/operations/makemigrations.py sha256=_j2C2TMG4vw08IZM55zVTpwBWQ5bJphS-G4kp-hfWck 1652
saffier/cli/operations/merge.py sha256=rFeCY9PJBSmmOoNac0Zh3o3k1FcVMoD7-lVWrElmgkk 886
saffier/cli/operations/migrate.py sha256=lo8ONbxk-hY9XS_bZ1FZUYrx2CNJdW8O72nvFvLykSU 937
saffier/cli/operations/revision.py sha256=vCWVKFUch-BsrNcE8_m9l1heW9EfabEVhduFpC8jX34 1692
saffier/cli/operations/show.py sha256=50NVwXOaZtfFlYeQyD0Br5aXaU54HcPOyXBwphiHyBg 457
saffier/cli/operations/stamp.py sha256=I_D9AACFSeVPcbP_1FYlSiKTTGpUVLl4OnIg6x1EKxI 759
saffier/cli/operations/shell/__init__.py sha256=1ZNSNUJzpfoM9_cgFVHzqiauXHVuan10Gws-8Pdw_gU 41
saffier/cli/operations/shell/base.py sha256=2fxecuaaXuTV9LErVo4YFbUekGlIENAZ-i5V2Kbyiw4 2725
saffier/cli/operations/shell/enums.py sha256=2h5Uqc-1tAewwtbjPJGfhMbbFWlRe-uh3sYcqyscQpk 126
saffier/cli/operations/shell/ipython.py sha256=3hQneZPcJN0bJeSbvDPyMh5odwtVy1HF3o6Whnz5ddA 1354
saffier/cli/operations/shell/ptpython.py sha256=KSZnw8P_hw9ngGsuTcxEZtgwRA6xgdKAx7QbMQa2zIc 1670
saffier/cli/operations/shell/utils.py sha256=PdF8YYIA3PAYCK8CdS9HNRB-rDhTgQC0KTKaG_qLzNY 2703
saffier/cli/templates/default/README sha256=MjfMmFZLbQZARtelU50qNPMhIjFaxYpG_49MFBRClzw 37
saffier/cli/templates/default/alembic.ini.mako sha256=Vkz_3UwjMSV0DlCiHtgBrCgxCj8ZsxQRsSAfdzc3xXw 839
saffier/cli/templates/default/env.py sha256=KocsaOij4J_xFqwCQAhtGvYoYVV_YFjj6rgwZGTKsj4 4841
saffier/cli/templates/default/script.py.mako sha256=8_xgA-gm_OhehnO7CiIijWgnm00ZlszEHtIHrAYFJl0 494
saffier/conf/__init__.py sha256=eNT7IX8NoLiSyqjiPuL0mb8oWVTPEK0_3yWZ9qMyJpo 1841
saffier/conf/enums.py sha256=Ax0E2Adsc57RDUtzq35AEO7yNKGS41xpPgKGJSgjjOw 181
saffier/conf/functional.py sha256=TkWWH_jK9-Me-dbm8mBEeGMkMrGmbhtkNRpVabR2mXw 7188
saffier/conf/global_settings.py sha256=BoT336Erx4ssfGaOQAu-LWN5a9nWq6a27ffG_CxEXCE 1318
saffier/conf/module_import.py sha256=8YViFMsqSuERY3Cy8YR-LOoF2Quh5huNIia6H67SFTo 727
saffier/contrib/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/contrib/multi_tenancy/__init__.py sha256=Wq5-ckyC1EtIdw4_9Qy8bZWLnJX3v6TXR6t4RGE-mzA 169
saffier/contrib/multi_tenancy/base.py sha256=G1LhKt6AAqm1inFgw21_4_bqVgI2jVLkgmGmcogwnGc 597
saffier/contrib/multi_tenancy/exceptions.py sha256=EnHCn6oxxHyl-AEAjL1LzcWbxSeiHTtRRIbMtk4OAJk 96
saffier/contrib/multi_tenancy/metaclasses.py sha256=VuX6o3BU45amT3C01g7wnZoiFzEgpeEmVRnwo3SpyVc 2552
saffier/contrib/multi_tenancy/models.py sha256=qRNFiyoaSmuUbVytUkcjdDOOktNzUCMoqd_cF5X-Dl4 6740
saffier/contrib/multi_tenancy/registry.py sha256=SBHHvPOU5IzkTeRn_rTM82q3T0ki1KkbEWKPW-zuE_w 332
saffier/contrib/multi_tenancy/settings.py sha256=002W7IY6xgJVWQiF-rPmjLAkNPhJDF7cMge09PgHiTo 529
saffier/contrib/multi_tenancy/utils.py sha256=FXDoH0o3MdBrrTXxVmtsEePCvoGbxjPp1Aw8B6sWQSY 1308
saffier/contrib/sqlalchemy/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/contrib/sqlalchemy/fields.py sha256=xn01kKIOYlaLS_oU9oZthFTplTlb9vbufTy0yULTDn4 2945
saffier/contrib/sqlalchemy/protocols.py sha256=_ceGgCioGrNT9D0ha1SdMouAzESbaELdt9S72bIWW5A 887
saffier/contrib/sqlalchemy/types.py sha256=waxf-ET8zkTUD5cAUJb4X--siXQl5p4L9wr9ujCgRpk 245
saffier/core/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/core/datastructures.py sha256=8vcrHOoNHG7BBYxIS8p5RGagDLl_Ss5ZsK7OH3ujC0Y 1004
saffier/core/events.py sha256=mxLdufmnEdC8TSsO1Wp_FpQowUqD04n5yrp1PJdbKoI 2642
saffier/core/sync.py sha256=PymtIaLSV3spr5NukOa6V1Oku1vuDxbx9QqACPV8brc 680
saffier/core/connection/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/core/connection/database.py sha256=65CJFjohKB0rCY1pU76NrSGjiMfxgnOSx3-tZCi8IXk 764
saffier/core/connection/registry.py sha256=eEwn93l2EaRfiqs25iIvcWM6pS8MhQZRJo1gRq-V7tA 3630
saffier/core/connection/schemas.py sha256=oc9fMUW5RKKCCSea90xvSAf56cj_zTma7v2zvmQ61PI 2482
saffier/core/db/__init__.py sha256=TEL47ag1C__ZDf9xTsVSbfRg0zYkfahxKIHPI_NtpF8 51
saffier/core/db/constants.py sha256=2ti3KPpjNdJwZwNSrPwufT-RwwDbAzYd3t6DyV9SlmA 64
saffier/core/db/context_vars.py sha256=l3R3d_Wnnm0YVBwFxdySxUsfvkf_uAmxbPg2b70qKIQ 1671
saffier/core/db/datastructures.py sha256=1_iWHDffmsbA42RR_jHyTBBJ-5uobGOveNNXhpsrl-0 2151
saffier/core/db/fields/__init__.py sha256=zTo0-zqnelp1lN9GpcRO0nnpvBX7ZvA6FhJZJRNg8b8 849
saffier/core/db/fields/_internal.py sha256=Z9Ia0GzCkjT1fRxNnMAHZ8-HpK5oiCKI_eLSA2GQO0k 15920
saffier/core/db/fields/base.py sha256=W8bmru_w-gVZuSDVSyjdOO6P380xSSzkwNZvnGioQf0 17225
saffier/core/db/models/__init__.py sha256=IkL7Eq1NrJnD1l6vwjqa0O5BWmIUbgSj225e4ZW8EVE 76
saffier/core/db/models/base.py sha256=lO82xhvMzGgMaA2Ru9-luP-zODgZw7hBzqTFku15RbE 9071
saffier/core/db/models/managers.py sha256=kccntvIu5KiKcUvX6ALxh5vZCK_mt28nmucLcCGZ3NY 1650
saffier/core/db/models/metaclasses.py sha256=1e1YsBbyU_WkFgavxjz6s-bktOD-n7_nhR5WY4gSqrE 18975
saffier/core/db/models/model.py sha256=e9-DElTRaSlWDIiscVhsC_PiwBpBllIbzIE9evf9YKk 6776
saffier/core/db/models/model_proxy.py sha256=e84knRZ3jELzj9g-17ylQc4fpJPrh7d7i3qf1GSno1U 2260
saffier/core/db/models/row.py sha256=1rMCWHuEP-Lc2f1RyApwUa8D5wso1upTR40ELsN8EK4 11786
saffier/core/db/models/utils.py sha256=IwJM6jk3lBdRi6shs7NR55HWvFYN1wCF4eSlAA9nuQI 524
saffier/core/db/models/mixins/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/core/db/models/mixins/generics.py sha256=qiPA7xOCuA-cDk68sAc25jykWYBqVvEs8ThqriGuGgg 1299
saffier/core/db/querysets/__init__.py sha256=gSzcvUyXGX0fyJgrwPthNVmYeD9pGhKxZtrNN86SIvM 189
saffier/core/db/querysets/base.py sha256=yxiTHTJ4SRw0TAIsjXfI_e0Jte_wt4fQOJLRtFxSqq4 38799
saffier/core/db/querysets/clauses.py sha256=PPlXN8HjWew1jqeQgTWjw7rvXEYIj1tISibzikvVHdU 570
saffier/core/db/querysets/mixins.py sha256=vC-4Su_zZFIth0_oKdlSXEALsjZOkSxLI9GqlfR3R_w 3147
saffier/core/db/querysets/prefetch.py sha256=OATELKsgPqJqeql-aqohnYz-k05XhWBhcBwmt9N4gyo 1536
saffier/core/db/querysets/protocols.py sha256=qp1SAngPsf0nQydOlTabjMSgvK96oTIjlZVTTu_n7Io 501
saffier/core/db/relationships/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/core/db/relationships/related.py sha256=UEUi6v9QR8dZnh87hPR7kAG0gYX9NSD4B6VOuPLXoEI 3673
saffier/core/db/relationships/relation.py sha256=I5KwGSdnIROHadRiWEZF5mIfa2Bp9m-DWOu056ojPBU 4128
saffier/core/extras/__init__.py sha256=LfxDDZdC9N0btImJ7yuUAL1Wj2B4JislsloMcLrNzyg 60
saffier/core/extras/base.py sha256=WTHxgz5rCXnPCv9k-3zg1YMUF8oijZ7A6SNaMzLcwlI 291
saffier/core/extras/extra.py sha256=eZkEbsEQLDBUJ1im7BITkM77bHdIg4Uk5Q_yIyR3smY 1278
saffier/core/signals/__init__.py sha256=MwtsWP9D_sZdmJ9lYrY_vfwMPv1IOydMEkvnwjPUJYg 287
saffier/core/signals/handlers.py sha256=E8pMLRpgx0AZJFtFDJTbedM_kdKKfodQMgxpvvzfj1g 1925
saffier/core/signals/signal.py sha256=DeBbQfdkCfy2n7s0OzEjB7eN8UJVVJVFGP29s0So_ZI 2073
saffier/core/terminal/__init__.py sha256=ZPZjXmdKRQ28NgxOqUdSABsNoRvhre7WVFQjLx46iqc 136
saffier/core/terminal/base.py sha256=R3HAX4LvphkPQZ2Vbtlcn-7xgrNo0kzTxHBEzc72BfQ 8301
saffier/core/terminal/print.py sha256=yj4lJ_LMgN_Pxbe9b8SilOQf2_Yl_wRJxHQQLHsjUmo 1218
saffier/core/terminal/terminal.py sha256=mmtbqJ91GgNnrUXJ5JA-YUY7ReGyepoASKeFD5sf5Wo 1222
saffier/core/utils/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/core/utils/base.py sha256=ioMLJLSNQtyPHa_Xl357Wsmj50qhjg8IgSmTWErBg6k 6694
saffier/core/utils/formats.py sha256=YbbKMGClQVnR99TDw4e9ryojB-3xwbZDHEqDjxReHYE 6366
saffier/core/utils/models.py sha256=eIPKLS6BHshLJcoiJUCgr_dERq-D0DFdokJO_Yw3HuU 2734
saffier/core/utils/schemas.py sha256=Zj0dYQOAv6LjjWfoXvclWkSISHSrim7MQUxGgmaXuOA 2528
saffier/core/utils/sync.py sha256=skDVV1PKpGafP71myWgNrLBeGPCfIZp2Uo7S5niZZpo 472
saffier/core/utils/unique.py sha256=tiNRXYNC3_1wgg4mldDclHqbpCmLtsJfjZFVxW4PP6A 1379
saffier/protocols/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/protocols/many_relationship.py sha256=Znq9WSTTBttDEfNkZkTtfycAqcSIg1Z7dxW_BbJyPCA 514
saffier/protocols/queryset.py sha256=M-WE2vIvtGz5F2IbJ_-G6QSOQQq9urDf_E_1h2P7gGg 2769
saffier/utils/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
saffier/utils/compat.py sha256=D3YxDjKaunstprKpqyKcph6VDeZOeMBrqBXbGIu06ek 574
saffier/utils/inspect.py sha256=LiV9vWqn-0-aUkIvdbIqBCwOjBkfgA8CAOpYUod45eU 12013
saffier-1.4.1.dist-info/METADATA sha256=mb6zDOU7rv9zXF-5qkoKQ2jhc2SrFozY5MKT29l1U4c 12658
saffier-1.4.1.dist-info/WHEEL sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU 87
saffier-1.4.1.dist-info/entry_points.txt sha256=r9TghDYqzIKZ0bjITeLx5SHf6H-ZgvwZGeWtucboMck 53
saffier-1.4.1.dist-info/licenses/LICENSE sha256=pc20SOGufHrD-H6bkew4RabmkTxYj0LTIJOFIL3ezE4 1078
saffier-1.4.1.dist-info/RECORD

entry_points.txt

saffier = saffier.__main__:run_cli