一个用于python monorepo管理的自以为是的cli工具。

scream的Python项目详细描述


尖叫

Still very much a WIP. Lots of work to be done; please open issues or pull requests.

Python 2.7Python 3.7License: MIT

当你看到一堆Python…包装。

或者…

一个用于python monorepo管理的自以为是的cli工具。


它的目标是简化在单个存储库中创建、测试和部署多个python包的过程。 为了确保名称与pypi不重叠,此工具强制您使用命名空间包。 名称空间是根据python的 pkgutil-style

为什么要用尖叫?

  • scream将所有软件包保存到相同的标准

    • 执行一致的样式。
    • 执行一致性测试。
    • 执行一致的文档。
  • 使用tox为跨python版本的独立测试设置virtualenvs。

  • 预提交挂钩,以帮助防止这些该死的错误。

大多数单回购的问题

  1. 对于许多包,测试&ci/cd管道可能会变慢。

    其他可用的解决方案是:

    这些工具功能非常强大,但有时过于强大,会带来相当多的管理开销。

  2. 对于私有存储库,安装内部monorepo包依赖关系是很困难的。

    可用的解决方案是:

    • 把你所有的包裹都公开分发。
    • 托管私有pypi索引。
    • 使用dependency links安装pip。

尖叫是如何工作的

尖叫的目的是尽可能少的开销来管理你的单回购。 没有花哨的第三方配置或私有的pypi存储库。

Surm使用现有的Python包装要求来解决内部MyRoPoO依赖关系, 以及git来检测自父分支以来发生的更改。

例如:

分类号setup.cfg

[metadata]name=company_packageAversion=0.0.1description=Your package description![options]packages=find:install_requires=    company_packageB

如果对company_packageA进行更改,则运行测试…

> scream test --dry-run

The following packages have changes compared since branch: `master`:
        company_packagea

Packages that require testing:
        company_packagea
        company_packageb

命令

  • scream init-先运行这个。在空目录中启动monorepo。
  • scream new <package-name>-创建新的模板包。
  • scream test [--dry-run][--all][--parallel]-测试已更改的包和包依赖项。
  • scream install <package-name>[--test]-安装一个包。--test安装测试依赖项。
  • deploy <package-name>-在包目录中运行deploy.py。
  • scream build-构建一个python控制盘,并将其与所有依赖项捆绑为控制盘。(待办事项)
  • -v将启用详细日志。

快速启动

By default packages are tested against python 3.7.x, which means you have it available on your PATH. If you about different versions, please see the configuration options.

> mkdir mymonorepo
> cd mymonorepo

> scream init
Done!
Create a new package with `scream new <namespace>.<package_name>`

> scream new com.packagea
Created project `com.packagea`

> scream new com.packageb
Created project `com.packageb`

> scream test --all --parallel
Running tests... (Using all cores)

> coverage report

使用MonoRepo软件包

从这个monorepo安装软件包的两种常见方法是:

  1. 克隆存储库并在ci工具中运行scream buildscream install,以生成包并将其发送到计算机。
  2. 标准pip从私有或公共github repos将单个软件包安装到任何计算机上。

如果您的存储库是public,则可以使用以下命令在任何位置安装子包:

pip install 'git+ssh://git@github.com/ORG/REPO.git@master#subdirectory=examplea'

如果您的存储库是private, 您需要一些额外的步骤来确保可以安装依赖于这个monorepo中其他包的包。

  1. setup.cfg中为每个“本地”依赖项指定dependency_links
dependency_links=    git+ssh://git@github.com/ORG/REPO.git@master#egg=examplea-0#subdirectory=subpackages/examplea
  1. pip安装和以前一样,但是指定标志--process-dependency-links
pip install 'git+ssh://git@github.com/ORG/REPO.git@master#subdirectory=examplea' --process-dependency-links

配置

  1. 在您的包中setup.cfg变量python_requires 确定要对包的python版本进行测试。
  • 例如,python_要求=2.7、3.6、3.7

    Note: the python versions you intend to test must be available on your path.

即将推出的功能

  • []自动版本处理。
  • []预提交挂钩到flake8。
  • []预提交挂钩,以避免提交大文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java楼梯的最大高度   java Jackson从1.7.1更新到2.8.6 JsonTypeInfo子类型反序列化   Spring WebApp中的java JPA异常处理   java在SwingWorker(doInBackground)中从WorkerThread调用多个方法?   java Android Studio构建到jar   java是添加多个按钮组的更有效方法   java MySQL JDBC连接池最大大小   java如何防止元素<Integer>变成元素<Object>   Java:处理大型XML文件提取数据而不编写状态自动机?   SpringBoot和React Web应用程序中CAS的java重定向问题   需要java算法方面的帮助吗   java在JDK 16中使用PowerMock   java异常错误本机方法签名   在Java Android中将JSON映射到数组/对象   如何打开一个窗口。java程序中的dat文件   java应用程序引擎+Maven+热插拔   java Moxy的getValueByXPath为除根元素以外的所有元素返回null