ส่วนเพิ่มคือตัวจัดการเวอร์ชัน CalVer รองรับอนาคต
สามารถดูเอกสาร API ได้ที่นี่ เอกสารประกอบคำบรรยายดังต่อไปนี้
สารบัญ
ทฤษฎีการดำเนินงาน
เริ่มต้นอย่างรวดเร็ว
การใช้เครื่องมือตั้งค่า
การใช้ลูกฟัก
ใช้ setup.py
เริ่มต้นโครงการ
บูรณาการรันไทม์
เวอร์ชันที่เพิ่มขึ้น
กำลังอัปเดต
รุ่นที่ไม่แน่นอน
หมายเลขเวอร์ชันมีรูปแบบ YY.MM.PATCH
หากโปรเจ็กต์ของคุณชื่อ "Shrubbery" โค้ดของโครงการจะอยู่ใน shrubbery/
หรือ src/shrubbery/
ส่วนเพิ่มจะจัดเก็บหมายเลขเวอร์ชันของโปรเจ็กต์ของคุณใน {src/}shrubbery/_version.py
หากต้องการอัปเดตเวอร์ชัน ให้เรียกใช้ incremental update Shrubbery
โดยส่ง --rc
และ/หรือ --patch
ตามความเหมาะสม (ดูการอัปเดตด้านล่าง)
การเปลี่ยนเวอร์ชันยังอัปเดตเวอร์ชันที่ไม่แน่นอนในโค้ดเบสของคุณ เช่น "Shrubbery NEXT" เพื่อให้คุณสามารถอ้างอิงการเปิดตัวที่กำลังจะมาถึงในเอกสารประกอบ นั่นคือวิธีที่ Increamental สนับสนุนอนาคต
เพิ่มส่วนเพิ่มให้กับ pyproject.toml
ของคุณ :
[build-system]requires = ["setuptools",increational>=24.7.2", # ← เพิ่มส่วนเพิ่มเป็นการพึ่งพา build]build-backend = "setuptools.build_meta"[project]name = ""dynamic = ["version"] # ← ทำเครื่องหมายเวอร์ชัน dynamicdependencies = ["increational>=24.7.2", # ← ขึ้นอยู่กับส่วนเพิ่ม ณ รันไทม์]# ...[tool.increational] # ← เปิดใช้งานปลั๊กอิน setuptools ของส่วนเพิ่ม
ไม่เป็นไรถ้าตาราง [tool.incremental]
ว่างเปล่า แต่ต้องมีอยู่
ลบรายการ [project] version =
entry และ [tool.setuptools.dynamic] version =
entry ใด ๆ
ถัดไป เริ่มต้นโครงการ
หากคุณใช้ Hatchling เพื่อจัดทำแพ็กเกจโปรเจ็กต์ของคุณ ให้เปิดใช้งานปลั๊กอิน Increamental's Hatchling โดยแก้ไข pyproject.toml
ของคุณ :
[build-system]requires = ["hatchling",increational>=24.7.2", # ← เพิ่มส่วนเพิ่มเป็นการพึ่งพา build]build-backend = "hatchling.build"[project]name = ""dynamic = ["version"] # ← ทำเครื่องหมายเวอร์ชัน dynamicdependencies = ["increational>=24.7.2", # ← ขึ้นอยู่กับส่วนเพิ่ม ณ รันไทม์]# ...[tool.hatch.version]source = "increational" # ← เปิดใช้งาน ปลั๊กอิน Hatchling ของส่วนเพิ่ม
ส่วนเพิ่มสามารถกำหนดค่าได้ตามปกติในตาราง [tool.incremental]
ที่เป็นทางเลือก
คำสั่ง hatch version
จะรายงานเวอร์ชันที่มีการจัดการแบบเพิ่มหน่วย ใช้คำสั่ง incremental update
เพื่อเปลี่ยนเวอร์ชัน (ไม่รองรับการตั้งค่าด้วย hatch version
)
ถัดไป เริ่มต้นโครงการ
setup.py
ส่วนเพิ่มอาจใช้จาก setup.py
แทน pyproject.toml
เพิ่มสิ่งนี้ลงในการเรียก setup()
ของคุณ โดยลบอาร์กิวเมนต์การกำหนดเวอร์ชันอื่น ๆ ออก:
setup(use_increational=True,setup_requires=['increasal'],install_requires=['increaseal'], # พร้อมกับการอ้างอิงการติดตั้งอื่น ๆ... -
จากนั้นเริ่มต้นโครงการ
ติดตั้งส่วนเพิ่มให้กับสภาพแวดล้อมท้องถิ่นของคุณด้วย pipx install incremental
จากนั้นรัน incremental update
มันจะสร้างไฟล์ในแพ็คเกจของคุณชื่อ _version.py
ดังนี้:
จากการนำเข้าที่เพิ่มขึ้น Version__version__ = Version("", 24, 1, 0)__all__ = ["__version__"]
การติดตั้งโปรเจ็กต์ครั้งต่อไปของคุณจะใช้ส่วนเพิ่มสำหรับการกำหนดเวอร์ชัน
คุณสามารถเปิดเผย incremental.Version
จาก _version.py
ใน API ของแพ็คเกจของคุณได้ โดยเพิ่ม __init__.py
ของแพ็คเกจรูทของคุณ
จาก ._version นำเข้า __version__
บันทึก
การระบุแอตทริบิวต์ __version__
กำลังล้าสมัยหลังจากการแนะนำ importlib.metadata.version() ใน Python 3.6 ซึ่งสามารถดึงข้อมูลเวอร์ชันของแพ็คเกจที่ติดตั้งได้
หากคุณไม่เปิดเผยออบเจ็กต์นี้ต่อสาธารณะ หรือใช้ประโยชน์จากออบเจ็กต์นี้ภายในแพ็คเกจของคุณ ก็ไม่จำเป็นต้องพึ่งพาส่วนเพิ่มขณะรันไทม์ คุณสามารถลบออกจากอาร์เรย์ dependencies
ของโครงการของคุณได้ (หรือใน setup.py
จาก install_requires
)
incremental.Version
เป็นคลาสที่แสดงถึงเวอร์ชันของโปรเจ็กต์ที่กำหนด ประกอบด้วยองค์ประกอบต่อไปนี้ (ซึ่งได้รับระหว่างการสร้างอินสแตนซ์):
package
(จำเป็น) ชื่อของแพ็คเกจที่ Version
นี้เป็นตัวแทน
major
, minor
, micro
(จำเป็นทั้งหมด), XYZ ของ Version
ของโครงการของคุณ
release_candidate
(ไม่บังคับ) ตั้งค่าเป็น 0 หรือสูงกว่าเพื่อทำเครื่องหมาย Version
นี้ว่าเป็นเวอร์ชันที่เป็นตัวเลือก (บางครั้งเรียกว่า "เวอร์ชันก่อนเผยแพร่")
post
(ไม่บังคับ) ตั้งค่าเป็น 0 หรือสูงกว่าเพื่อทำเครื่องหมาย Version
นี้เป็นเวอร์ชันหลังการเผยแพร่
dev
(ไม่บังคับ) ตั้งค่าเป็น 0 หรือสูงกว่าเพื่อทำเครื่องหมาย Version
นี้เป็นรุ่นการพัฒนา
คุณสามารถแยกสตริงเวอร์ชันที่เข้ากันได้กับ PEP-440 ได้โดยใช้เมธอด .public()
ซึ่งจะส่งคืน str
ที่มีเวอร์ชันเต็ม นี่คือเวอร์ชันที่คุณควรมอบให้กับผู้ใช้หรือใช้แบบสาธารณะ ตัวอย่างเอาต์พุตจะเป็น "13.2.0"
, "17.1.2dev1"
หรือ "18.8.0rc2"
การเรียก repr()
ด้วย Version
จะให้การแสดง Python-source-code และการเรียก str()
บน Version
จะสร้างสตริงเช่น '[Incremental, version 16.10.1]'
ส่วนเพิ่มมีเครื่องมือในการอัปเดตเวอร์ชันของโปรเจ็กต์ที่ใช้ส่วนเพิ่มของคุณโดยอัตโนมัติที่เรียกว่า incremental
โดยจะอัปเดตไฟล์ _version.py
และอัปเดตการใช้งานบางอย่างของเวอร์ชันส่วนเพิ่มจากเวอร์ชันที่ไม่แน่นอนไปเป็นเวอร์ชันปัจจุบันโดยอัตโนมัติ มันต้อง click
จาก PyPI
incremental update
จะดำเนินการอัปเดตบนแพ็คเกจนั้น คำสั่งที่สามารถได้รับหลังจากนั้นจะกำหนดว่าเวอร์ชันถัดไปคืออะไร
--newversion=
เพื่อตั้งค่าเวอร์ชันโปรเจ็กต์เป็นเวอร์ชันที่ระบุโดยสมบูรณ์ (เช่น 1.2.3 หรือ 17.1.0dev1)
--rc
เพื่อตั้งค่าเวอร์ชันของโปรเจ็กต์เป็น
หากเวอร์ชันปัจจุบันไม่ใช่ตัวเลือกที่วางจำหน่าย หรือเพิ่มจำนวนตัวเลือกที่วางจำหน่ายเป็น 1 หากเป็น
--dev
เพื่อตั้งค่าหมายเลขรุ่นการพัฒนาโครงการเป็น 0 หากไม่ใช่รุ่นการพัฒนา หรือเพิ่มหมายเลขรุ่นการพัฒนาเป็น 1 หากเป็น
--patch
เพื่อเพิ่มหมายเลขแพทช์ของการเปิดตัว สิ่งนี้จะรีเซ็ตหมายเลขผู้สมัครที่วางจำหน่าย โดยส่ง --rc
พร้อมกันเพื่อเพิ่มหมายเลขแพตช์และทำให้เป็นผู้สมัครที่วางจำหน่าย
--post
เพื่อตั้งค่าหมายเลข postrelease ของโปรเจ็กต์เป็น 0 หากไม่ใช่ postrelease หรือชนหมายเลข postrelease 1 ถ้าเป็น นี่จะเป็นการรีเซ็ตตัวเลือกการเปิดตัวและหมายเลขรุ่นการพัฒนาด้วย
หากคุณไม่ให้ข้อโต้แย้ง มันจะตัดหมายเลขผู้สมัครที่เผยแพร่ และทำให้เป็น "การเปิดตัวฉบับเต็ม"
ส่วนเพิ่มรองรับเวอร์ชัน "ไม่แน่นอน" เป็นส่วนเสริมสำหรับเวอร์ชัน "เต็ม" ถัดไป ซึ่งสามารถใช้ได้เมื่อไม่ทราบเวอร์ชันที่จะแสดงต่อผู้ใช้ปลายทาง (เช่น "แนะนำใน" หรือ "เลิกใช้แล้วใน") ส่วนเพิ่มรองรับเวอร์ชันที่ไม่แน่นอนต่อไปนี้:
Version("
เมื่อคุณรัน incremental update
สิ่งเหล่านี้จะได้รับการอัปเดตเป็นเวอร์ชันจริง (สมมติว่าเวอร์ชันสุดท้ายเป้าหมายคือ 17.1.0):
Version("
เมื่อสร้างเวอร์ชันสุดท้ายแล้ว จะกลายเป็น:
Version("