2016-09-15 4 views
3

私のパッケージの開発/テスト/ etcバージョンをローカルのdevpiサーバにアップロードしています。 PyPIへの偶発的なアップロードを防ぐために、私は一般的な慣行採用しています--publicがアップロードコマンドに渡されない限り、PyPiへのパッケージのアップロードを無効にする方法

:素晴らしい作品

setup(..., 
     classifiers=[ 
     "Programming Language :: Python", 
     "Programming Language :: Python :: 2", 
     "Programming Language :: Python :: 2.7", 
     "Private :: Do not Upload" 
    ], 
    ...) 

を、しかし、私は最終的には、PyPIにパッケージをアップロードする準備ができていたときは?

私は私がどのように見えるグローバル変数の設定の外()呼び出しとして分類を定義する必要があり、完全に醜いが、簡単なハックを作ってみた

CLASSIFIERS = [ 
    "Programming Language :: Python", 
    "Programming Language :: Python :: 2", 
    "Programming Language :: Python :: 2.7" 
] 


if "--public" not in sys.argv: 
    CLASSIFIERS.append("Private :: Do Not Upload") 
else: 
    sys.argv.remove("--public") 

setup(... 
     classifiers=CLASSIFIERS, 
     ...) 

別の、そしておそらくもっと簡単なオプションは、 "Private :: Do not Upload"をコメントアウトするだけですが、それは私のハックよりもプロフェッショナルなものではないようです。私はuploadコマンドの適切なサブクラスを作成されてやってようをいただきたい何

SafeUploadと呼ばれ、それが--public CMDラインオプションをチェックしています。おそらく、アップロードの前にビルドが存在する可能性があるので、SafeBuildが良いオプションかもしれません。

残念ながら、カスタムコマンドの作成に関するsetuptoolsのドキュメントを理解できません。

これを実装する方法はありますか?カスタムコマンドがsetup()に渡されたパラメータにアクセスできるかどうか、つまりsetup()に渡されたclassifiersを直接操作できるかどうか、またはコマンドのユーザがCLASSIFIERSをグローバルとして定義する規則に従う必要があるかどうかはわかりません変数yuck

答えて

関連する問題