# Changelog

To install the unreleased g version, see [developmental releases](https://g.git-pull.com/quickstart.html#developmental-releases).

[pip](https://pip.pypa.io/en/stable/):

```console
$ pip install --user --upgrade --pre g
```

[pipx](https://pypa.github.io/pipx/docs/):

```console
$ pipx install --suffix=@next g --pip-args '\--pre' --force
// Usage: g@next --help
```

## g 0.0.8 (unreleased)

- _Notes on upcoming releases will be added here_

<!-- Maintainers, insert changes / features for the next release here -->

## g 0.0.7 (2024-12-20)

_Maintenance only, no bug fixes, or new features_

### Breaking changes (#33)

- Drop Python 3.8

  The minimum version of Python in this and future releases is Python 3.9.

  Python 3.8 reached end-of-life status on October 7th, 2024 (see PEP 569).

### Development

- Aggressive automated lint fixes via `ruff` (#32)

  via ruff v0.8.4, all automated lint fixes, including unsafe and previews were applied for Python 3.9:

  ```sh
  ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
  ```

## g 0.0.6 (2024-11-26)

_Maintenance only, no bug fixes, or new features_

### Breaking changes

#### Project and package management: poetry to uv (#30)

[uv] is the new package and project manager for the project, replacing Poetry.

[uv]: https://github.com/astral-sh/uv

#### Build system: poetry to hatchling (#30)

[Build system] moved from [poetry] to [hatchling].

[Build system]: https://packaging.python.org/en/latest/tutorials/packaging-projects/#choosing-a-build-backend
[poetry]: https://github.com/python-poetry/poetry
[hatchling]: https://hatch.pypa.io/latest/

## g 0.0.5 (2024-06-08)

### Fixes

- Fix `g` when running outside of a VCS directory (#24)

### Tests

- Use declarative, typed `NamedTuple`-style for `test_command_line` fixtures
  (#24)

### Development

- poetry: 1.8.1 -> 1.8.2

  See also: https://github.com/python-poetry/poetry/blob/1.8.2/CHANGELOG.md

## g v0.0.4 (2024-03-24)

_Maintenance only, no bug fixes, or new features_

### Development

- Aggressive automated lint fixes via `ruff` (#23)

  via ruff v0.3.4, all automated lint fixes, including unsafe and previews were applied:

  ```sh
  ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
  ```

  Branches were treated with:

  ```sh
  git rebase \
      --strategy-option=theirs \
      --exec 'poetry run ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; poetry run ruff format .; git add src tests; git commit --amend --no-edit' \
      origin/master
  ```

- poetry: 1.7.1 -> 1.8.1

  See also: https://github.com/python-poetry/poetry/blob/1.8.1/CHANGELOG.md

- ruff 0.2.2 -> 0.3.0 (#22)

  Related formattings. Update CI to use `ruff check .` instead of `ruff .`.

  See also: https://github.com/astral-sh/ruff/blob/v0.3.0/CHANGELOG.md

- Strengthen linting (#21)

  - Add flake8-commas (COM)

    - https://docs.astral.sh/ruff/rules/#flake8-commas-com
    - https://pypi.org/project/flake8-commas/

  - Add flake8-builtins (A)

    - https://docs.astral.sh/ruff/rules/#flake8-builtins-a
    - https://pypi.org/project/flake8-builtins/

  - Add flake8-errmsg (EM)

    - https://docs.astral.sh/ruff/rules/#flake8-errmsg-em
    - https://pypi.org/project/flake8-errmsg/

## g v0.0.3 (2023-12-09)

- _Add your latest changes from PRs here_

### Packaging

- Move pytest configuration to `pyproject.toml` (#14)
- Poetry 1.4.0 -> 1.7.0

  See also: https://github.com/python-poetry/poetry/blob/1.7.0/CHANGELOG.md

- Packaging (poetry): Fix development dependencies

  Per [Poetry's docs on managing dependencies] and `poetry check`, we had it wrong: Instead of using extras, we should create these:

  ```toml
  [tool.poetry.group.group-name.dependencies]
  dev-dependency = "1.0.0"
  ```

  Which we now do.

  [Poetry's docs on managing dependencies]: https://python-poetry.org/docs/master/managing-dependencies/

### Internal improvements

- Move formatting, import sorting, and linting to [ruff].

  This rust-based checker has dramatically improved performance. Linting and
  formatting can be done almost instantly.

  This change replaces isort, flake8 and flake8 plugins.

  - Add additional ruff linters in #11
  - Move from black to [`ruff format`] (#17)

    This retains the same formatting style of `black` while eliminating a
    dev dependency by using our existing rust-based `ruff` linter.

    [`ruff format`]: https://docs.astral.sh/ruff/formatter/

- CI: Update action packages to fix warnings

  - [dorny/paths-filter]: 2.7.0 -> 2.11.1

    [dorny/paths-filter]: https://github.com/dorny/paths-filter

- CI: Move CodeQL from advanced configuration file to GitHub's default

[ruff]: https://ruff.rs

### Infrastructure

- CI speedups (#8)

  - Split out release to separate job so the PyPI Upload docker image isn't pulled on normal runs
  - Clean up CodeQL

- ci: Add pydocstyle rule to ruff (#18)
- Poetry: Bump 1.1.x to 1.2.x

### Packaging

- Remove `.tmuxp-before-script.sh` (was used in `tmuxp.yaml`'s `before_script`)
- Drop Python 3.7 (#13)

### Documentation

- Add docstrings to functions, methods, classes, and packages (#18)

### Bug fixes

- Prevent outputting `<Popen: returncode: 1 args: ['git']>` when running `g`
  (#19)

## g v0.0.2 (2022-09-11)

**Maintenance only release, no bug fixes or features**

### Development

- Move to `src/` layout (#7)
- Add [flake8-bugbear](https://github.com/PyCQA/flake8-bugbear) (#4)
- Add [flake8-comprehensions](https://github.com/adamchainz/flake8-comprehensions) (#5)

### Documentation

- Render changelog in [`linkify_issues`] (#6)
- Fix Table of contents rendering with sphinx autodoc with [`sphinx_toctree_autodoc_fix`] (#6)

[`linkify_issues`]: https://gp-libs.git-pull.com/linkify_issues/
[`sphinx_toctree_autodoc_fix`]: https://gp-libs.git-pull.com/sphinx_toctree_autodoc_fix/

## g v0.0.1 (2022-08-17)

### Tests

Tests now pass

### Development

Infrastructure updates for static type checking and doctest examples.

- Update development packages (black, isort)
- Add .tool-versions, .python-version
- Run code through black w/o `--skip-string-normalization`

- Initial [doctests] support added, via #2

  [doctests]: https://docs.python.org/3/library/doctest.html

- Initial [mypy] validation, via #2, including `--strict` typings

  [mypy]: https://github.com/python/mypy

- CI (tests, docs): Improve caching of python dependencies via
  `action/setup-python`'s v3/4's new poetry caching, via #2

- CI (docs): Skip if no `PUBLISH` condition triggered, via #2

## g 0.0.0 (2022-02-26)

### Documentation

- sphinx, furo theme, sphinx-autobuild

### Development

- Setup CI, codecov, cloudfront, s3

<!---
.. vim: set filetype=markdown:
-->
