OpenFisca规则作为代码模型的国家模板。
项目描述
OpenFisca 国家模板
此仓库帮助您快速搭建和使用您自己的 OpenFisca 国家包。
您不应该分叉它 而应遵循以下搭建说明。
否则,在部署您自己的国家包时,您将不得不清理所有标签。
搭建您的国家包
这套说明只需遵循一次,并将创建此模板目录的副本,根据您想要工作的国家进行定制。您需要已安装 Git。
使用 GitHub(推荐给 GitHub 用户)
-
将仓库名称设置为
openfisca-<your_country_name>
;如果国家名称中包含空格,请使用下划线_
作为分隔符。例如,openfisca-new_zealand
或openfisca-france
。 -
在重定向到您新创建的仓库后,请等待几分钟,以执行自动设置。完成后,README 文件的标题应更新为
OpenFisca <your_country_name>
。
如果自动设置在几分钟内没有开始,您可以手动启动它
- 导航到“操作”选项卡。
- 选择“首次设置”工作流程。
- 点击“运行工作流程”以手动启动设置过程。
- 遵循新仓库 README.md 中的说明。
手动设置(推荐给其他 Git 主机用户)
-
下载此仓库的副本,解压缩并在终端窗口中
cd
进入。 -
在您最喜欢的 Git 主机(Bitbucket、GitLab 等)上创建一个名为
openfisca-<your_country_name>
的新仓库。例如,openfisca-new_zealand
或openfisca-france
。 -
执行
first-time-setup.sh
脚本以初始化 Git 仓库。这执行了包括将所有对openfisca-country_template
的引用替换为新国家包引用在内的多项任务。- 要从命令行执行脚本,请运行
bash first-time-setup.sh
first-time-setup.sh
运行后,将删除它和这些说明。
- 要从命令行执行脚本,请运行
-
遵循新仓库的
README.md
中的说明。
编写立法
此处模拟法律的国家有一个非常简单的税收和福利体系。
- 它有一个固定税率,税率每年都在增加。
- 2015年12月1日,它为所有没有收入年龄的公民引入了基本收入。
- 2016年12月1日,它取消了收入条件,为所有成年公民提供基本收入。
这些元素在不同的文件夹中描述。所有建模都在 openfisca_country_template
文件夹内进行。
- 税率在
parameters
文件夹中。 - 公式在
variables
文件夹中。 - 此国家包还包含
reforms
文件夹中的 改革。这是可选的:您的国家可能不存在,不需要定义任何改革。- 在这个国家,有一个改革项目,旨在修改社会保障税制,删除第一个档次,提高中间档次,并为收入超过
40000
的人添加一个新的档次,该档次税率为40%
。此改革项目将从2017-01-01
开始生效。
- 在这个国家,有一个改革项目,旨在修改社会保障税制,删除第一个档次,提高中间档次,并为收入超过
位于openfisca_country_template
文件夹之外的文件用于设置开发环境。
打包国家包以进行分发
国家包是Python发行版。您可以选择通过GitHub Actions上的预定义持续部署系统自动分发您的包,或者手动分发。
GitHub上的自动持续部署
此存储库已配置了持续部署系统,以自动化通过pip
分发您的包。
设置持续部署
要激活持续部署
- 如果您还没有,请在PyPI上创建一个账户。
- 在您的PyPI账户中生成一个令牌。此令牌将允许GitHub Actions安全地上传新版本的包到PyPI。
- 将此令牌添加到您的GitHub仓库的secret中,名称为
PYPI_TOKEN
。
一旦设置完成,对main
分支的更改将触发一个自动工作流程,构建并发布您的包到PyPI,使其可以通过pip
安装。
手动分发
如果您希望手动管理包的发布和分发,请遵循Python包装权威机构提供的指南。
这包括准备您的包、创建分发文件并将它们上传到PyPI的详细步骤。
用户和贡献者的安装说明
此包需要Python 3.11。较新版本可能也可以工作,但尚未测试。
所有可以执行Python的平台都受支持,包括GNU/Linux、macOS和Microsoft Windows。
使用venv设置虚拟环境
为了限制依赖项冲突,我们建议使用虚拟环境(venv)。
- venv是针对您正在工作的项目需求创建的项目特定环境。
要创建虚拟环境,请在您的计算机上启动一个终端,进入您的目录,然后按照以下说明操作
python3 -m venv .venv # create a new virtual environment in the “.venv” folder, which will contain all dependencies
source .venv/bin/activate # activate the venv
您现在可以在您刚刚创建的venv中操作。
您可以通过deactivate
在任何时候停用该venv。
:tada: 您现在已准备好安装此OpenFisca国家包了!
有两种安装程序可供选择。根据您计划如何使用此国家包,选择以下A或B程序。
A. 最小安装(Pip安装)
如果您希望
- 在大型人口上运行计算;
- 创建税务和福利模拟;
- 为此立法编写扩展(例如,城市特定的税务和福利);
- 通过OpenFisca Web API提供您的国家包。
对于更高级的使用,请参阅高级安装。
使用Pip安装此国家包
在您的venv中,检查先决条件
python --version # should print "Python 3.11.xx".
pip --version # should print at least 9.0.
# if not, run "pip install --upgrade pip"
安装国家包
pip install openfisca-country_template
:warning: 请注意,使用pip
安装国家包取决于其维护者发布此包。
:tada: 此OpenFisca国家包现已安装并准备好使用!
下一步
- 要了解如何使用OpenFisca,请参阅我们的教程。
- 要提供此国家包,请提供OpenFisca Web API。
根据您对OpenFisca的使用情况,您可能还需要在venv中安装其他包。
- 要安装扩展或在国家包之上编写代码,请前往扩展文档。
- 要绘制模拟结果,尝试使用matplotlib。
- 要管理数据,查看pandas。
B. 高级安装(Git克隆)
如果您想
- 创建或修改此国家包的法规;
- 贡献源代码。
使用Git克隆此国家包
首先,确保您的计算机上已安装Git。
将您的工作目录设置为希望克隆此OpenFisca国家包的位置。
在您的venv中,检查先决条件
python --version # should print "Python 3.11.xx".
在您的计算机上克隆此国家包
git clone https://example.com/repository.git
cd repository_folder
pip install --upgrade pip build twine
pip install --editable .[dev] --upgrade
您可以通过运行提供的测试(使用make test
)来确保一切正常。
:tada: 此OpenFisca国家包现已安装并准备好使用!
下一步
使用OpenFisca Web API提供此国家包
如果您正在考虑构建Web应用程序,您可以使用包装好的OpenFisca Web API与您的国家包一起使用。
要本地提供Openfisca Web API,运行
openfisca serve --port 5000 --country-package openfisca_country_template
或使用快速启动Make命令
make serve-local
要了解更多关于openfisca serve
命令的信息,请参阅其文档。
您可以通过请求来确保您的API实例正在运行
curl "http://localhost:5000/spec"
此端点返回您API的Open API规范。
:tada: 此OpenFisca国家包现在由OpenFisca Web API提供服务!要了解更多信息,请访问OpenFisca Web API文档。
您可以通过发送位于situation_examples
文件夹中的示例JSON数据来测试您的新Web API。
curl -X POST -H "Content-Type: application/json" \
-d @./openfisca_country_template/situation_examples/couple.json \
http://localhost:5000/calculate
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源代码分发
构建分发
openfisca_country_template-7.1.5.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | b2f2ac9945d9ccad467aed0925bd82f7f4d5ce4e96b212324cd071b8bee46914 |
|
MD5 | 68ec3211ec4a77acac068f08b0ae3368 |
|
BLAKE2b-256 | 15584181d5eefdfc7397afa4e1067603fb4cdf7095deec61f512d34c76d521da |
openfisca_country_template-7.1.5-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 75a86bb794a2ee771c6f5d2837cbc89154a86047e06ab3896efce38fafebdd21 |
|
MD5 | b32ec6233bd2f9fbfa23a125aadab8c7 |
|
BLAKE2b-256 | 754b8353b8d113e6dc9bac336290bc9879ac4dfffa9ef6ed65ad2b86c04001fb |