跳转到主要内容

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个异常

  1. ParsingException:当文件包含错误且库无法解释数据时

  2. NotSupportedYetException:当库尚未支持该功能时

  3. IntegrityException:当控制总账或尾部中报告的对象数量与文件中的不匹配时。

不一致

我们已经注意到,不同的银行以略微不同的方式实现规范,因此解析方法可能会引发 ParsingException。它预期将与 NatWest、RBS 和 JP Morgan 生成的文件正确工作。

由于我们没有访问到许多 bai2 文件,因此我们无法像我们希望的那样对其进行测试。您可以通过提交包含样本 bai2 文件的拉取请求来帮助我们。

开发

https://github.com/ministryofjustice/bai2/actions/workflows/test.yml/badge.svg?branch=main https://github.com/ministryofjustice/bai2/actions/workflows/lint.yml/badge.svg?branch=main

请在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)

原始发布。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

bai2-0.14.0.tar.gz (27.1 kB 查看散列值)

上传时间 源代码

构建分发

bai2-0.14.0-py3-none-any.whl (19.5 kB 查看散列值)

上传时间 Python 3

支持者: