Skip to main content

mimic-check

mimic-check は、requirements.txt に記載された Python パッケージの安全性を検証するためのツールです。 タイポスクワッティング(有名なパッケージに似た名前の悪意あるパッケージ)の検出や、ダウンロード数・GitHub スター数に基づいた信頼性の評価を行います。

特徴

  • タイポ検出: requests を reqeusts と書き間違えているようなケースを検出し警告します。
  • 信頼性評価: PyPI のダウンロード数(直近1ヶ月)と GitHub のスター数を確認し、閾値未満のパッケージを警告します。
  • 効率的なキャッシュ: 検証結果を当日中のみ有効なキャッシュとして保存し、不要な API リクエストを削減します。
  • PyPI 存在確認: パッケージが PyPI に存在しない場合、即座に警告し後続のチェックをスキップします。
  • CI 対応: --ci フラグを使用することで、問題検出時に非ゼロの終了コードで終了し、パイプラインを停止させることができます。

セットアップ

必要条件

  • Python 3.x
  • requests, toml パッケージ

インストール

PyPIからインストールする場合(公開後):

pip install mimic-check

ローカルで開発用にインストールする場合:

pip install -e .

これにより、mimi コマンドが使用可能になります。

使い方

基本的な実行

mimi --file requirements.txt

実行すると、パッケージごとに以下のチェックが行われます:

  1. 有名パッケージとの名前の類似性(タイポ)チェック
  2. PyPI での存在確認
  3. ダウンロード数とスター数の確認

問題が見つかった場合、警告が表示され、続行するかどうかを確認されます。y を入力すると、そのパッケージを含めた一時的な requirements ファイルで pip install が実行されます。

CI モードでの実行

CI/CD パイプラインなどで、問題検出時に自動的にエラーとしたい場合は --ci フラグを使用します。

mimi --file requirements.txt --ci

PyPIへの配布方法

  1. ビルドツールのインストール:
pip install build twine
  1. パッケージのビルド:
python -m build
  1. PyPIへのアップロード (テスト環境):
python -m twine upload --repository testpypi dist/*
  1. PyPIへのアップロード (本番環境):
python -m twine upload dist/*

設定 (config.toml)

プロジェクトのルートにある config.toml で動作をカスタマイズできます。

[mimi]
min_downloads = 1000  # 信頼できるとみなす最小ダウンロード数
min_stars = 10        # 信頼できるとみなす最小 GitHub スター数
famous_packages = ["requests", "numpy", "pandas", ...] # タイポチェック対象の有名パッケージ
trusted_packages = [] # チェックをスキップする信頼済みパッケージ

キャッシュ

package_cache.json に検証結果がキャッシュされます。

  • キャッシュは日付ごとに管理され、翌日には自動的に再検証されます。
  • 信頼性の基準を満たしたパッケージのみがキャッシュされ、警告対象のパッケージは毎回チェックされます。

Metadata

Release files for mimic-check 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mimic-check 0.1.0
File Size Uploaded Provenance
mimic_check-0.1.0.tar.gz 6.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mimic-check 0.1.0
File Interpreter ABI Platform
mimic_check-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.3 kB

Release files / mimic_check-0.1.0.tar.gz

Download URL mimic_check-0.1.0.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
42c714d9a4f44af7d64eb168d6218c83c7390b97e803ea654407f92924a260c3
BLAKE2b-256 checksum
How to use checksums
d156e76533d5666a403f0873fa1fa34bdad3b0d37de1e57d76fbe559b2a44e55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.1.dev37+g4f20c0dc3 CPython/3.11.9

Release files / mimic_check-0.1.0-py3-none-any.whl

Download URL mimic_check-0.1.0-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c6315fcf1c1ca8932edb7d96059f4b04761018fd8baa69c534c766c814e2cf1e
BLAKE2b-256 checksum
How to use checksums
c3f5386700f0b4219ce65e734bd33b1197fb1838c0c4c64ad2c3360f20d6b53b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.1.dev37+g4f20c0dc3 CPython/3.11.9

Security for mimic-check 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page