BAI2解析器
项目描述
Python 模块,用于解析和写入BAI2文件。
当前库尚未准备好投入生产,因为我们没有足够的数据进行测试,请帮助我们改进它。
要求
仅支持 Python 3.7+。
安装
pip install bai2
使用
要在项目中使用 bai2
from bai2 import bai2
# parse from a file
with open(<file-path>) as f:
bai2_file = bai2.parse_from_file(f)
# parse from a string
bai2_file = bai2.parse_from_string(<bai2_as_string>)
# parse from lines
bai2_file = bai2.parse_from_lines(<bai2_as_lines>)
parse_from_* 方法返回一个 bai2.models.Bai2File 对象,可以用来检查解析后的数据。
要写入 BAI2 文件
from bai2 import bai2
from bai2 import models
bai2_file = models.Bai2File()
bai2_file.header.sender_id = 'EGBANK'
bai2_file.children.append(models.Group())
transactions = [models.TransactionDetail(amount=100)]
bai2_file.children[0].children.append(models.Account(children=transactions))
# write to string
output = bai2.write(bai2_file)
模型
模型结构
Bai2File Bai2FileHeader Group GroupHeader Account AccountIdentifier TransactionDetail AccountTrailer GroupTrailer Bai2FileTrailer
部分模型定义了头部、尾部和一个子模型列表,而单个模型定义了与 bai2 字段匹配的属性。
每个模型都有一个 rows 属性,包含来自 BAI2 文件的原生行。
异常
parse 方法可能会引发3个异常
ParsingException:当文件包含错误且库无法解释数据时
NotSupportedYetException:当库尚未支持该功能时
IntegrityException:当控制总账或尾部中报告的对象数量与文件中的不匹配时。
不一致
我们已经注意到,不同的银行以略微不同的方式实现规范,因此解析方法可能会引发 ParsingException。它预期将与 NatWest、RBS 和 JP Morgan 生成的文件正确工作。
由于我们没有访问到许多 bai2 文件,因此我们无法像我们希望的那样对其进行测试。您可以通过提交包含样本 bai2 文件的拉取请求来帮助我们。
开发
请在GitHub上报告错误并打开拉取请求。请向历史记录部分添加一项,以解释代码更改。
要在此库上进行更改,建议将其以可编辑模式安装到虚拟环境中,即 pip install --editable .
使用 python -m tests 在本地运行所有测试。或者,如果您有多个 Python 版本,可以使用 tox。
[仅限 GitHub 团队成员] 通过以下方式将新版本分发到 PyPI:
更新 bai2/__init__.py 中的 VERSION 元组
在 历史记录 中添加备注
在 GitHub 上发布一个版本,这将触发上传到 PyPI;或者,在本地运行 python -m build; twine upload dist/*
历史记录
- 0.14.0 (2024-04-04)
添加了对慈善组织/捐赠建议基金代码 706 和 708 的支持(感谢 @coop-nfg)。
- 0.13.0 (2024-01-16)
解析带有空行和尾随空白的 bai2 文件(感谢 @Isaben)。
- 0.12.0 (2023-11-16)
将测试、构建和发布过程从已弃用的 setuptools 命令迁移出去。没有显著的库更改。
- 0.11.0 (2023-02-17)
添加了对实时支付详细信息代码 158 和 458 的支持(感谢 @LSakey)。
- 0.10.0 (2023-02-16)
改进了对不同银行使用不同逗号数量的账户标识符记录的解析(感谢 @forforeach)。
- 0.9.2 (2023-01-13)
维护版本,没有库更改。
- 0.9.1 (2022-12-22)
添加了对 829 “SEPA 支付”类型代码的支持(感谢 @podj)。
- 0.9.0 (2022-12-21)
对于预期为整数的整数,进行更宽松的解析(感谢 @daniel-butler)。添加对 827 & 828 “SEPA 支付”类型代码的支持(感谢 @podj)。移除对低于 3.7 的 Python 版本的测试(该库可能仍然与 3.6 一起工作)。添加对 Python 3.11 的测试。
- 0.8.2 (2022-01-26)
没有库更改。添加对 Python 3.9 和 3.10 的测试。
- 0.8.0 (2020-11-11)
移除对低于 3.6 的 Python 版本的支持。
- 0.7.0 (2019-10-03)
在 BAI2 模型中不再需要行数(参见图 12 和 PR 13)。
- 0.6.0 (2019-09-18)
修复正则表达式转义。添加 python 3.7 测试。
- 0.5.0 (2018-03-05)
更新了包装细节并提高了与 python 版本的兼容性。
- 0.1.0 (2015-08-06)
原始发布。
版权
版权(C)2023 HM 政府(司法部数字与技术部)。有关更多详细信息,请参阅 LICENSE.txt。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
bai2-0.14.0.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 716a0f076cc947adcfc0d20d5e244be9dcbc173c0937b9705c9792adb561984b |
|
MD5 | 9775a88699f58558a0ff3e6ef5e3d525 |
|
BLAKE2b-256 | 5067c91caf4bbfcb07c39f453f8900bd03ee90fb2acf2455503262afb674c6e8 |
bai2-0.14.0-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8cd20390ee64b06a62a2b44a394d6cc031254adc7f9e4f1287d34f748673880e |
|
MD5 | ca8f8060d1da686b2098d2d7338d5847 |
|
BLAKE2b-256 | aad0767f9275a9290bcd3a7aeef38c16a70c371d18b057694eab1cc5027684e7 |