python对象元数据解析器。
paradigm的Python项目详细描述
范例
在接下来的内容中
python
是python3.5
或任何更高版本的别名 版本(python3.6
等),pypy
是pypy3.5
或任何更高版本的别名 版本(pypy3.6
等等)。
安装
安装最新的pip
&;setuptools
软件包版本:
- 与
CPython
python -m pip install --upgrade pip setuptools
- 用
PyPy
pypy -m pip install --upgrade pip setuptools
用户
从PyPI
存储库下载并安装最新的稳定版本:
- 与
CPython
python -m pip install --upgrade paradigm
- 用
PyPy
pypy -m pip install --upgrade paradigm
显影剂
从GitHub
存储库下载最新版本
git clone https://github.com/lycantropos/paradigm.git
cd paradigm
安装依赖项:
- 与
CPython
python -m pip install -r requirements.txt
- 用
PyPy
pypy -m pip install -r requirements.txt
安装:
- 与
CPython
python setup.py install
- 用
PyPy
pypy setup.py install
用法
paradigm
可用于获取签名
>>>fromparadigmimportsignatures
对于用户定义的函数
>>>deffunc(foo,bar=None,**kwargs):...pass>>>signatures.factory(func)Plain(Parameter(name='foo',kind=Parameter.Kind.POSITIONAL_OR_KEYWORD,has_default=False),Parameter(name='bar',kind=Parameter.Kind.POSITIONAL_OR_KEYWORD,has_default=True),Parameter(name='kwargs',kind=Parameter.Kind.VARIADIC_KEYWORD,has_default=False))
对于用户定义的类
>>>classUpperOut:...def__init__(self,outfile):...self._outfile=outfile......defwrite(self,s):...self._outfile.write(s.upper())......def__getattr__(self,name):...returngetattr(self._outfile,name)>>>signatures.factory(UpperOut)Plain(Parameter(name='outfile',kind=Parameter.Kind.POSITIONAL_OR_KEYWORD,has_default=False))
对于用户定义的类方法
>>>signatures.factory(UpperOut.write)Plain(Parameter(name='self',kind=Parameter.Kind.POSITIONAL_OR_KEYWORD,has_default=False),Parameter(name='s',kind=Parameter.Kind.POSITIONAL_OR_KEYWORD,has_default=False))
对于内置功能
>>>importplatform>>>fromparadigm.modelsimportParameter,Plain>>>signatures.factory(any)==(...Plain(Parameter(name='seq',...kind=Parameter.Kind.POSITIONAL_OR_KEYWORD,...has_default=False))...ifplatform.python_implementation()=='PyPy'...elsePlain(Parameter(name='iterable',...kind=Parameter.Kind.POSITIONAL_ONLY,...has_default=False)))True
对于内置类
>>>importplatform>>>fromparadigm.modelsimportParameter,Plain>>>signatures.factory(float)==(...Plain(Parameter(name='x',...kind=Parameter.Kind.POSITIONAL_OR_KEYWORD,...has_default=True))...ifplatform.python_implementation()=='PyPy'...elsePlain(Parameter(name='x',...kind=Parameter.Kind.POSITIONAL_ONLY,...has_default=True)))True
对于内置类方法
>>>importplatform>>>fromparadigm.modelsimportParameter,Plain>>>signatures.factory(float.as_integer_ratio)==(...Plain(Parameter(name='self',...kind=Parameter.Kind.POSITIONAL_OR_KEYWORD,...has_default=False))...ifplatform.python_implementation()=='PyPy'...elsePlain(Parameter(name='self',...kind=Parameter.Kind.POSITIONAL_ONLY,...has_default=False)))True
使用
可以检查对象是否受paradigm
支持
>>>fromparadigmimportdefinitions>>>definitions.is_supported(int.bit_length)True
开发
碰撞版本
准备工作
安装 bump2version。
预发布
选择要在semver specification之后凹凸的版本号类别。
测试碰撞版本
bump2version --dry-run --verbose $CATEGORY
其中$CATEGORY
是目标版本号类别名称,可能
值是patch
/minor
/major
。
凹凸版本
bump2version --verbose $CATEGORY
这将把version设置为major.minor.patch-alpha
。
释放
测试碰撞版本
bump2version --dry-run --verbose release
凹凸版本
bump2version --verbose release
这将把version设置为major.minor.patch
。
运行测试
安装依赖项:
- 与
CPython
python -m pip install -r requirements-tests.txt
- 用
PyPy
pypy -m pip install -r requirements-tests.txt
普通
pytest
在Docker
容器内:
- 与
CPython
docker-compose --file docker-compose.cpython.yml up
- 用
PyPy
docker-compose --file docker-compose.pypy.yml up
Bash
脚本(例如,可用于Git
挂钩):
用
CPython
./run-tests.sh
或
./run-tests.sh cpython
用
PyPy
./run-tests.sh pypy
PowerShell
脚本(例如,可用于Git
挂钩):
- 与
CPython
.\run-tests.ps1
或.\run-tests.ps1cpython
- 用
PyPy
.\run-tests.ps1pypy