Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plibonigi la instalado kaj prizorgeblo de devigaj programopartoj #346

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

CourteousCoder
Copy link
Contributor

@CourteousCoder CourteousCoder commented Nov 13, 2024

Priskribo de la Ŝanĝoj

  • Kreas pyproject.toml, la aktualan rekomendatan manifestan dosieron por pitonaj projektoj, laŭ PEP-518 kaj PEP-621. Legu plu pri pyproject.toml. Uzi tion estas ĝenerale preferata inter pitonaj programistoj en la komunumo. Almenaŭ aktuale.
  • Integri la ilon uv (kaj ĝian par-anon uvx) por administri la projekton kaj konsekvence pakaĵojn en pyproject.toml

*Rimarketo: La uvx estas konvenka sinonimo por uv tool run, komapreble al la npx komandon de npm por ĴavaSkripto

Kunsideroj por decidoj elektitaj

El la amaso da pitonaj pakaĵiloj kiuj ekzistas, mi celis ke la solvo:

  • Havas simplan API kajaŭ CLI por alkutimiĝi
  • Sekvas la popularajn PEP-ojn por pyproject.toml ol la aliaj
  • Ne multe devigas, ke ni ŝanĝu la disponigadon
  • Estas populara, ne-rompiĝema, kaj aktive subtenata
  • Unuigas la instaladon trans malsamaj Linuksaj operaciumoj, do ĝi povus esti aŭtomatiĝa
  • Simplas por integri kaj malintegri (se ni estontece eble decidus ŝanĝi ĝin denove)
  • Havas bon-kvalitan dokumentadon

Elektoj apartene por pitono

  • pipenv
  • poetry
  • pdm
  • hatch
  • uv

Elektoj kiuj pli ĝeneralas

  • docker entute
  • guix
  • nix flake
  • devenv
  • devbox
  • flox

Finfine mi decidis ke uv plej taŭgas kiel ekvilibrigo de la kunsederoj. La dokumentadon haveblas tie ĉi..

Programada detaloj

  • La venv nun defaŭlte nomiĝas .venv
  • La instalado estis iom pli aŭtomata nun (vidu ./instalilo.sh)
  • La pre-commit ilo eksportas la liston de devigaj program-partoj reen al requirements*.txt por, ke ĝi (espereble) ne malhelpos la aktualajn CI kaj disponigon.
  • Ĝi ne plu dependas de la sistema pitono, do oni ne devas instali ĝin per apt. Verŝajne ankaŭ tio veras de dnf por Fedora.
  • Kelkaj sistemaj pakaĵoj ĝisdatigis siajn nomojn ekde Ubuntu 16.10 kaj Debian Stretch do la README.md nun montras la novajn.
  • Kelkaj programoj elŝutita de PIP ne plu bezonas esti en via sistema aŭ hejma pitono pro la komandoj uv run (projekta medio) kaj uvx (apartigita medio)

Testado

  • Mi instalis ĝin nur de Pop OS 22.04. Tio ĉi bazas de Ubuntu 22.04 sed mi ne provis ĝin per aliaj operaciumoj. Mi tute testis per dnf
  • Mi testis ĝin per apt kaj ankaŭĉ per nixpkgs en malpura ŝelo.
  1. La ĝusta versio de pitono sukcese uzatas ĉiufoje
  2. La venv estas sukcese kreebla ĉiufoje
  3. La pitonaj pakaĵoj estas sukcese instalataj ene de la venv ĉiufoje
  4. Migratoj sukcese kuras kiel mi atendis.
  5. La servilo sukcese ŝaltas sen eraroj
  6. La loka retejo ĉe localhost aspektas bela kaj funkcias kiel mi atendis KROM la mapo
  7. La testoj sukcesas KROM por la mapoj. Mi supozas ke ĝi estas pro manko de API ŝlosilo por mia loka medio.
    `from http://api.opencagedata.com/geocode/v1/json: ERROR - 401 Client Error: Unauthorized

Estas malfrua nokte en Kalfornio en Usono nun, do mi enlitiĝos tuj. Pardonon, se mi mistajpis iomete en tiu ĉi PR.

Dankon! Kaj mi esperas ke tiu ĉi PR estas bona por nia projekto

Ligataj taskoj

Resolve #240 (la ĉefa celo)
Resolve #151 (nu, ne tute. nur ĉar mi klarigis tiujn ŝanĝojn en la README.md)

Copy link

codecov bot commented Nov 13, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 80.85%. Comparing base (b7298ea) to head (4131f49).

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #346      +/-   ##
==========================================
+ Coverage   80.82%   80.85%   +0.03%     
==========================================
  Files          90       90              
  Lines        6606     6606              
  Branches      829      829              
==========================================
+ Hits         5339     5341       +2     
+ Misses       1193     1192       -1     
+ Partials       74       73       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@interDist interDist force-pushed the issue-240-ek-uzi-pakajxilon-pitonan branch from de0c253 to 4131f49 Compare January 22, 2025 06:10
Copy link
Collaborator

@interDist interDist left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Denove dankon por via zorga esploro kaj la detala priskribo de la konkludoj. Mi finfine havis tempon por dediĉi al tiu ĉi TP la atenton kiun ĝi meritas kaj senperturbe tralegi la proponitajn ŝanĝojn.
Sonas al mi bona la elekto de uv eĉ se ekzistas iom da kritiko kontraŭ ĝi (ĉar estas verkita en Rust). Plirapidigo estas ja signifa.

Unue ĝenerala rimarkigo: en la kodo mem ni uzas la anglan – do nomoj de funkcioj, komentoj, kaj dosiernomoj estas ĉiuj anglalingve.

Rilate uv ĝenerale: mi legis ĉe https://www.loopwerk.io/articles/2024/python-uv-revisited/ ke preferindas difini default-groups = [] kaj por ĉiu komando indiki eksplicite la deziratan grupon. Kion vi opinias pri tio?

Rilate la instalilon: mi ne tre ŝatas ke la versio de uv estas kaŝita ie meze de la skripto. Estus pli bone se ĝi aperus en, ekzemple, .uv-version kaj la skripto legu ĝin el tie. Sed mi ankaŭ vidis ke indiki la version ne estas devige. Eble la ekzakta versio ne tiom gravas? (Cetere la plej aktuala estas jam 0.5.22)

Rilate la enmetajn hokojn:

  1. Estus pli bone se la dosieroj ĉe requirements/ estu aktualigataj nur se vere okazis ŝanĝo en la bezonataj pakaĵoj. Sed mi ne scias ĉu entute eblas detekti tion.
  2. Mi rimarkis ke la eksporta komando perdas la specifaĵojn de la pakaĵoj. Ekzemple, estas difinita dependeco je django-anymail[postmark] sed en la rezulta prod.txt la specifigo de postmark mankas. Tio estas iom zorgiga.

Mi dankas vin pro via laboro!

# Por daŭrigi, ke nia aktuala disponiga sistemon ankoraŭ povas legi de requirements.txt
# TODO:FAROTE Decidi ĉu ŝanĝindas tio.
- id: export-requirements-base
name: export-requirements-base
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

name: export requirements (base)

verbose: false

- id: export-requirements-dev
name: export-requirements-dev
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

name: export requirements (dev)

name: export-requirements-base
require_serial: true
language: system
entry: uv export --locked --no-dev -o requirements/base.txt
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bv. aldonu --quiet

name: export-requirements-dev
require_serial: true
language: system
entry: bash -c '( echo "-r base.txt"; uv export --only-dev --locked ) > requirements/dev.txt'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bv. aldonu --quiet


Se vi vidas `eo.utf8` en la listo, la ĝusta lokaĵaro estas nun aktiva.

### uv: ``VIRTUAL_ENV does not match the project environment path `.venv` and will be ignored``
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mi aldonis tiun ĉi sekcion – mi havas jam agorditan kaj funkciantan virtualan medion, kaj aldono de uv al ĝi ne glate paŝis.

Comment on lines +30 to +36
maintainers = [
{ name = "Meir", email = "[email protected]" },
{ name = "Baptiste Darthenay", email = "[email protected]" },
{ name = "Etenil", email = "[email protected]" },
{ name = "Chloe Shetreet", email = "[email protected]" },
{ name = "Salman Mohammadi", email = "[email protected]" },
]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nur mi kaj vi estu listigitaj ĉi tie. Cetere, email ne estas deviga ŝlosilo, povas aperi nur nomo. Vi povas meti mian plenan nomon: Meir Goren.

"uv>=0.5.1",
]

# TODO:FAROTE Konsideri kiel unuigi la agordojn kaj skriptojn de setup.cf, fabfile.py, kaj pyproject.toml ĉi tien.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Plejparto de setup.cfg (krom flake8) povas translokiĝi al pyproject.toml, sed tio estu aparta projekteto. La skripto fabfile.py, aliflanke, estas tute alia besto – ĝi estas uzata de fab kaj estas aro de taskoj por fab. Ĝi devos resti.

Comment on lines +8 to +10
urls.documentation = "https://github.com/tejoesperanto/pasportaservo/blob/master/README.md"
urls.issues = "https://github.com/tejoesperanto/pasportaservo/issues"
urls.source = "https://github.com/tejoesperanto/pasportaservo"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

aldoneblas urls.homepage = "https://www.pasportaservo.org"

Comment on lines +19 to +24
classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mi opinias ke la versio de Python ne tiom gravas, finfine PS ne estas disponigata biblioteko. Trarigardinte https://pypi.org/classifiers ŝajnas al mi ke plej taŭgus:

Framework :: Django
Programming Language :: Python
Development Status :: 5 - Production/Stable
License :: OSI Approved :: GNU Affero General Public License v3
Natural Language :: Esperanto

Comment on lines +12 to +17
keywords = [
"django", "postgresql", "saas", "pasporta", "servo", "esperanto", "tejo", "zamenhof",
"tutmonda", "junulara", "organizo", "lingvo", "interparolo", "internacia", "loĝado", "vojaĝi", "gastigo", "mapo", "retejo",
"passport", "service", "global", "youth", "orginization", "language", "exchange", "international", "lodging", "travel", "hospitality", "map", "website", "online",
# TODO:FAROTE: Ĉu pli da lingvaj tradukoj aldonendas? Ebla nur la denaskaj lingvoj de niaj kontribuantoj, aŭ eble nur la plej vidataj je GitHub.
]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Estas multaj ne-necesaj ŝlosilvortoj laŭ mi. Mi tenus la liston laŭeble baza:

hospitality, accommodation, travel, esperanto, gastigo, vojaĝoj

@interDist
Copy link
Collaborator

interDist commented Jan 23, 2025

Aĥ, ja, mi forgesis ankoraŭ kelkajn etajn aferojn:

  1. forprenu Resolve #151 el la priskribo de la TP, por ke tiu atentindaĵo restu malfermita.
  2. necesas aktualigi la version de psycopg2 al 2.9.10.
  3. mankas la komando uv run ./manage.py compilejsi18n -l eo kiel lasta paŝo de instalado, en ambaŭ instalilo kaj README.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants