Skip to content

Latest commit

 

History

History
619 lines (342 loc) · 31.3 KB

CHANGELOG.md

File metadata and controls

619 lines (342 loc) · 31.3 KB

CHANGELOG

v0.4.1 (2024-01-14)

Fix

  • fix: remove unnecessary noqa (#54)
  • CI has started to complain about this (2387b18)

v0.4.0 (2023-12-09)

Chore

  • chore: refactor tox requirements (#52)
  • Put the test deps in requirements-test.txt.
  • Put the lint deps in requirements-lint.txt and also include requirements-test.txt in it.
  • Create a new dev-py312 environment which uses an editable install. This will serve as the development environment for VS Code. (d29cb8f)

Documentation

  • docs: added notes on evolution uptill Nov 2023 (#51)

documented the new CI/CD pipeline (748e2c8)

Feature

  • feat: add commonly used utility fixtures (#53)
  • add a new .utils submodule
  • add create_temp_dir and create_temp_cwd utility fixtures
  • refactor vscode settings
  • make mypy strict (9edf0f4)

Style

  • style(core): apply new ruff format rules (#50)

ruff has acquired a new format rule where even function definitions with a single argument that are split across multiple lines should have a trailing comma after that single argument (ae2c5fc)

v0.3.0 (2023-12-02)

Ci

  • ci: add semantic-pr workflow (#47)

Ensure that the PR title follows semantic commit style otherwise version bumping won't work because it looks at the commit titles to figure out if a bump is required and the category of bump (509ac27)

Feature

  • feat: bump version to include deps (#49)
  • Need a commit using semantic convention to trigger a bump version to pick up the latest change which was to add typing-extension as a dep (9d585d8)

Unknown

  • Bump version to incorporate new deps (#48)

feat: bump version to incorporate new deps

  • typing-extensions was added as a dependency but was not incorporated because the commit didn't have semantic style.
  • we have added a github action to validate that can no longer happen
  • still need to bump the version to include the new dep (6ba5364)
  • Add typing-extensions as dependency (#46)

Used by library to support lower versions of Python (7d2b4a3)

v0.2.4 (2023-11-13)

Fix

  • fix: remove unnecessary fetch-depth config (#45)
  • the only component of CI/CD that needs access to the full commit history is the version bumping logic (sematnic-release)
  • bring the setup-python actions into consistency with each other (16fad96)

v0.2.3 (2023-11-13)

Ci

  • ci: format config (#43)

no functional change just add some whitespace and remove unnecessary name of the checkout step (40e8fe2)

Fix

  • fix: use ruff check and format (#44)

  • ci: add ruff (check & format), remove black

  • ruff check is fantastic
  • ruff format is a drop-in replacement for black (in particular the upcoming preview) the only places where ruff disagrees with black I agree with the former
  • ci: configure ruff
  • select all rules
  • disable the 4 rules globally that conflict with ruff format
  • disable certain rules on a per-file basis
    • assert is allowed in tests
    • we are using print in the unit tests to track execution
  • fix: ruff errors

fix all errors detected by ruff after we turned on nearly all the rules

  • ci: configure vscode to use ruff

helps find and fix ruff errors (c1b1526)

v0.2.2 (2023-11-12)

Fix

  • fix: semantic-release committer name (#42)

the switch to the upstream semantic-release action meant that the committer name changed from semantic-release to github-actions

we explicitly configure the action to use the former name since that is what is expected by the other publish workflow (480cf2a)

v0.2.1 (2023-11-12)

Documentation

  • docs: update notes (#39)
  • remove discussion of SSH Deploy Keys
  • add discussion of trusted publisher config in PyPI (efd7599)

Fix

  • fix: typo in version workflow (#41)

Typo in the workflow yaml (0f18bbb)

  • fix: use upstream semantic-release action (#40)

  • ci: refactor build command

use the more popular python -m build instead of pyproject-build since they are exactly equivalent

  • fix: switch to upstream semantic-release action

trying once again with the admin PAT and an explicit skip_build option since the primary problem with the upstream action was failure to build but we no longer need to build just to bump and release the new version (75b7cad)

v0.2.0 (2023-11-12)

Feature

  • feat: publish to pypi (#38)
  • rename file from deploy.yml to publish.yml since publication is the more accurate verb when it comes to Python and PyPI
  • add additional config to publish.yml for publising to PyPI if publication to TestPyPI succeeds
  • remove dead code from pyproject.toml (f8a6cea)

v0.1.10 (2023-11-12)

Fix

  • fix: version bump (#37)
  • fix typo in semantic-release config for specifying location of version inside the project
  • Add --skip-build since semantic-release does not need to build the project to bump the version
  • Remove build specific config from semantic-release (5627ed1)

v0.1.9 (2023-11-12)

Fix

  • fix: deploy condition (#36)

there was a typo in the if condition in the test-release job the correct context is github.event (singular) (aa58e98)

v0.1.8 (2023-11-12)

Fix

  • fix: add deploy workflow (#35)
  • refactor old deploy to the version workflow since it was technically all about bumping the version using semantic-release
  • add an actual deploy workflow which currently is publishing only to Test PyPI (2f14668)

v0.1.7 (2023-11-11)

Fix

  • fix: disable cancel in progress (#34)

unfortunately even though cancel-in-progress when a new commit is pushed to a branch while the previous build is running works BUT it sends an automated email which is indicative of a failure while this should technically be considered normal/desired behavior (632b84f)

v0.1.6 (2023-11-11)

Fix

  • fix: revert upstream semantic-release (#33)

The upstream python-semantic-release Github Action is unable to build using pyproject-build (ec7e2c1)

  • fix: switch to using upstream semantic-release action (#32)

rather than install semantic-release and run it by hand we attempt to use the upstream python-semantic-release action (2fabb08)

v0.1.5 (2023-11-11)

Fix

  • fix: use admin pat (#31)
  • Trying out the admin PAT approach where we use a PAT with Admin permissions in place of the auto-generated per-workflow Github Token
  • Document this new PAT approach in the notes
  • Configure the CI check to run on all branch pushes but NOT on tag push (72315db)

v0.1.4 (2023-11-10)

Fix

  • fix: semantic-release CLI args (#30)

fix typo in the CLI args passed to semantic-release the new args are specific to the 'version' subcommand (829ddb0)

  • fix: split semantic release into two (#29)

attempting to commit and push in one step (using the Deploy key) and creating the Github release in another step (using the Github Token) (d7f2974)

  • fix: gh-token in semantic-release (#28)

the per-workflow github-token is not available by default as an env var specify it explicitly using the env config section since we are going to be specifying it any way might as well make it available as GH_TOKEN, the default env var expected by semantic release (f1cfdab)

v0.1.3 (2023-11-07)

Fix

  • fix: specify github token env var (#27)

GH Action makes the per-workflow GITHUB_TOKEN available as an env var while by default semantic-release looks for GH_TOKEN since we will be using the GITHUB_TOKEN to create a new release we add write contents permission to the token (f04af65)

v0.1.2 (2023-11-07)

Ci

  • ci: increase semantic-release verbosity (#25)

the creation of github release is failing while the new commit is being correctly pushed up increase semantic-release verbosity to figure out what is broken (a203260)

Fix

  • fix: add debug step after semantic-release (#26)

curious to see if a step will run after the previous one fails (bd37aba)

v0.1.1 (2023-11-07)

Fix

  • fix: author of deploy commit for skipping (#24)

semantic-release creates commits with author "semantic-release" which is what we need to use for skipping workflow for the deployed commit (98ed610)

v0.1.0 (2023-11-07)

Ci

  • ci: add preliminary deploy workflow (#8)
  • Add config for semantic-release
  • Use semantic-release to build package and create Github release (4c06108)

Documentation

  • docs: clarify branch protections required for deploy keys

Deploy keys use the "bypass branch protections" permission which needs to be enabled in branch protecton for the key to work (c173c1c)

Feature

  • feat: use deploy ssh key (#21)

the per-workflow Github token is not working because the main branch has branch protections (including for admininstrators) while the github token has the saame permissions as the user who launched the workflow (19757f7)

  • feat: semantic-release version only (#20)

the publish command does not version first and we are going to be uploading the dist differently anyway (ab0ff0a)

  • feat: make semantic-release verbose (#19)

the command passes in CD but doesn't seem to be doing much increase verbosity to investigate (747efee)

  • feat: use default build command (#15)

the specified build commands are not working with python-semantic-release so we are going to try the default build command (359fae3)

  • feat: use semantic-release action (#11)
  • semantic-release comes with its own Github Workflow action which simplifies the setup
  • add explicit build step
  • rename job to release (de87e32)

Fix

  • fix: add comment to deploy key (#23)

it seems Github requires deploy keys to have a comment equal to the SSH url of the repo it belongs to (2a9fa2b)

  • fix: configure git after checkout (#22)

it is not possible to configure git before the code has been checked out (which creates the .git folder) (4125fa4)

  • fix: semantic-release command (#18)

fix typo (60f7559)

  • fix: semantic-release config (#16)

misspelled config key which is being replaced with a better one re-add the build command (removing it removes the build step) (e0bd802)

  • fix: semantic-release build-command (#14)
  • python -m build is not working in CD, possibly because of a "build" folder being created
  • The build package comes with a pyproject-build script that does the same thing so switching to that instead (5172856)
  • fix: install release prereqs (#13)
  • the build package is required by semantic-release to use python -m build (0d5d6b4)
  • fix: semantic-release build command (#12)
  • in CI (Github Action) the interpreter is available as just plain 'python'
  • remove the explicit build step since semantic-release will be doing the building AFTER it has bumped the version (86421d3)
  • fix: semantic-release configuratioon (#10)
  • semantic-release expects the github token to be present in the GH_TOKEN env var
  • Configure the git user and email to belong to Github Actions so that the commit pushed by semantic-release is correctly attributed (8b7e9bb)
  • fix: trigger for deploy workflow (#9)

Since the deploy workflow is completely separate instead of using the if syntax we can specify that the workflow is triggered "on" the "push" event filtered to the "main" branch (b02afc9)

Unknown

  • Use semantic-release directly (#17)

instead of by the upstream action which we can't seem to be able to make work (372100b)

  • Add py38 and py39 to tox and CI (#6)
  • Use typing_extensions to pull in back-ported Concatenate and ParamSpec
  • Switch to typing.Tuple and typing.Dict since py38 does not have support for using tuple and dict as types (9a36178)
  • Run docker compose test in ci (#5)
  • Configure Github Actions to build the containers and then run the test container, all inside the example folder.
  • Switch to python3.12 in all the docker images.
  • Switch to explicit python:3.12.0-slim-bookworm base image. Using a non-explicit python:latest image (where the architecture has to be inferred on the platform was breaking in CI) (cd9c1a1)
  • Add tox linting to CI (#4) (78eb1ba)

  • Configure tox Github Action

  • Add mypy to main tox environments since verifying the type annotations is a primary function of this repo. (2d52176)
  • Enable mypy
  • The ParamSpec error in mypy has been resolved so we have re-enabled mypy.
  • Ignore pylint no-member error.
  • Add support for Python 3.12 (222c967)
  • Update example to build and use testing.fixtures (7077d15)

  • Added info on PyPI publication to evolution doc (8d776e7)

  • Add deployment instructions (e0fd659)

v0.0.2 (2023-07-01)

Unknown

  • Rename project (use hyphen) and add home page (github) (127628e)

  • Update pyproject in preparation for pulication (8edbe6c)

  • Add py.typed to testing.fixtures package (ee77885)

  • Fix pylint and black errors (8573ce1)

  • Add tox (to test py310 and py311) and to lint (08a0a75)

  • Refactor to use src/ and add pyproject.toml (dd3b960)

  • Refactor fixtures.py to testing.fixtures (c10a8cf)

  • Switch to python3.11 (50cda61)

  • Switch to netcat-traditional to install nc (4d0b134)

  • Move integration test example into separate folder

  • Preparing to publish this package. The package will have its own pyproject.toml and src/ folder so we wish to avoid confusion with the same structure for the example. (903ca8a)
  • Add link to evolution doc in README (a5bc7f1)

  • Add doc tracking evolution of project (7a9af05)

  • Considerable overhaul of the documentation (38eaebd)

  • Add unit tests to the test container command (4effbf3)

  • Refactor integration tests to use new fixtures

  • Remove old implementation of tunable-fixtures.
  • Refactor commong utilities into a separate utils module. (fa41673)
  • Move fixture module to top-level while allowing import from the tests (5e151d7)

  • Add compose_noinject function (42691be)

  • Add noinject function for wrapping fixtures so that no injection occurs (230b6cd)

  • Add vscode config (5c596fe)

  • Catch error caused by unordered fixtures and reset entries count (for later use) before re-raising error (9e4b84e)

  • Add examples (marked as xfail) of using fixtures in the incorrect order) (10843e0)

  • Add test where fixture is used both at test and via composition and state is applied at composition (c8aede5)

  • Refactor (kw)args resetting in fixture

  • Reset immediately after the (kw)args have been closed over (in a closure) since at that point the values have been cached at the correct location. (e41d90a)
  • Heavy refactor of Fixture
  • Remove definition args and kwargs from Fixture initialization.
  • Create .set() (and .reset()) methods to allow injecting definition args and kwargs into the fixture at any stage. Closures have been used to cache these arguments at both the test wrapper and the closure wrapper to ensure that state is consistent across a test run. (f1081c2)
  • Comment out fixture_g in preparation for a fixture refactor (4ba0b6c)

  • Make the Fixture class generic over ParamSpec D (clearer indication of intent) (c949238)

  • Use PEP-380 to yield from the underlying generator (428f394)

  • Rename definitions to fixture_factory (2470eb7)

  • Make Fixture a reentrant and reusable context manager (76e7486)

  • Add fixture_f and test which exposes the need for a reentrant fixture (804e91a)

  • Refactor Fixture implementation to match contextlib._GeneratorContextManager which necessitate using an alias for Generator instead of Iterator (7f531b3)

  • Uncomment fixture_e (mutable state) and its test (d0b29a6)

  • Uncomment fixture_d and its associated tests (d72d113)

  • Define a compose parametrized decorator used to compose fixtures at the definition level (1580b99)

  • Refactor implementation so that fixtures are both decorators and context managers (fb43adf)

  • Comment out fixtures and tests that use fixture composition (53eff36)

  • Revert so that fixtures only apply to functions that return None (tests) (6450e0a)

  • Use wraps to get correct name of decorated fixture definition (3b82fd4)

  • Refactor types and yields for fixtures e and f (e5ff2fb)

  • Refactor types and yielded values up to fixture_d (5a1ab0d)

  • Partial refactor away from strings to TypedDict showing injection cleanly (da149c8)

  • Ignore invalid-name pylint errors (0562c65)

  • Skip the known failing test (5c31315)

  • Add example of double injected fixture that requires a re-entrant context manager (dfa57c1)

  • Add example of multiple fixtures applies to a single test function (4dbbd7f)

  • Add example of fixture that takes injections from both another fixture and the test site (2f4c7e4)

  • Allow fixture to be applied to other fixtures (407b937)

  • Implement tunability of created fixtures (40d9cb4)

  • Add usage of a fixture parametrized from the test function decoration site (a33b826)

  • Add types to the fixture tool (81e1cbf)

  • Initial implementation of fixture creator (untyped) (fb009ec)

  • Add example use case: decorated test, fixture definition (e9f2095)

  • Refactor to inject yielded value as first argument which reduces nesting and allows for appropriate typing (20ae34b)

  • First implementation of a 5 level deep tunable_fixture decorator for fixture generators (4c101da)

  • Add README (8b98b19)

  • Add remaining tests for operations including a missing one (f719d63)

v0.0.1 (2022-10-30)

Unknown

  • Refactor to package the server using hatch (c798a2f)

  • Implement tunable fixture (953cbe3)

  • Comment out uuid and operation fixture we won't be using any more (cb7ca69)

  • Add square and cube operations to processor (766c1f8)

  • Add fixture for injecting operation into DB before running test (5dbfa94)

  • Add logic for identity operations (3fdad50)

  • Allow autocommit to ge configurable (f654a9f)

  • Give tests access to the DB accessor for fixtures (6e580a3)

  • Add postgres DB accessor (78fe36d)

  • Install psycopg (v3) into server and test containers (271ecb8)

  • Modify compose config to inject db password via env var (fac3f92)

  • Add postgres container and initiate operations table (d5dfef2)

  • Add incomplete handler for /compute end-point (parses request payload) (2194661)

  • Add healtcheck (netcat) to server (1cb8b54)

  • Add failing first test for /compute end-point (a60ee5e)

  • Refactor base_url into a fixture (9843c58)

  • Fix pylint and mypy errors (f7f58fe)

  • Add simple test for /test end-point (2d34dac)

  • Implement flask server with just /test end-point (aac3f33)

  • Add docker config for server and test client (2918f99)

  • Initial commit (empty .gitignore) (83b1a7b)