Automatiškai aktyvuok Python venv terminale

pi; n # ~/.zshrc autoactivate_venv() { if [[ -d ".venv" && -f ".venv/bin/activate" ]]; then source .venv/bin/activate elif [[ -d "venv" && -f "venv/bin/activate" ]]; then source venv/bin/activate elif [[ -n "$VIRTUAL_ENV" ]]; then parentdir="$(dirname "$VIRTUAL_ENV")" if [[ "$PWD" != "$parentdir"* ]]; then deactivate fi fi } autoload -U add-zsh-hook add-zsh-hook chpwd autoactivate_venv autoactivate_venv Labas! Šiame gide išmoksime automatiškai aktyvuoti virtualią Python aplinką vos tik įžengus į direktoriją. Visa tai padaryti labai paprasta pasinaudojus kabliais (angl. hooks), kurie aptinka direktorijos pasikeitimo įvykį, tačiau atrodys ir veiks kiek skirtingai priklausomai nuo to, kokią kriauklę (angl. shell) naudojame savo terminalui. Aš naudoju zsh, todėl pirmiausia apžvelgsiu tai. ...

pn, liep. 10, 2026 · 4 min. · Ąžuolas Krušna

Atsinaujink pre-commit priklausomybes paprastai

pi; n pre-commit autoupdate arba prek auto-update .pre-commit-config.yaml faile esantys kabliai (angl. hooks) gali lengvai pasenti, tad kaipgi juos paprastai atsinaujinti? Labai paprastai, tiesiog šia komanda: pre-commit autoupdate Jeigu naudoji prek: prek auto-update Vienintelis skirtumas toks, kad prek naudoja auto-update, o ne autoupdate. Tarkime, kad turime tokius kablius su savo versijomis (rev) pre-commit konfigūracijos faile: repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.11.0 hooks: - id: ruff args: [--fix] - id: ruff-format - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.3.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.10.0 hooks: - id: mypy additional_dependencies: ["types-tqdm"] Paleidus atsinaujinimą matysime kažką panašaus: ...

pr, birž. 29, 2026 · 2 min. · Ąžuolas Krušna

Publikuok Python paketą į PyPI su uv

Labas! Šiandien sužinosime kaip nuo nulio susikurti ir publikuoti Python paketą į PyPI su uv programa. uv yra labai greita, todėl programavimas su ja dar smagesnis! Įsidiegiame uv Jeigu dar neturi uv, įsidiek jį terminale: # macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" Įsitikink, kad veikia: uv --version Sukuriame naują biblioteką uv turi patogią komandą projektui inicijuoti. Naudosime --lib vėliavėlę, kuri sukuria biblioteką (angl. library) — paketą, skirtą naudoti kituose projektuose. ...

pr, kov. 9, 2026 · 4 min. · Ąžuolas Krušna

Draugiškos Python klasės

Labas! Šiandien noriu pasidalinti draugiškomis Python klasėmis. Tai tokios klasės, su kuriomis man dirbti smagiausia. Instrumentai, sukurti draugiškai klasei Nulipdyti draugišką klasę naudosimės Duomenų klasėmis (dataclasses) Operatorių aprašymu (operator overloading) Kompozicijos vietoj paveldėjimo principu (composition over inheritance) Taigi, kokios tos draugiškos Python klasės? A. Jas lengva suprasti ir susikalbėti (lengva skaityti ir rašyti) B. Suprantame vienas kitą be žodžių (operatoriais) C. Jos yra lengvai pasiekiamos (kompozicija vietoj paveldimumo) Pažvelkime kaip praktiškai galėtų arodyti šios savybės. ...

an, spal. 29, 2024 · 11 min. · Ąžuolas Krušna