公共天文学Pythonパッケージのビジョン

以下の文書は、汎用的なAstronomy Pythonパッケージのビジョンと、この目標を達成するためにどのように最善を尽くしているかをまとめています。以下の文書では,この共通パッケージをカーネルパッケージと呼ぶ.このビジョンは不変ではなく,実践におけるどのような流れやガイドラインにも適応させることに取り組んでいる。

私たちが求めている最終目標は、天文学に必要なコア機能の大部分と一般的なツールが含まれるパッケージですが、そうではありません すべてのすべて 天文学者は永遠に必要になるだろう。このようにする主な目的は、共通のコアタスクの重複を回避し、強固な枠組みを提供し、それに基づいてより複雑なツールを構築することである。

そのような汎用パッケージは、常により複雑かつ/または専門的なツールが必要であるので、既存の他の天文学パッケージを排除してはならない。これらのツールは,単一のカーネルライブラリに依存して多くのタスクを実行することができ,依存項の数を減らし,機能の重複を減少させ,そのインタフェースの整合性を向上させることができる.

段取り

コミュニティの助けの下で、調整委員会はまず、FITS、WCS、座標、表、光度、スペクトルなどの予備開発/強固を必要とするいくつかの重要な領域を決定する。また,チームを結成してこの機能を実現する独立パッケージの構築を奨励する.これらのパケットは、関連パケットと呼ばれる(これは、それらが将来コアパケットに統合されることが意図されていることを意味する)。

異なるコンポーネント間の一貫性を保証するために、アクセサリパケットのために提供されるインターフェースおよびクラス/方法のための要求のセットが提示される。コアパッケージの増加に伴い、コアパッケージの新しい潜在的領域/コンポーネントが決定される。競争は避けられず、積極的に阻止されることもないが、可能であれば、開発者はチームになり、社会に利益をもたらすための単一かつ強力な付属パッケージを提供するように努力すべきである。

付属パッケージは、コアパッケージ以外の独立したリポジトリで開発され、これは、チームがツールおよび組織を選択することを可能にする。付属パケットが必要な機能を実現し、符号化スタイル、文書、およびテストの品質基準を満たすと、コアパケットに含めることが考えられ、リポジトリに直接アクセスするか、またはパッチ/プル要求によってコアパケット内で直接開発されることが考えられる(具体的にどのように行うかは後述する)。

すべてのパッケージの一貫性を確保し、コアパッケージとの統合を促進するためには、コアパッケージに含まれるようにサブルーチンパッケージを提出することが望ましい開発者は、開発開始前に提供される“テンプレート”パッケージのレイアウトに従う必要がある。

依存性.

関連パッケージは以下の依存項しか導入できないはずである.

  • Python標準ライブラリNumPy、SciPy、MatplotlibコンポーネントはすでにコアAstronomyパッケージに*

他のパケットを使用することも可能であるが,パケットの初期導入期間に導入するのではなく,必要に応じて導入しなければならない.

依存項が必要であるが,その依存項が付属パケットである場合,依存項パケットは依存項がコアパケットに統合されるまで待つ必要があり,その依存項自体を含むことが考えられる.同時に、既存の形態の他の付属パケット、または他のパケットを利用して、停滞を回避することができる。したがって,コアに含まれる最初のパケットは,標準ライブラリNumPy,SciPy,Matplotlibのみが必要なパケットとなる.

必要な依存項が決してマスタパッケージの一部ではない場合、デフォルトの場合、依存項を含むことができるが、必要に応じて依存項を導入すべきである(これは、コアパッケージ全体ではなく、コンポーネントの導入のみを阻止することを意味する)、強力な理由が提示されない限り、コミュニティは、依存項が十分に重要であり、より高いレベルで要求される必要があるという一般的な合意に達している。

このシステムは,パケットが依存木の順にコアパケットに統合され,コアパケットに統合されているパケットのインタフェースがコアパケット内の既存のインタフェースと一致することを保証することを意味する.

最初に,カーネルパッケージではGUI Toolkitに依存することは許されない.コミュニティが利用可能な単一Toolkitで合意すれば,そのToolkitは許可される(ただし必要な場合にのみ導入される).

関連小包を追跡する

関連パッケージは、(PyPIを除く)中央位置に列挙され、これにより、すべての関連ソフトウェアパッケージを容易にインストールすることができ、例えば、1つのスクリプトを使用してすべての関連ソフトウェアパッケージをシームレスにダウンロードおよびインストールすることができる。コアソフトウェアパッケージには、このインストールプロセスを簡略化する機構も含まれる。

ただいまセットになっております

我々は,カーネルライブラリが安定していると考えられ,その機能を含めてコミュニティに公開されるまで,既存のパッケージを持つ開発者がユーザの支援を継続することを奨励する.その後、開発者は、ユーザがコアパッケージ内の機能を使用することに移行することを奨励し、コアパッケージよりも高い価値を提供しない限り、最終的に自分のパッケージを段階的に淘汰すべきである。