conda和pip环境的许可证扫描和文档

pylicenses的Python项目详细描述


查找conda和pip中所有已安装软件包的许可证类型和文本 环境,产生分配就绪文件第三方许可证 包含所有软件包的所需详细信息,包括其各自的许可证文本。

为什么还要另一个工具?

有好几个包裹有类似的意思,但是我没有找到 以匹配特定的用例塔许可证封面。专门生产 在包级别为所有已安装的包提供一整套许可证 (与许多其他类似工具的文件级别相反)。 一个专注的工具,可以很容易地扩展到任何框架,任何语言。

功能

Pylicense

  • 生成第三方许可证文件作为对所有包
  • 的报告
  • 从conda、pip、pypi和github收集数据以检索信息 在作者、软件包主页、许可证样式和最重要的- 实际许可证文本。
  • 使用扫描仪/数据采集器的管道。将新框架添加到 扫描(例如,包括npm模块)是编写新的包提供程序的问题。 使用单个方法初始化。
  • 生成主包的报告和统计信息(直接依赖关系)和 二级包(通过依赖关系拉入),特别是在 康达和皮普。统计数据当前包括每个许可证类型的计数。
  • 如果缺少许可证信息或许可证文本,则突出显示软件包
  • 对于不包含 许可证文本或自动查找难以找到许可证文件的位置 手段。

如何使用

在conda或pip virtualenv中,运行

$ python -m pylicense

查看选项

$ python -m pylicense -h usage: __main__.py [-h] [–github GITHUB] [–stats STATS]

optional arguments:
-h, --helpshow this help message and exit
--github GITHUB
specify github user,password
--stats STATSprint statistics

样本输出

在该存储库中查看完全许可证的第三方许可证文件 此包的收集报告。

直接输出如下所示

$ python -m pylicense Packages directly required:

name author license ———- ————————– ———————– pylicenses Patrick Senti Apache 2.0 wheel Daniel Holth Other urllib3 Andrey Petrov MIT tabulate Sergey Astanin MIT sh Andrew Moffat MIT setuptools Python Packaging Authority MIT License requests Kenneth Reitz Apache Software License pip The pip developers MIT certifi Kenneth Reitz MPL-2.0 libedit NetBSD python PSF

Packages pulled in through other requirements:

name author license ————— —————- ————————————– idna Kim Davies BSD Like chardet Daniel Blanchard GNU Lesser General Public License v2.1 ca-certificates ISC libffi MIT libgcc-ng GPL libstdcxx-ng GPL3 with runtime exception ncurses Free software - X11 License openssl OpenSSL readline GPL3 sqlite Public-Domain xz Public-Domain, GPL zlib zlib

SUCCESS Good news. There are no packages without license texts

SUCCESS The full license report is available in THIRDPARTY-LICENSES

如何实现新的扫描仪

  1. 在pylicenses.provider中添加一个类,例如

    class MyPackageScanner(PackageProvider):
    def get_packages_info(self, packages, subset=None)

    … your code to update packages … return packages

    是一个字典映射,其中名称是 包的规范名称或完整分发名称(名称版本类型), 数据是迄今为止收集到的数据。为了编程方便,所有映射 对于同一个包,独立于键,引用相同的数据对象。

    目前对于数据内容的约定很少:

    • name is the name of package without version or distribution type
    • dist_name is the full distribution name (name-version or name-version-type)
    • license is the canonical license name (e.g. MIT, Apache-2.0 etc.)
    • license_text is the actual license text
    • license_source is the filename/URL to the source of the license text
    • license_trace is the last scanner to update the data

    扫描器可以根据需要存储任何其他数据。注意 依赖于作为基类的packageprovider是非常方便的。

  2. 将新的scanner类添加到pylicenses.providers中

  3. 添加单元测试

许可证

麻省理工学院许可证-版权所有(c)2018 patrick senti,productaize.io 请参见许可文件

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

推荐PyPI第三方库


热门话题
java需要一种简单的方法来创建用于排序的comparator类   java getReadableDatabase和getWriteableDatabase无法解析   查找列表<Long>中与某个元素对应的所有索引的java方法   安卓将视图添加到ViewFlipper会导致java。StackOverflowerr语言   java根据它所包含的长“curTime”类字段将N的列表拆分为24(小时)   Android N中的Java8流API   自动生成Java策略文件的安全性   垃圾收集鼓励Java中的主要GC(但不是STW GC)   java如何检查UDP服务器上侦听的客户端数量   在前一台主机被Datastax Java驱动程序关闭后,Cassandra尝试重新连接到下一台主机   java如何使用Spring Boot创建部分代理   java是否有一个网站或资源可以完全比较EJB版本   java无需使用第三方库从gradle生成输出   继承由于这个多态性的基本示例中的语法有什么不同吗?(爪哇)   java字符串数组中的空字符串   java为什么CMS中的初始标记阶段是串行的   为什么Lucene有时与InChIKeys不匹配?   安卓通知Java应用程序数据库中的更改   java如何将单个json对象值解析为按钮   java打印堆栈将运行时错误跟踪到文件