Dependency management Link to heading

uv Link to heading

# create a project
uv init 

# add dependency
uv add boto3
uv add "boto3>=@2.38.1"  # in specific version
uv add pytest --dev  # as developer dependency, short for: 'uv add --group dev pytest'

# install dependencies
uv sync  # includes dev group

poetry Link to heading

# add dependency
poetry add boto3
poetry add boto3@2.38.1  # in specific version
poetry add moto[dynamodb] --group dev  # as developer dependency

# update dependency
poetry update aiohttp
poetry update aiohttp --dry-run
# update (transitive) dependency to newest version and write lock file
poetry update aiohttp --lock

# remove dependency
poetry remove checkov --group dev

pyenv Link to heading

pyenv virtualenvs  # list all virtual environments
pyenv virtualenv <python version> <environment name> # e.g. pyenv virtualenv 3.12 my-venv
pyenv activate <env_name>  # activate environment
pyenv virtualenv-delete <env_name>  # delete environment

Linter / Formatter Link to heading

ruff Link to heading

pylint Link to heading

black Link to heading

Logging Link to heading

Testing Link to heading

pytest Link to heading

# executing specific test in a specific folder
pytest ./path/to/folder -k 'name_of_test'

# with coverage (depends on pytest-cov)
pytest --cov=. --cov-report=xml:coverage.xml

# combining multiple coverage files 
COVERAGE_FILE=.coverage.file1 pytest --cov=. --cov-append path/to/test_folder_1 && \
COVERAGE_FILE=.coverage.file2 pytest --cov=. --cov-append path/to/test_folder_2 && \
coverage combine && \
coverage xml -o coverage.xml