Inkremental adalah manajer versi CalVer yang mendukung masa depan.
Dokumentasi API dapat ditemukan di sini. Dokumentasi naratif menyusul.
Isi
Teori Operasi
Mulai Cepat
Menggunakan alat pengaturan
Menggunakan tukik
Menggunakan setup.py
Inisialisasi proyek
Integrasi waktu proses
Versi Tambahan
Memperbarui
Versi Tidak Pasti
Nomor versi berbentuk YY.MM.PATCH.
Jika proyek Anda bernama "Shrubbery", kodenya ditemukan di shrubbery/
atau src/shrubbery/
.
Inkremental menyimpan nomor versi proyek Anda di {src/}shrubbery/_version.py
.
Untuk memperbarui versi, jalankan incremental update Shrubbery
, lewati --rc
dan/atau --patch
sesuai kebutuhan (lihat Memperbarui, di bawah).
Mengubah versi juga memperbarui versi yang tidak dapat ditentukan dalam basis kode Anda, seperti "Shrubbery NEXT", sehingga Anda dapat mereferensikan rilis mendatang dalam dokumentasi. Begitulah cara Inkremental mendukung masa depan.
Tambahkan Inkremental ke pyproject.toml
Anda :
[build-system]requires = ["setuptools","inkremental>=24.7.2", # ← Tambahkan tambahan sebagai ketergantungan build]build-backend = "setuptools.build_meta"[project]name = ""dynamic = ["versi"] # ← Tandai versinya Dynamicdependencies = ["inkremental>=24.7.2", # ← Bergantung pada inkremental di runtime]# ...[tool.incremental] # ← Aktifkan plugin setuptools Inkremental
Tidak apa-apa jika tabel [tool.incremental]
kosong, namun harus ada.
Hapus semua [project] version =
dan [tool.setuptools.dynamic] version =
apa pun.
Selanjutnya, inisialisasi proyek.
Jika Anda menggunakan Hatchling untuk mengemas proyek Anda, aktifkan plugin Hatchling Inkremental dengan mengubah pyproject.toml
:
[build-system]requires = ["hatchling","incremental>=24.7.2", # ← Tambahkan inkremental sebagai ketergantungan build]build-backend = "hatchling.build"[project]name = ""dynamic = ["versi"] # ← Tandai versinya Dynamicdependencies = ["inkremental>=24.7.2", # ← Bergantung pada inkremental saat runtime]# ...[tool.hatch.version]source = "inkremental" # ← Aktifkan plugin Hatchling Inkremental
Inkremental dapat dikonfigurasi seperti biasa dalam tabel [tool.incremental]
opsional.
Perintah hatch version
akan melaporkan versi yang dikelola tambahan. Gunakan perintah incremental update
untuk mengubah versi (pengaturannya dengan hatch version
tidak didukung).
Selanjutnya, inisialisasi proyek.
setup.py
Inkremental dapat digunakan dari setup.py
alih-alih pyproject.toml
. Tambahkan ini ke panggilan setup()
Anda, hapus argumen versi lainnya:
setup(use_incremental=True,setup_requires=['incremental'],install_requires=['incremental'], # bersama dengan dependensi instalasi lainnya... }
Kemudian inisialisasi proyek.
Instal Inkremental ke lingkungan lokal Anda dengan pipx install incremental
. Kemudian jalankan incremental update
. Ini akan membuat file dalam paket Anda bernama _version.py
seperti ini:
dari impor tambahan Version__version__ = Version("", 24, 1, 0)__all__ = ["__version__"]
Penginstalan proyek Anda selanjutnya akan menggunakan Inkremental untuk pembuatan versi.
Anda dapat mengekspos versi incremental.Version
dari _version.py
di API paket Anda. Untuk melakukannya, tambahkan __init__.py
ke paket root Anda:
dari ._version impor __version__
Catatan
Memberikan atribut __version__
sudah ketinggalan zaman setelah diperkenalkannya importlib.metadata.version() di Python 3.6, yang dapat mengambil versi paket yang diinstal.
Jika Anda tidak mengekspos objek ini secara publik, atau menggunakannya dalam paket Anda, maka tidak perlu bergantung pada Inkremental saat runtime. Anda dapat menghapusnya dari array dependencies
proyek Anda (atau, dalam setup.py
, dari install_requires
).
incremental.Version
adalah kelas yang mewakili versi proyek tertentu. Itu terdiri dari elemen-elemen berikut (yang diberikan selama instantiasi):
package
(wajib), nama paket yang diwakili oleh Version
ini.
major
, minor
, micro
(semua diperlukan), XYZ Version
proyek Anda.
release_candidate
(opsional), disetel ke 0 atau lebih tinggi untuk menandai Version
ini sebagai kandidat rilis (terkadang juga disebut "prarilis").
post
(opsional), setel ke 0 atau lebih tinggi untuk menandai Version
ini sebagai pascarilis.
dev
(opsional), setel ke 0 atau lebih tinggi untuk menandai Version
ini sebagai rilis pengembangan.
Anda dapat mengekstrak string versi yang kompatibel dengan PEP-440 dengan menggunakan metode .public()
, yang mengembalikan str
yang berisi versi lengkap. Ini adalah versi yang harus Anda berikan kepada pengguna, atau digunakan secara publik. Contoh keluarannya adalah "13.2.0"
, "17.1.2dev1"
, atau "18.8.0rc2"
.
Memanggil repr()
dengan suatu Version
akan memberikan representasi kode sumber Python, dan memanggil str()
pada suatu Version
akan menghasilkan string seperti '[Incremental, version 16.10.1]'
.
Inkremental menyertakan alat untuk mengotomatiskan pembaruan versi proyek yang menggunakan Inkremental yang disebut incremental
. Ini memperbarui file _version.py
dan secara otomatis memperbarui beberapa penggunaan versi Inkremental dari versi tak tentu ke versi saat ini. Itu membutuhkan click
dari PyPI.
incremental update
akan melakukan pembaruan pada paket itu. Perintah yang dapat diberikan setelah itu menentukan versi selanjutnya.
--newversion=
, untuk menyetel versi proyek ke versi yang ditentukan sepenuhnya (seperti 1.2.3, atau 17.1.0dev1).
--rc
, untuk menyetel versi proyek ke
jika versi saat ini bukan merupakan kandidat rilis, atau menambah nomor kandidat rilis dengan 1 jika versi tersebut merupakan kandidat rilis.
--dev
, untuk menyetel nomor rilis pengembangan proyek ke 0 jika ini bukan rilis pengembangan, atau menambah nomor rilis pengembangan dengan 1 jika memang demikian.
--patch
, untuk menambah nomor patch rilis. Ini juga akan mengatur ulang nomor kandidat rilis, meneruskan --rc
pada saat yang sama untuk menambah nomor patch dan menjadikannya kandidat rilis.
--post
, untuk menyetel nomor pascarilis proyek ke 0 jika bukan pascarilis, atau menambah nomor pascarilis dengan 1 jika ya. Ini juga akan mengatur ulang nomor rilis kandidat dan pengembangan.
Jika Anda tidak memberikan argumen, nomor kandidat rilis akan dihapus, menjadikannya "rilis penuh".
Inkremental mendukung versi "tak tentu", sebagai pengganti versi "lengkap" berikutnya. Ini dapat digunakan ketika versi yang akan ditampilkan kepada pengguna akhir tidak diketahui (misalnya "diperkenalkan" atau "tidak digunakan lagi"). Inkremental mendukung versi tak tentu berikut:
Version("
Saat Anda menjalankan incremental update
, ini akan diperbarui ke versi sebenarnya (dengan asumsi versi final target adalah 17.1.0):
Version("
Setelah versi final dibuat, maka akan menjadi:
Version("