Versionshantering och metadata
Hantera paketmetadata
Versionshantering och metadata är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Varför metadata är viktigt
Metadata är allt som rör paketet förutom koden: version, beskrivning, licens, författare och länkar. PyPI använder den för att visa projektet, och pip använder den för att lösa beroenden.
God metadata gör paketet tillförlitligt och möjligt att installera.
Semantisk versionshantering
Konventionen är MAJOR.MINOR.PATCH:
- MAJOR bakåtinkompatibla ändringar
- MINOR nya, bakåtkompatibla funktioner
- PATCH bakåtkompatibla buggfixar
Användarna förlitar sig på detta för att veta om en uppgradering är säker.
version = '2.4.1'
major, minor, patch = version.split('.')
print('Major', major, 'Minor', minor, 'Patch', patch)
print('Bug fix -> bump patch to', major + '.' + minor + '.' + str(int(patch) + 1))Välja nästa version
Vilken del som ska höjas avgörs av reglerna: bröt du API:t, lade du till en funktion eller rättade du bara ett fel? När regeln kodifieras blir releaserna konsekventa.
def bump(version, kind):
major, minor, patch = (int(x) for x in version.split('.'))
if kind == 'major':
return str(major + 1) + '.0.0'
if kind == 'minor':
return str(major) + '.' + str(minor + 1) + '.0'
return str(major) + '.' + str(minor) + '.' + str(patch + 1)
print(bump('1.2.3', 'minor'))
print(bump('1.2.3', 'major'))Förhandsversioner och utvecklingsversioner
Python tillåter suffix: 1.0.0a1 (alpha), 1.0.0b2 (beta), 1.0.0rc1 (release candidate) och 1.0.0.dev3. pip betraktar dessa som tidigare än den slutliga 1.0.0, så testare kan välja dem aktivt utan att påverka vanliga användare.
En enda källa till sanningen
Behåll versionen på exakt ett ställe. Antingen deklarerar du den statiskt i pyproject.toml eller markerar den som dynamic och läser den från koden (eller en tagg) med verktyg som setuptools-scm. Två kopior kommer oundvikligen att glida isär.
Beskrivning och README
En kort description visas i sökresultat. Den långa beskrivningen hämtas från din readme (vanligtvis README.md) och visas som projektsidan på PyPI. Hänvisa till den med readme = 'README.md'.
En tydlig README är din bästa marknadsföring.
Licens
Ange en licens så att användarna vet vilka rättigheter de har. Moderna projekt använder ett SPDX-uttryck som license = 'MIT'. Utan licens gäller alla rättigheter förbehållna, vilket avskräcker från användning.
popular = ['MIT', 'Apache-2.0', 'BSD-3-Clause', 'GPL-3.0-only']
for lic in popular:
print('SPDX:', lic)Klassificerare
classifiers är standardiserade taggar från PyPI:s lista, till exempel 'Programming Language :: Python :: 3.11' eller 'Development Status :: 4 - Beta'. De används för PyPI:s filter och signalerar mognadsgrad och vilka versioner som stöds.
Projektadresser
Under [project.urls] lägger du till länkar som Startsida, Dokumentation, Källkod och Ändringslogg. De visas i ett sidofält på PyPI och hjälper användarna att hitta ditt kodförråd och din dokumentation.
urls = {
'Homepage': 'https://example.com',
'Source': 'https://github.com/me/mytool',
'Issues': 'https://github.com/me/mytool/issues',
}
for label, link in urls.items():
print(label.ljust(10), link)Nyckelord för sökbarhet
Fältet keywords är en lista med korta termer som hjälper användare att hitta paketet i sökningar. Välj ord som människor faktiskt skulle skriva, till exempel ['cli', 'automation', 'excel'], i stället för generiskt utfyllnadsmaterial.
Tillsammans med klassificerare förbättrar nyckelord hur lätt projektet går att hitta.
En ändringslogg
Underhåll en CHANGELOG som dokumenterar vad som ändrades i varje version. Användarna läser den före en uppgradering för att få information om nya funktioner och bakåtinkompatibla ändringar. Om du länkar till den under [project.urls] finns den ett klick bort från PyPI-sidan.
En bra ändringslogg förvandlar ett versionsnummer till en berättelse som användarna kan följa.
Snabbtest
Testa dina kunskaper om versionshantering.
Sammanfattning
Du hanterade paketmetadata:
- Semantisk versionshantering MAJOR.MINOR.PATCH samt suffix för förhandsversioner
- Behåll versionen i en enda sanningskälla
- Ange
description, en lång beskrivning i README och enlicense - Lägg till
classifiersoch[project.urls]så att PyPI visar upp projektet på ett bra sätt
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Versionshantering och metadata” gratis?
Ja – hela texten till ”Versionshantering och metadata” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Versionshantering och metadata”?
Hantera paketmetadata Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Versionshantering och metadata”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Projektstruktur och pyproject.toml
- Bygga med build
- Versionshantering och metadata
- Publicera med twine