Skip to content

Changelog

0.91.0 - 2026-04-03

Changes

Migrate from Material for MkDocs to Zensical (#145, acf22c1, 9074d75)

The documentation for this project was previously built with Material for MkDocs, which depends on MkDocs. MkDocs has suffered from problematic project governance for years. The original author of MkDocs, also the original author of the similarly problematic HTTPX (fastenv#39), is taking the project in a controversial new direction. Material for MkDocs is in maintenance mode and there is a newer alternative called Zensical.

This release includes a migration of the documentation from Material for MkDocs to Zensical. Zensical offers compatibility with MkDocs, and the same mkdocs.yml configuration file can be used if necessary, but the mkdocs.yml will be removed in favor of the new zensical.toml.

Update to Gunicorn 25 (#146, c1bdd79)

This release will update from Gunicorn 23.0.0 to Gunicorn 25.3.0.

Gunicorn now provides a new ASGI worker that supports uvloop and can run FastAPI, Starlette, Quart, and other ASGI apps without the need for Uvicorn. Users can select the new Gunicorn ASGI worker with inboard by setting the environment variable WORKER_CLASS=asgi. The inboard test suite will be updated to include test cases that run the Gunicorn ASGI worker without Uvicorn.

Gunicorn 25 offers compatibility with additional dependencies for improved performance, including uvloop and the HTTP parser gunicorn_h1c. A new inboard[gunicorn-fast] extra will be added for installation of gunicorn_h1c and uvloop with Gunicorn, and will be installed by default now that both Gunicorn and Uvicorn support a common version of uvloop. The uvloop version will align with the version used for testing by Gunicorn.

Commits

  • Bump version from 0.90.0 to 0.91.0 (e91a3d9)
  • Update docs for new Starlette and Uvicorn domains (bc691e6)
  • Update to Gunicorn 25 (#146) (c1bdd79)
  • Remove duplicate changelog (c509cf3)
  • Simplify changelog format (e9f501b)
  • Remove content.action.view from zensical.toml (9074d75)
  • Remove example pyproject.toml from docs (5881d9b)
  • Remove HTTPie suggestions from docs (eebc844)
  • Migrate tests from HTTPX to HTTPXYZ (b30007e)
  • Migrate from Material for MkDocs to Zensical (#145) (acf22c1)
  • Update changelog for version 0.90.0 (#144) (b58cfea)

0.90.0 - 2026-04-03

Changes

Update to FastAPI 0.135 (4d7d918)

This release will update/upgrade to FastAPI 0.135. This is a minor release to align with FastAPI versioning.

FastAPI 0.135 introduces support for server-sent events (SSE) and vibe coding.

Commits

  • Bump version from 0.89.0 to 0.90.0 (edeaf0e)
  • Update to FastAPI 0.135 (4d7d918)
  • Update changelog for version 0.89.0 (#143) (72b925c)

0.89.0 - 2026-04-02

Changes

Update to FastAPI 0.134 and Starlette 1.0.0 (0b1a43c)

This release will update/upgrade to FastAPI 0.134 and Starlette 1.0.0. This is a minor release to align with FastAPI versioning.

Changes to FastAPI between 0.132.1 and 0.134.0 include support for streaming JSON and binary data, addition of a FastAPI agent skill, and an upgrade to Starlette 1.0+ (starlette>=0.46.0).

Changes to Starlette between 0.52.1 and 1.0.0 include a new Session class (starlette.middleware.sessions.Session) with some associated changes to how sessions are tracked and modified in SessionMiddleware, and removal of several decorators (@app.exception_handler(), @app.middleware(), @app.route(), @app.websocket_route()) with suggestions for using parameters to the Starlette app instead.

Now that Starlette is at version 1.0, the version in pyproject.toml will be updated to match the FastAPI Starlette version. The FastAPI Starlette version has no upper bound (starlette>=0.46.0), so there is the possibility of unexpected changes. Now that FastAPI is not updating the minor version of Starlette in patch releases, the FastAPI version will be unpinned and limited to the current minor version.

Commits

  • Bump version from 0.88.0 to 0.89.0 (be3dd53)
  • Update to FastAPI 0.134 and Starlette 1.0.0 (0b1a43c)
  • Fix changelog entry formatting for version 0.88.0 (cd32053)
  • Update changelog for version 0.88.0 (#142) (a86ffe8)

0.88.0 - 2026-03-28

Changes

Update to FastAPI 0.132 (78d137c)

This release will update/upgrade to FastAPI 0.132.

FastAPI 0.130-0.132 are grouped together because they introduce breaking changes to handling of JSON. FastAPI 0.130 and 0.131 update JSON response serialization to use Pydantic instead of starlette.responses.JSONResponse and deprecate the ORJSONResponse and UJSONResponse that were previously used for improved performance. The FastAPI docs now make the following suggestion:

In short, if you want the maximum performance, use a Response Model and don't declare a response_class in the path operation decorator.

This is a BREAKING CHANGE for users of ORJSONResponse and UJSONResponse.

FastAPI 0.132 introduces Content-Type header checks on JSON requests. Requests now must have a valid Content-Type header or they will be rejected. It is possible to disable this behavior on the FastAPI app with strict_content_type=False. This is a BREAKING CHANGE. See the FastAPI docs for more details.

Commits

  • Bump version from 0.87.2 to 0.88.0 (ceed673)
  • Update to FastAPI 0.132 (78d137c)
  • Use GitHub Actions environment without deployment (977ecf5)
  • Update to pipx 1.11 (26b28ba)
  • Fix changelog environment name (646ac6a)
  • Update changelog for version 0.87.2 (#141) (991a5b5)

0.87.2 - 2026-03-15

Changes

Migrate to PEP 735 dependency groups (eccd80b)

Hatch 1.16 introduced support for PEP 735 dependency groups in pyproject.toml. This release will migrate project metadata to dependency groups.

Dependency groups allow development dependencies to be moved out of the [project.optional-dependencies] table and into a separate [dependency-groups] table. This is helpful because optional dependencies are included with package metadata, so previously, groups of dependencies in the [project.optional-dependencies] table (also called "features" or "extras") were all included in the built package and visible in PKG-INFO text files in sdists (source distributions), even if they were only used for development of the project itself. The [dependency-groups] table is not included in built packages, so the package has cleaner metadata when built and distributed to registries like PyPI.

When building packages with hatch build, there is now an undocumented requirement for builder = true in the Hatch environment used to build. Without builder = true, Hatch will error because the environment "is not a builder environment" (pypa/hatch#2113). Hatch 1.16.3 or later is required to use dependency groups in builder environments (pypa/hatch#2152).

Commits

  • Bump version from 0.87.1 to 0.87.2 (4bb4738)
  • Contain workflow permissions (a7060b7)
  • Add [skip ci] to changelog PRs (cf03a2b)
  • Add workflow_dispatch to changelog job (2b1ba3a)
  • Update to peter-evans/create-pull-request@v8 (f39c070)
  • Update to actions/download-artifact@v8 (60afda6)
  • Update to actions/upload-artifact@v7 (cce2f75)
  • Update to actions/cache@v5 (893d04e)
  • Update to actions/setup-python@v6 (7cd8826)
  • Update to actions/checkout@v6 (e5ca757)
  • Migrate to PEP 735 dependency groups (eccd80b)
  • Update changelog for version 0.87.1 (#140) (222dd31)

0.87.1 - 2026-02-28

Changes

Update to Hatch 1.16.5 (cf534e7)

Due to an upstream change to virtualenv, Hatch script commands have started erroring (pypa/hatch#2193):

module 'virtualenv.discovery.builtin' has no attribute 'propose_interpreters'

This release will update from Hatch 1.15.1 to Hatch 1.16.5. As part of this update, the Hatch version constraint will be relaxed to allow patch updates so that fixes like the one in Hatch 1.16.5 can be installed more readily, and the Hatch version checks in the GitHub Actions workflow will be removed because they are no longer necessary.

When building packages with hatch build, there is now an undocumented requirement for builder = true in the Hatch environment used to build. Without builder = true, Hatch will error because the environment "is not a builder environment" (pypa/hatch#2113).

Commits

  • Bump version from 0.87.0 to 0.87.1 (c3e2dcb)
  • Update to Hatch 1.16.5 (cf534e7)
  • Update changelog for version 0.87.0 (#139) (367da1f)

0.87.0 - 2026-02-21

Changes

Update to FastAPI 0.129 and Starlette 0.52 (70548ac)

This release will update/upgrade to FastAPI 0.129 and Starlette 0.52. This is a minor release to align with FastAPI and Starlette versioning.

FastAPI 0.129 drops support for Python 3.9 (already dropped by Starlette and inboard) and drops the "fastapi-slim" package build. FastAPI 0.128.3 also relaxed the Starlette version range from starlette>=0.40.0,<0.51.0 to starlette>=0.40.0,<1.0.0. This could lead to issues because the plan for Starlette 1 is not clear (encode/starlette#51), and breaking changes could be introduced at any point until then. inboard will continue to limit the Starlette version to avoid breaking changes, updating to 0.52 in this release. Changes to Starlette in 0.51 and 0.52 include the ability to access state with dictionary syntax (docs) and add Access-Control-Allow-Private-Network headers with CORSMiddleware.

Commits

  • Bump version from 0.86.0 to 0.87.0 (37cba2a)
  • Update to FastAPI 0.129 and Starlette 0.52 (70548ac)
  • Update changelog for version 0.86.0 (#138) (83c0dae)

0.86.0 - 2026-01-31

Changes

Update to FastAPI 0.128 (683c12a)

This release will update/upgrade to FastAPI 0.128. This is a minor release to align with FastAPI versioning.

FastAPI 0.128 drops Pydantic 1 support. This is a BREAKING CHANGE for Pydantic 1 users. See the FastAPI docs for further information on migrating to Pydantic 2.

Commits

  • Bump version from 0.85.0 to 0.86.0 (9ab54fe)
  • Update to FastAPI 0.128 (683c12a)
  • Update to BasedPyright 1.37 (905d723)
  • Update changelog for version 0.85.0 (#137) (bf8e78f)

0.85.0 - 2026-01-25

Changes

Update to FastAPI 0.127 (65f0e95)

This release will update/upgrade to FastAPI 0.127.

FastAPI 0.126 and 0.127 are being released together here because they both set up the deprecation of Pydantic 1. FastAPI will now raise a FastAPIDeprecationWarning when Pydantic 1 is used. Pydantic 1 support will be dropped in FastAPI 0.128.

Commits

  • Bump version from 0.84.0 to 0.85.0 (ffb1b0f)
  • Update to FastAPI 0.127 (65f0e95)
  • Update Vercel configuration for uv (c8ea689)
  • Update changelog for version 0.84.0 (#136) (33b5172)

0.84.0 - 2026-01-03

Changes

Update to FastAPI 0.125 (b21826a)

This release will update/upgrade to FastAPI 0.125. This is a minor release to align with FastAPI versioning.

FastAPI 0.125 drops Python 3.8 support. This change is a year overdue. Python 3.8 was at end-of-life on 2024-10-07, inboard dropped Python 3.8 support in version 0.71.0 on 2024-10-05, and Starlette dropped Python 3.8 support in version 0.45.0 on 2024-12-29.

Commits

  • Bump version from 0.83.0 to 0.84.0 (026779b)
  • Update to FastAPI 0.125 (b21826a)
  • Update changelog for version 0.83.0 (#135) (0bce217)

0.83.0 - 2025-12-31

Changes

Update to FastAPI 0.124 (ef0c302)

This commit will update/upgrade to FastAPI 0.124. This is a minor release to align with FastAPI versioning.

FastAPI 0.124 adds endpoint metadata to ValidationError tracebacks and provides some type checking fixes.

Commits

  • Bump version from 0.82.0 to 0.83.0 (b8bb436)
  • Update to FastAPI 0.124 (ef0c302)
  • Update changelog for version 0.82.0 (#134) (a0106c5)

0.82.0 - 2025-12-13

Changes

Update to FastAPI 0.123

This release will update/upgrade to FastAPI 0.123. This is a minor release to align with FastAPI versioning.

FastAPI 0.123 implements dependency caching using functools.cached_property. This behavior is undocumented, but the related PR description (fastapi/fastapi#14419) says,

Dependencies are cached based on the function. And also on the scopes, but (now) only when those scopes are used by this dependency or by a sub-dependency: this dependency or a sub-dependency declare scopes or access the SecurityScopes.

Also see the docs on dependency scope.

Commits

  • Bump version from 0.81.0 to 0.82.0 (b66ec24)
  • Update to FastAPI 0.123 (3099002)
  • Update changelog for version 0.81.0 (#133) (31a16b2)

0.81.0 - 2025-12-13

Changes

Update to FastAPI 0.122 (ea826ce)

This release will update/upgrade to FastAPI 0.122. This is a minor release to align with FastAPI versioning.

FastAPI 0.122 updates the behavior of fastapi.security classes. These classes will now return 401 Unauthorized instead of 403 Forbidden. See the HTTP Basic auth docs for general info, and the related how-to if custom status codes are needed for authorization errors.

Note that this may be a breaking change for some projects if application logic or tests were hard-coded to expect a 401 status code. inboard anticipated this situation years ago, so the tests of HTTP Basic auth were written to allow either a 401 or 403 for these errors as seen here.

Commits

  • Bump version from 0.80.0 to 0.81.0 (f416046)
  • Update to FastAPI 0.122 (ea826ce)
  • Update changelog for version 0.80.0 (#132) (893889a)

0.80.0 - 2025-12-13

Changes

Update to Debian 13 "trixie" (#129, 1b6ea66)

inboard began specifying the version of Debian Linux starting in version 0.67. At that time, the latest version was Debian 12 ("bookworm").

The latest version is now Debian 13 ("trixie"). This release will update to trixie.

Commits

  • Bump version from 0.79.0 to 0.80.0 (fb70266)
  • Update to Debian 13 "trixie" (#129) (1b6ea66)
  • Revert "Fix BasedPyright reportUnusedParameter usage" (02dd6d8)
  • Fix BasedPyright reportUnusedParameter usage (c0fd2ac)
  • Update changelog for version 0.79.0 (#130) (2349797)

0.79.0 - 2025-11-23

Changes

Update to FastAPI 0.121.3 and Starlette 0.50 (e7ff057)

This release will update/upgrade to FastAPI 0.121.3 and Starlette 0.50. Although inboard was already on FastAPI 0.121, this is a minor version bump for Starlette that includes a breaking change, so this is a minor release of inboard.

FastAPI 0.121.3 adds support for Starlette 0.50 and provides some other small changes and internal refactors.

Starlette 0.50 drops Python 3.9 support. This is a breaking change for Python 3.9 users. Note that, while Starlette doesn't support Python 3.9, FastAPI still does. This doesn't make much sense because FastAPI depends on Starlette for much of its functionality. FastAPI probably shouldn't be using Starlette with unsupported versions of Python.

Drop Python 3.9 support (#128, 8ca759d)

Python 3.9 is past end-of-life. Starlette 0.50 dropped support for Python 3.9. This release will drop support for Python 3.9.

Add Python 3.13 support (#115, 6daa20b)

This release will add Python 3.13 support to inboard.

  • inboard will now run tests with Python 3.13, in addition to 3.9-3.12
  • inboard will now build and publish its PyPI package using Python 3.13
  • inboard will now include a Python 3.13 classifier in its PyPI package
  • inboard will now ship Docker images running Python 3.13, in addition to 3.9-3.12, and Docker images tagged with latest will now use 3.13

Related projects that have released support for Python 3.13 include:

Related projects that have not released support for Python 3.13 include:

  • Gunicorn (has not released Python 3.13 support, but is testing with Python 3.13 in development)

Gunicorn has still not released Python 3.13 support, and has not done a release of any kind in over a year. Python 3.12 will of course still be supported in case there are issues with Gunicorn on Python 3.13.

Updates to uvloop>0.15.1 and httptools>=0.6.3 were needed for Python 3.13 compatibility.

Commits

  • Bump version from 0.78.0 to 0.79.0 (a2b040a)
  • Add Python 3.13 support (#115) (6daa20b)
  • Drop Python 3.9 support (#128) (8ca759d)
  • Update to FastAPI 0.121.3 and Starlette 0.50 (e7ff057)
  • Update changelog for version 0.78.0 (#127) (3168717)

0.78.0 - 2025-11-08

Changes

Update to FastAPI 0.121 (e9c0b2d)

This release will update/upgrade to FastAPI 0.121. This is a minor release to align with FastAPI versioning.

FastAPI 0.121 updates the behavior of dependencies with yield as explained in the docs. For further background on this topic, see inboard 0.59.0 and inboard 0.66.0.

Commits

  • Bump version from 0.77.0 to 0.78.0 (081d584)
  • Update to FastAPI 0.121 (e9c0b2d)
  • Update to BasedPyright 1.33 (5c27b39)
  • Update changelog for version 0.77.0 (#126) (b896aae)

0.77.0 - 2025-11-08

Changes

Update to FastAPI 0.120 and Starlette 0.49 (ec0d986)

This release will update/upgrade to FastAPI 0.120 and Starlette 0.49. This is a minor release to align with FastAPI and Starlette versioning.

FastAPI 0.120 adds support for Starlette 0.49 and provides some other internal refactors.

Starlette 0.49 fixes a security vulnerability (GHSA-7f5h-v6xp-fcq8).

Commits

  • Bump version from 0.76.0 to 0.77.0 (b314bb2)
  • Update to FastAPI 0.120 and Starlette 0.49 (ec0d986)
  • Update to Ruff 0.14 (4f5a542)
  • Update changelog for version 0.76.0 (#125) (03a297f)

0.76.0 - 2025-11-08

Changes

Update to FastAPI 0.119 (f38a43e)

This release will update/upgrade to FastAPI 0.119. This is a minor release to align with FastAPI versioning.

FastAPI 0.119 adds dual support for Pydantic 1 and 2. Now that Pydantic 2 is supported, FastAPI will be deprecating Pydantic 1. See the docs for suggestions on how to migrate from Pydantic 1 to 2.

Commits

  • Bump version from 0.75.0 to 0.76.0 (8f4e1a9)
  • Update to FastAPI 0.119 (f38a43e)
  • Update to Hatch 1.15.1 (5d60ebb)
  • Update changelog for version 0.75.0 (#124) (8769c6d)

0.75.0 - 2025-10-12

Changes

Update to FastAPI 0.118 and Starlette 0.48 (ef0703b)

This release will update/upgrade to FastAPI 0.118 and Starlette 0.48. This is a minor release to align with FastAPI and Starlette versioning.

Changes to FastAPI between 0.116.1 and 0.118.3 are mostly small fixes.

Starlette 0.48 adds Python 3.14 support.

Notably, Starlette and Uvicorn have been transferred from the Encode org to an individual user's GitHub account. For context, see Kludex/starlette#2997. Docs are now hosted at starlette.dev and uvicorn.dev.

Commits

  • Bump version from 0.74.0 to 0.75.0 (a0848c4)
  • Update to FastAPI 0.118 and Starlette 0.48 (ef0703b)
  • Update changelog for version 0.74.0 (#123) (d8c23fc)

0.74.0 - 2025-10-11

Changes

Switch type checking from mypy to BasedPyright (99b7a45)

This release will switch Python type checking from mypy to BasedPyright. See the docs for comparisons with mypy and Pyright. This is a minor release due to the possibility of affecting type checks and the associated CI workflows.

Pre-existing errors have been fixed if possible. BasedPyright supports baselining, in which existing errors can be written to a file. This allows adoption of the type checker without having to fix all pre-existing errors first. The baseline file will be added to .basedpyright/baseline.json.

The rule reportImplicitOverride will be set to "information" only. The fix for this warning is to use the @typing.override decorator that was introduced in Python 3.12. The typing_extensions package provides this decorator for use with older versions of Python is needed. The problem is that, while the typing docs say "There is no runtime checking of this property," use as a decorator (rather than just a type annotation) means it is required at runtime. Therefore, this project would have to add a runtime dependency on the typing_extensions package, which is not of interest at this time.

In addition to superior type checking results, another motivation for this change is the language server provided by the BasedPyright VSCode/VSCodium extension. Jedi is no longer working well for Python editing features like autocompletion and go to definition, and the Microsoft Pylance/Pyright extension is only available on the proprietary Microsoft extension registry. BasedPyright is another option also available on Open VSX for users of VSCodium. This commit will add an extensions.json file to suggest BasedPyright.

Note that the VSCode settings.json for the user should include "python.languageServer": "None" so that BasedPyright can act as the language server. "None" is currently the default for this setting, but it could change in the future, so it is prudent to explicitly set it to "None". This setting cannot be added at the folder level.

Commits

  • Bump version from 0.73.0 to 0.74.0 (0fbadc8)
  • Update BasedPyright baseline (9225263)
  • Update to pipx==1.8.0 (4676659)
  • Update to Hatch 1.14.2 (bc60ea2)
  • Match Hatch version in GitHub Actions and Docker (5ce5dcb)
  • Switch type checking from mypy to BasedPyright (99b7a45)
  • Format pyproject.toml with Tombi (8145b7d)
  • Update logging dict config type (5c5d3e9)
  • Use same file for contributing docs (860aada)
  • Use same file for README and docs homepage (3c6f2d9)
  • Update launch.json for Python Debugger extension (bc957fe)
  • Use Hatch commands in contributing.md testing docs (0ed9ab5)
  • Update to peter-evans/create-pull-request@v7 (546a7f1)
  • Streamline coverage.py subprocess code measurement (4bcb4d8)
  • Remove CodeQL GitHub Actions workflow (b375633)
  • Format Git tag messages with Prettier (ff85351)
  • Relax Prettier version constraint (83f2753)
  • Format Git commit messages with Prettier (592c8f3)
  • Update .gitignore (d0d5a4f)
  • Use $HATCH_ENV_TYPE_VIRTUAL_PATH consistently (d6768f5)
  • Update to pypa/gh-action-pypi-publish@v1.13.0 (04f54b1)
  • Move Vercel commands to vercel.json (2c28fc0)
  • Add Markdown-specific override to .prettierrc (c4c2f0e)
  • Move .prettierrc to repo root (f35c230)
  • Update Vercel commands in README (bc09556)
  • Add exclude_gitignore mypy setting (77abc33)
  • Remove deprecated show_error_codes mypy setting (85a8e5e)
  • Update changelog for version 0.73.0 (#122) (487e646)

0.73.0 - 2025-07-29

Changes

Update to FastAPI 0.116 and Starlette 0.47 (dc8ae34)

This release will update/upgrade to FastAPI 0.116 and Starlette 0.47. This is a minor release to align with FastAPI and Starlette versioning.

FastAPI 0.116 introduces support for deploying to FastAPI Cloud with the fastapi deploy CLI command.

Starlette 0.47 reintroduces support for an ASGI extension called path send (aka "path-send" or pathsend). It was introduced in Starlette 0.36, then removed in 0.38 because of issues with BaseHTTPMiddleware. Now they're giving it another try.

Commits

  • Bump version from 0.72.4 to 0.73.0 (f28b44f)
  • Update to FastAPI 0.116 and Starlette 0.47 (dc8ae34)
  • Fix changelog in separate GitHub Actions job step (60c0700)
  • Fix changelog generator $ESCAPE_DUNDERS regex (2a6a518)
  • Add missing shellcheck disable=SC2016 (6573cd9)
  • Update changelog for version 0.72.4 (#121) (879782b)

0.72.4 - 2025-06-20

Changes

Update to FastAPI 0.115.13 (8253166)

This release will update/upgrade to FastAPI 0.115.13. inboard was already on FastAPI 0.115, so this is a patch release to align with FastAPI versioning.

FastAPI 0.115.13 includes small updates related to OAuth2 and Pydantic.

Update to mypy==1.16.1 (e221fd4)

This mypy update is mentioned in the release notes because it required an update to a user-facing type annotation.

Mypy 1.16.1 detects a type error, undetected in previous mypy versions, in the on_error argument to AuthenticationMiddleware.__init__() in inboard.app.main_starlette.

inboard/app/main_starlette.py:56:
error: Argument "on_error" to "Middleware" has incompatible type
"Callable[[Request, Exception], JSONResponse]";
expected "Callable[[HTTPConnection, AuthenticationError], Response] | None"  [arg-type]

The on_auth_error callable had the first argument incorrectly type annotated as starlette.requests.Request when it should have been starlette.requests.HTTPConnection. The second argument is annotated in Starlette as starlette.exceptions.AuthenticationError, which inherits from Exception and is merely a pass.

Commits

  • Bump version from 0.72.3 to 0.72.4 (71a998f)
  • Update to FastAPI 0.115.13 (8253166)
  • Update to Ruff 0.12 (a2dda06)
  • Update to mypy==1.16.1 (e221fd4)
  • Update to Hatch 1.14.1 (3b43236)
  • Update changelog for version 0.72.3 (#120) (f801c79)

0.72.3 - 2025-04-06

Changes

Update to FastAPI 0.115.12 (723cf0b)

This release will update/upgrade to FastAPI 0.115.12 and Starlette 0.46. inboard was already on FastAPI 0.115, so this is a patch release to align with FastAPI versioning.

Changes to FastAPI between 0.115.8 and 0.115.12 include Starlette 0.46 support and other small fixes.

Commits

  • Bump version from 0.72.2 to 0.72.3 (00f554b)
  • Update to FastAPI 0.115.12 and Starlette 0.46 (723cf0b)
  • Update to mypy==1.15.0 (3da23e1)
  • Update to Ruff 0.11 (172d077)
  • Update to Hatch 1.14 and Hatchling 1.26.3 (c01230a)
  • Update changelog for version 0.72.2 (#119) (a21a840)

0.72.2 - 2025-02-17

Changes

Update to FastAPI 0.115.8 (744ba25)

This release will update/upgrade to FastAPI 0.115.8. This is a patch release to align with FastAPI versioning.

FastAPI 0.115.8 adds Python 3.13 support and fixes syntax used in OAuth 2.0 password grants.

Commits

  • Bump version from 0.72.1 to 0.72.2 (8dc2e11)
  • Update to FastAPI 0.115.8 (744ba25)
  • Update to Ruff 0.9 (3e573b6)
  • Update to pypa/gh-action-pypi-publish 1.12.4 (a2ef32d)
  • Update changelog for version 0.72.1 (#118) (c33d1b5)

0.72.1 - 2025-01-23

Changes

Update to FastAPI 0.115.7 and Starlette 0.45 (9a278f2)

This release will update/upgrade to FastAPI 0.115.7 and Starlette 0.45. This is a patch release to align with FastAPI versioning.

FastAPI has been repeatedly updating the minor version of Starlette in patch releases of FastAPI (1bde85a). In this case, FastAPI 0.115.7 updated Starlette from 0.41 to 0.45. Changes to Starlette between 0.41 and 0.45 include removal of Python 3.8 support and various small bug fixes and updates.

Commits

  • Bump version from 0.72.0 to 0.72.1 (6577aa6)
  • Update to FastAPI 0.115.7 and Starlette 0.45 (9a278f2)
  • Update changelog for version 0.72.0 (#117) (d210af3)

0.72.0 - 2025-01-10

Changes

Add and test Gunicorn workers (#116, 35d8d86, 319c07b, d4f791a, 8beddab, e8019a2, c52fd63, 749a3eb)

This project supports the Gunicorn web server. The Gunicorn server design includes a primary "arbiter" process that spawns "worker" child processes, each with their own running server. Workers are implemented as Python classes and custom workers can be supplied.

This project also supports the Uvicorn web server. In the past, Uvicorn supplied workers for use with Gunicorn, but the Uvicorn workers were not tested. The uvicorn.workers module was completely omitted from coverage measurement due to use of the coverage.py include setting to specify source files. Efforts were made to test the Uvicorn workers (encode/uvicorn#1834, encode/uvicorn#1995), but the workers were arbitrarily deprecated and moved to someone's personal project (encode/uvicorn#2302), instead of an Encode-managed project as would have been expected (encode/uvicorn#517 (comment)).

Rather than introducing a production dependency on a separate Uvicorn workers package that is not managed by Encode, the Gunicorn workers will be added directly to this project.

This release will add the code from uvicorn.workers to a new module inboard.gunicorn_workers. The code will be preserved as it was prior to deprecation, with a copy of the Uvicorn license and necessary updates for compliance with the code quality settings in this project.

This release will also add tests of 100% of the Gunicorn worker code to a new module tests.test_gunicorn_workers. A test fixture starts a subprocess running Gunicorn with a Uvicorn worker and an ASGI app. The subprocess includes an instance of httpx.Client for HTTP requests to the Uvicorn worker's ASGI app, and saves its output to a temporary file for assertions on stdout/stderr. Tests can send operating system signals to the process. The coverage.py configuration will be updated for subprocess test coverage measurement.

On a related note, an attempt was made to update to the latest version of Uvicorn (Uvicorn 0.34.0), but this change was reverted. Uvicorn updates have been delayed for some time while evaluating the releases. There were some notable (but undocumented) updates to signal handling introduced in Uvicorn 0.29. The updates may result in child processes that do not shut down after the Uvicorn server gracefully shuts down (encode/uvicorn#1600, encode/uvicorn#2281, encode/uvicorn#2289, encode/uvicorn#2317). Furthermore, these signal handling changes haven't been tested with the Gunicorn workers, because Uvicorn doesn't test its workers, as noted in 35d8d86. Now that the Gunicorn workers have been added to inboard directly, the Uvicorn releases can be tested and evaluated more effectively.

After updating from Uvicorn 0.28.1 to Uvicorn >=0.29.0, coverage.py reports that inboard.gunicorn_workers.UvicornWorker.callback_notify and the test ASGI app (tests.test_gunicorn_workers.app) are not being covered, when they actually are covered by the tests. callback_notify runs after the Gunicorn server has started up, and the test ASGI app is obviously used (otherwise the tests couldn't pass). Possibly related to the unexpected change in test coverage, coverage.py generates fewer coverage files with Uvicorn >=0.29.0. This could suggest that some of the subprocesses used in the tests aren't exiting cleanly or aren't being detected by coverage.py.

Until the changes to signal handling and test coverage are understood more clearly, Uvicorn will remain on version 0.28.1.

Update to Gunicorn 23.0.0 (1a2be82)

This release will update/upgrade Gunicorn from 22.0.0 to 23.0.0. There are several breaking changes noted in the Gunicorn changelog. Users are encouraged to review these changes and update usage as needed.

Commits

  • Bump version from 0.71.2 to 0.72.0 (76d69fc)
  • Extend Gunicorn worker test wait times (749a3eb)
  • Update to Gunicorn 23.0.0 (1a2be82)
  • Revert "Update to Uvicorn 0.34.0" (346b12a)
  • Avoid Gunicorn worker test subprocess re-spawning (c52fd63)
  • Rename Gunicorn worker GET request test (e8019a2)
  • Simplify Gunicorn worker boot error test assertion (8beddab)
  • Correct docstring in Gunicorn worker test (d4f791a)
  • Update to Uvicorn 0.34.0 (3cdf61e)
  • Update Uvicorn Gunicorn worker info in docs (319c07b)
  • Add and test Gunicorn workers (#116) (35d8d86)
  • Update changelog for version 0.71.2 (#114) (6cf2d1d)

0.71.2 - 2024-12-21

Changes

Update to pypa/gh-action-pypi-publish 1.12.3 (9d31003)

This release will update pypa/gh-action-pypi-publish from 1.11.0 to 1.12.3.

The action will now pull a pre-built Docker image from GHCR (GitHub Container Registry) instead of building the Docker image at the beginning of each GitHub Actions run (pypa/gh-action-pypi-publish#230, pypa/gh-action-pypi-publish#241, pypa/gh-action-pypi-publish#301).

Update to FastAPI 0.115.6 (c0216a0)

This release will update/upgrade to FastAPI 0.115.6. This is a patch release to align with FastAPI versioning.

FastAPI 0.115.6 makes a small change to exception handling in dependencies with yield when they are regular synchronous functions (as opposed to async). These synchronous dependencies will now preserve exception tracebacks.

Update Markdown formatting for Prettier 3.4 (8907eae, dd5abd6)

This release will update formatting of Markdown documents for Prettier 3.4. The update removes extra spaces after unordered list line prefixes. The large diff in Markdown files in this release is from reformatting unordered lists from - to -.

Note that Prettier 3.4 exhibits problematic behavior when formatting admonitions that are nested within unordered lists (prettier/prettier#16929 (comment)). Prettier ignore comments (<!-- prettier-ignore -->) have been added where necessary to prevent this problematic behavior.

Commits

  • Bump version from 0.71.1 to 0.71.2 (c97bd7e)
  • Update to pypa/gh-action-pypi-publish 1.12.3 (9d31003)
  • Update to FastAPI 0.115.6 (c0216a0)
  • Format Markdown admonition lists for Prettier 3.4 (dd5abd6)
  • Update Markdown formatting for Prettier 3.4 (8907eae)
  • Fix style of Markdown admonition directives (779b1f4)
  • Update changelog for version 0.71.1 (#113) (2aca413)

0.71.1 - 2024-11-13

Changes

Update to pypa/gh-action-pypi-publish 1.11 (eaa41e3)

After this update, PEP 740 attestations will be added automatically when publishing packages to PyPI. This release will also switch to referencing the action by the exact commit ID (Git SHA) for stability and security.

For background on the updated OIDC Trusted Publishing workflow, see br3ndonland/inboard@59ec546, br3ndonland/inboard@08044c6, pypa/gh-action-pypi-publish@v1.11.0, and the PyPI docs.

Update to FastAPI 0.115.5 and Starlette 0.41 (1bde85a)

This release will update/upgrade to FastAPI 0.115.5 and Starlette 0.41. inboard was already on FastAPI 0.115, so this is a patch release to align with FastAPI versioning.

FastAPI 0.115.3 updated Starlette to "starlette>=0.40.0,<0.42.0". Changes to Starlette between 0.39 and 0.41 include a fix for a DoS (Denial of Service) security vulnerability released in Starlette 0.40.0 (GHSA-f96h-pmfr-66vw).

FastAPI has been repeatedly updating the minor version of Starlette in patch releases of FastAPI. Previously, inboard pinned FastAPI to the minor version (like "fastapi>=0.115,<0.116"), allowing patch version updates whenever the inboard project was installed. Unfortunately, it can result in version incompatibilities when FastAPI updates the Starlette minor version unexpectedly like this. For example, the inboard pyproject.toml previously specified "fastapi>=0.115,<0.116" and "starlette>=0.37.2,<0.39.0". With the release of FastAPI 0.115.3, those two version specifiers are incompatible.

It would be simpler if FastAPI released a minor version each time it updated the minor version of Starlette. As a stopgap, this release will pin the FastAPI version exactly ("fastapi==0.115.5") so the versions of FastAPI and Starlette do not become unexpectedly incompatible. This of course means inboard will need to provide updates to FastAPI more frequently (for patch releases instead of for minor releases). As usual, the lack of attention to release practices in the open source community means more maintenance work for the inboard maintainer.

Commits

  • Bump version from 0.71.0 to 0.71.1 (1a123f7)
  • Align Prettier versions (461ca62)
  • Update to pypa/gh-action-pypi-publish 1.11 (eaa41e3)
  • Update to Hatch 1.13.0 and Hatchling 1.26 (d846eba)
  • Update to Ruff 0.7 (317e7f9)
  • Update to mypy==1.13.0 (49181da)
  • Update to FastAPI 0.115.5 and Starlette 0.41 (1bde85a)
  • Update changelog for version 0.71.0 (#112) (351f19c)

0.71.0 - 2024-10-05

Changes

Update to FastAPI 0.115 (ee33487)

This release will update/upgrade from FastAPI 0.112 to FastAPI 0.115. FastAPI 0.113, 0.114, and 0.115 are included in the same inboard release because the updates in each release are all similar.

FastAPI 0.113-0.115 enable cookies, form fields, headers, and query parameters to be declared with Pydantic models. Query parameters, for example, have been supported for many versions now, but application developers usually had to encode them as "kwargs" (keyword arguments) in every API endpoint function, resulting in code duplication and the need for custom logic. Now that query parameter models are supported, models can be declared once and reused multiple times.

There are still gaps here - although FastAPI now supports reusing query parameters, it does not provide features for helping API endpoint functions work with those query parameters. Query parameters are often used to set up filter and sort clauses for relational databases. The construction of SELECT statements from these query parameters is still left up to application developers. The related package SQLModel, while it does combine Pydantic and SQLAlchemy models, does not provide features for SELECT statement construction at this time either. Other third-party packages like fastapi-filters may be helpful.

Drop Python 3.8 support (df6885d, 7ac105f)

Python 3.8 is at end-of-life. This release will drop support for Python 3.8. This could be a breaking change for users still running 3.8, so those users should consider updating to 3.9 or above.

Commits

  • Bump version from 0.70.0 to 0.71.0 (3cb5b60)
  • Upgrade syntax after dropping Python 3.8 (7ac105f)
  • Update to FastAPI 0.115 (ee33487)
  • Drop Python 3.8 support (df6885d)
  • Update to Ruff 0.6 (af5bae1)
  • Update to mypy==1.11.2 (99bac5a)
  • Update to pipx==1.7.1 (f74e09b)
  • Update changelog for version 0.70.0 (#111) (97d2d04)

0.70.0 - 2024-08-26

Changes

Update to FastAPI 0.112 and Starlette 0.38 (b4cf65d)

This release will update/upgrade to FastAPI 0.112 and Starlette 0.38. This is a minor release to align with FastAPI and Starlette versioning.

FastAPI 0.112 moves dependencies for the FastAPI CLI introduced in 0.111 to an optional extra, fastapi[standard]. Although the FastAPI release notes consider this a breaking change, the FastAPI CLI was not used by inboard, so FastAPI 0.112 will likely not be breaking for inboard users.

Starlette 0.38 makes various small changes, including removal of support for an ASGI extension called path send (aka "path-send" or pathsend) that was introduced in Starlette 0.36. Support was removed because of issues with BaseHTTPMiddleware, though note that BaseHTTPMiddleware may eventually be deprecated (encode/starlette#2160, encode/starlette#2654). The Starlette release notes do not list this as a breaking change, but it could be breaking for users who have started working with path send. Note that FastAPI updated the Starlette minor version to allow 0.38 in the 0.112.1 patch release.

Use dedicated GitHub Actions job for PyPI (08044c6, 180d353)

This project uses pypa/gh-action-pypi-publish to publish Python packages to PyPI with an OIDC trusted publisher (59ec546).

pypa/gh-action-pypi-publish is set up as a Docker action referencing its Dockerfile. The downside to using the Dockerfile for the action is that the Docker image must be built every time the action is used. This will hopefully change in the near future if Docker images are built and pushed to a registry (pypa/gh-action-pypi-publish#230). In the meantime, PyPI steps steps will be moved to a dedicated GitHub Actions job so that the Docker image is not built every time GitHub Actions jobs run.

Commits

  • Bump version from 0.69.0 to 0.70.0 (01835ec)
  • Update to FastAPI 0.112 and Starlette 0.38 (b4cf65d)
  • Don't hard-code repo name in GitHub Actions jobs (180d353)
  • Use dedicated GitHub Actions job for PyPI (08044c6)
  • Update to hatch==1.12.0 (f950d28)
  • Update to pipx==1.6.0 (8066be3)
  • Update to mypy==1.10.1 (08ba81a)
  • Update to Ruff 0.5 (101fdb3)
  • Update to Prettier 3 (67ee89d)
  • Add --platform to Docker CLI examples in docs (dd3a53c)
  • Fix Docker FromAsCasing warning (49914dd)
  • Update changelog for version 0.69.0 (#110) (294e8c8)

0.69.0 - 2024-07-14

Changes

This release will update/upgrade to FastAPI 0.111. This is a minor release to align with FastAPI versioning.

FastAPI 0.111.0 adds a fastapi CLI that is not relevant to inboard. FastAPI 0.111.1 removes orjson and ujson from default dependencies. Users who depend on orjson or ujson should add these dependencies to their requirements files.

Commits

  • Bump version from 0.68.0 to 0.69.0 (af06254)
  • Update to FastAPI 0.111 (5f9ee0a)
  • Update changelog for version 0.68.0 (#109) (2416a23)

0.68.0 - 2024-04-26

Changes

Update to Uvicorn 0.28.1 (6166a66)

This release will update/upgrade to Uvicorn 0.28.1. Changes to Uvicorn between 0.25.0 and 0.28.1 include updates to root_path/ --root-path to comply with the ASGI spec, and fixes to Keep-Alive behavior to avoid timeouts and h11.LocalProtocolError exceptions that occur when processing pipelined requests.

Update to Gunicorn 22.0.0 (#108, bf4661e)

This release will update/upgrade to Gunicorn 22.0.0. Gunicorn 22.0.0 resolves a high-severity security vulnerability (CVE-2024-1135, GHSA-w3h3-4rj7-4ph4):

Gunicorn fails to properly validate Transfer-Encoding headers, leading to HTTP Request Smuggling (HRS) vulnerabilities. By crafting requests with conflicting Transfer-Encoding headers, attackers can bypass security restrictions and access restricted endpoints. This issue is due to Gunicorn's handling of Transfer-Encoding headers, where it incorrectly processes requests with multiple, conflicting Transfer-Encoding headers, treating them as chunked regardless of the final encoding specified. This vulnerability has been shown to allow access to endpoints restricted by gunicorn. This issue has been addressed in version 22.0.0.

To be affected users must have a network path which does not filter out invalid requests. These users are advised to block access to restricted endpoints via a firewall or other mechanism if they are unable to update.

Commits

  • Bump version from 0.67.1 to 0.68.0 (3fc1f79)
  • Quote & in GitHub Actions workflow YAML (0043237)
  • Update to Uvicorn 0.28.1 (6166a66)
  • Bump gunicorn from 21.2.0 to 22.0.0 (#108) (bf4661e)
  • Update changelog for version 0.67.1 (#107) (9579bba)

0.67.1 - 2024-04-11

Changes

Fix Docker tags for specific Debian version (e84fc8b)

PR #105 and commit 6a99cd0 introduced support for specifying the Debian version when building Docker images, ensuring that the version does not change unexpectedly. This change altered Docker tag syntax by adding the Debian version release name (currently "bookworm") to all Debian Docker images. For example, ghcr.io/br3ndonland/inboard:latest became ghcr.io/br3ndonland/inboard:latest-bookworm. inboard is not planning to support multiple Debian versions simultaneously. inboard will update to the next Debian version, Debian 13 ("trixie") when it is stable and will provide a new release after the update. This means there is no need to add the Debian version release name to the Docker tags.

This commit will update the code in the GitHub Actions workflow job and Dockerfile to match the previous tag syntax. The latest Debian image will return to ghcr.io/br3ndonland/inboard:latest and the latest Debian slim image to ghcr.io/br3ndonland/inboard:latest-slim. Syntax for Alpine Docker images remains unaltered, so tags like ghcr.io/br3ndonland/inboard:latest-alpine are still valid.

Commits

  • Bump version from 0.67.0 to 0.67.1 (2bfe218)
  • Fix Docker tags for specific Debian version (#105) (e84fc8b)
  • Update changelog for version 0.67.0 (#106) (1d20b7d)

0.67.0 - 2024-04-11

Changes

Specify Debian version (#105, 6a99cd0)

On 2023-06-14, Docker updated the default Debian Linux version in its Python official images from Debian bullseye to Debian bookworm (docker-library/official-images#14854). As inboard uses the default Debian Linux version from the Docker Python official images, this meant that the next release of inboard (0.50.0 - 2023-06-22) automatically updated to bookworm. There were some issues noted by the community after this update. This was noted in inboard 0.51.0 - 2023-07-09. Thanks to @bodograumann for pointing this out in the related discussion (br3ndonland/inboard#80).

inboard will now specify the Debian version when building Docker images, ensuring that the version does not change unexpectedly. The current Debian version is still Debian 12 ("bookworm"). The next Debian version, Debian 13 ("trixie") does not have a release date yet, but inboard will update to trixie when it is stable and will provide a new release after the update.

Add support for Python 3.12 (#104, ba83a67)

This release will add Python 3.12 support to inboard.

  • inboard will now run tests with Python 3.12, in addition to 3.8-3.11
  • inboard will now build and publish its PyPI package using Python 3.12
  • inboard will now include a Python 3.12 classifier in its PyPI package
  • inboard will now ship Docker images running Python 3.12, in addition to 3.8-3.11, and Docker images tagged with latest will now use 3.12

Related projects that have released support for Python 3.12 include:

Related projects that have not released support for Python 3.12 include:

Commits

  • Bump version from 0.66.1 to 0.67.0 (325ed9b)
  • Update to pytest 8 (c462c90)
  • Specify Debian version (#105) (6a99cd0)
  • Add support for Python 3.12 (#104) (ba83a67)
  • Fix GitHub Actions badge in README (145313e)
  • Update changelog for version 0.66.1 (#103) (552ebaa)

0.66.1 - 2024-04-09

Changes

Publish to PyPI with OIDC trusted publisher (59ec546)

This release will update Python package publishing to the newest format recommended by PyPI. This project previously published packages with the hatch publish command and a project-scoped PyPI API token (token only valid for this project) stored in GitHub Secrets. The project will now publish packages using a PyPI OIDC (OpenID Connect) trusted publisher with the pypa/gh-action-pypi-publish action. This is the method that Hatch itself uses (pypa/hatch#891) (Hatch does not "dogfood" its own hatch publish feature).

The advantage to OIDC is that authentication is performed with temporary API tokens (only valid for 15 minutes) instead of persistent tokens that must be manually generated on PyPI and pasted into GitHub Secrets. The disadvantage is that authentication is more complicated.

To use PyPI OIDC, a trusted publisher was set up for the PyPI project. Next, a dedicated GitHub Actions deployment environment was created for PyPI with protection rules that only allow use of the environment with Git tags. The environment protection rules combine with tag protection rules in the existing GitHub rulesets to ensure PyPI packages can only be published if a maintainer triggers a workflow run with a Git tag ref.

The GitHub Actions workflow will be updated to use the deployment environment. Deployment environments must be selected at the job level before the job begins, so a setup job will be added that selects the appropriate deployment environment and passes it to the PyPI job. Each use of a deployment environment creates a deployment that can be either active or inactive. GitHub Actions auto-inactivates deployments, and although this behavior is not configurable or documented, there are some possible workarounds/hacks suggested by a community discussion comment. The workaround used here will be to provide each deployment with its own unique URL.

To publish the Python package to PyPI, hatch build will output package build files to the dist/ directory, then pypa/gh-action-pypi-publish will authenticate and upload the files. pypa/gh-action-pypi-publish provides exact version tags like pypa/gh-action-pypi-publish@v1.8.14 and branches for major and minor version numbers like pypa/gh-action-pypi-publish@release/v1.8.

Update to FastAPI 0.110.1 and Starlette 0.37.2 (73eaadd)

This release will update/upgrade to FastAPI 0.110.1 and Starlette 0.37.2. FastAPI 0.110 makes a change to dependencies with yield and except. Dependencies must now raise exceptions after except. This change is intended to address memory leak issues and may be a breaking change in some projects if dependencies with yield and except used pass instead of raise. See the FastAPI docs for further info. FastAPI 0.110.1 makes a small type annotation change to the Depends dependency class.

Starlette 0.37 modifies the exception handling behavior of the Config class used for application settings. The Config class accepts an env_file arg that can be used to load environment variables from a "dotenv" (.env) file. Previously, if the file was not found, the Config class would silently pass without any exception. In 0.36, the Config class was updated to raise a FileNotFoundError exception if env_file was not not found. This was a breaking change but was not documented as such (encode/starlette#2422, encode/starlette#2446). In 0.37, the exception handling behavior has been changed again to raise a warning instead of an exception (encode/starlette#2485), which could also be a breaking change if users had rewritten their code to catch the FileNotFoundError. See the fastenv docs for a detailed description of the Starlette Config class. Note that FastAPI updated the Starlette minor version from 0.36 to 0.37 in the 0.110.1 patch release.

Commits

  • Bump version from 0.66.0 to 0.66.1 (474c722)
  • Publish to PyPI with OIDC trusted publisher (59ec546)
  • Update to peter-evans/create-pull-request@v6 (5b499a3)
  • Update to Ruff 0.3 (e42213c)
  • Update to mypy==1.9.0 (1cd64a7)
  • Update to hatch==1.9.4 (38a4e58)
  • Update to pipx==1.5.0 (8dfb90b)
  • Update to FastAPI 0.110.1 and Starlette 0.37.2 (73eaadd)
  • Disable CodeQL setup-python-dependencies (507c68c)
  • Update to Node.js 20 actions (6972c7b)
  • Update changelog for version 0.66.0 (#102) (7f4ff4e)

0.66.0 - 2024-03-11

Changes

Update to FastAPI 0.110 and Starlette 0.36 (dfa4822)

This release will update/upgrade to FastAPI 0.110 and Starlette 0.36. This is a minor release to align with FastAPI and Starlette versioning.

FastAPI 0.110 makes a change to dependencies with yield and except. Dependencies must now raise exceptions after except, like this:

def my_dep():
    try:
        yield
    except SomeException:
        raise

This change addresses memory leak issues and may be a breaking change in some projects if dependencies with yield and except used pass instead of raise. See the FastAPI docs for further info.

Changes to Starlette between 0.35 and 0.36 include exception handling updates and AnyIO compatibility updates. Note that FastAPI updated the Starlette minor version from 0.35 to 0.36 in the 0.109.2 patch release.

Commits

  • Bump version from 0.65.0 to 0.66.0 (ae160a0)
  • Update to FastAPI 0.110 and Starlette 0.36 (dfa4822)
  • Update to peter-evans/create-pull-request@v5 (2f9b88f)
  • Update to actions/checkout@v4 (8d888d0)
  • Update changelog for version 0.65.0 (#100) (8725661)

0.65.0 - 2024-01-13

Changes

Update to FastAPI 0.109 and Starlette 0.35 (b68b991)

This release will update/upgrade to FastAPI 0.109 and Starlette 0.35. This is a minor release to align with FastAPI and Starlette versioning. FastAPI 0.109 adds Python 3.12 support. Changes to Starlette between 0.32 and 0.35 include support for middleware in Router, Route, and WebSocketRoute, and updates to Middleware args.

Use Ruff for linting and formatting (#99, 35e37a7)

Ruff is a Python linter and formatter that has gained popularity due to its high performance and numerous capabilities. Now that Ruff has released its first minor version series (0.1) and has a versioning policy, it's a good time to consider adopting it.

As of this release, the project's Python linting and formatting checks will be migrated from the previous tools (Black, Flake8, isort) to Ruff. See #99 for further details.

Commits

  • Bump version from 0.64.0 to 0.65.0 (ca0a10b)
  • Update to FastAPI 0.109 and Starlette 0.35 (b68b991)
  • Use Ruff for linting and formatting (#99) (35e37a7)
  • Add "pypa" to CSpell words (696c43d)
  • Add references on syncing dependencies with Hatch (1e9512a)
  • Update Docker links in docs (e3ad60b)
  • Avoid metadata-generation-failed in Dockerfiles (a231b11)
  • Add wheel build target to avoid Hatch ValueError (c1328ee)
  • Update to pipx==1.4.1 (f902387)
  • Update changelog for version 0.64.0 (#97) (78adc33)

0.64.0 - 2023-12-30

Changes

Update to Gunicorn 21.2.0 (7993e61)

This release will update/upgrade to Gunicorn 21.2.0. See the Gunicorn docs and GitHub repo for more details on the changes since 20.1.0.

Commits

  • Bump version from 0.63.0 to 0.64.0 (384907b)
  • Update to Gunicorn 21.2.0 (7993e61)
  • Update changelog for version 0.63.0 (#96) (3bd8be1)

0.63.0 - 2023-12-30

Changes

Update to Uvicorn 0.25.0 (4cc018b)

This release will update/upgrade to Uvicorn 0.25.0. This is a minor release to align with Uvicorn versioning.

Uvicorn 0.25.0 adds support for the WebSocket Denial Response ASGI extension. This is used in certain cases in which a WebSocket app needs to reject a connection and return a custom response.

Uvicorn 0.25.0 also includes some corrections to the type annotations on uvicorn.run(). inboard.types.UvicornOptions already included correct type annotations that match these corrections, so no changes are needed.

Commits

  • Bump version from 0.62.0 to 0.63.0 (634d094)
  • Update to Uvicorn 0.25.0 (4cc018b)
  • Update changelog for version 0.62.0 (#95) (a1cfb84)

0.62.0 - 2023-12-30

Changes

Update to Uvicorn 0.24.0 (65883a9, 0d5ec23)

This release will update/upgrade to Uvicorn 0.24.0. This is a minor release to align with Uvicorn versioning.

Uvicorn 0.24.0 adds support for Python 3.12 and for setting the app instance with the environment variable UVICORN_APP. inboard already has an environment variable for this purpose, APP_MODULE. Either APP_MODULE or UVICORN_APP can be used to set the app module for inboard, with precedence given to APP_MODULE for backward compatibility.

Commits

  • Bump version from 0.61.0 to 0.62.0 (2270900)
  • Support UVICORN_APP (0d5ec23)
  • Update to Uvicorn 0.24.0 (65883a9)
  • Update changelog for version 0.61.0 (#94) (665eaca)

0.61.0 - 2023-12-30

Changes

Update to FastAPI 0.108 and Starlette 0.32 (738d54a)

This release will update/upgrade to FastAPI 0.108 and Starlette 0.32. This is a minor release to align with FastAPI versioning.

Changes to Starlette between 0.29 and 0.32 include dropping support for Python 3.7, and adding support for Python 3.12 and AnyIO 4.

Commits

  • Bump version from 0.60.0 to 0.61.0 (ccc7bf2)
  • Update to FastAPI 0.108 and Starlette 0.32 (738d54a)
  • Update changelog for version 0.60.0 (#93) (b0d4a4a)

0.60.0 - 2023-12-30

Changes

Update to FastAPI 0.107 and Starlette 0.28 (7d19e10)

This release will update/upgrade to FastAPI 0.107 and Starlette 0.28. This is a minor release to align with FastAPI and Starlette versioning.

FastAPI 0.107 updates to Starlette 0.28. Starlette 0.28 moves exception handling to the Route class and adds an error message if TestClient runs without HTTPX installed.

Commits

  • Bump version from 0.59.0 to 0.60.0 (2be52ab)
  • Update to FastAPI 0.107 and Starlette 0.28 (7d19e10)
  • Update changelog for version 0.59.0 (#92) (92d281d)

0.59.0 - 2023-12-30

Changes

Update to FastAPI 0.106 (e3ece81)

This release will update/upgrade to FastAPI 0.106. This is a minor release to align with FastAPI versioning.

In FastAPI 0.74 (released in inboard 0.18.0 - 2022-03-05), the internal AsyncExitStack was updated so that dependencies with yield could catch exceptions like HTTPException.

FastAPI 0.106 builds on the 0.74 updates by introducing the ability to raise exceptions after yield. This update includes a BREAKING CHANGE because objects from dependencies with yield can no longer be used in background tasks. The recommendation in the FastAPI docs for updating background tasks is:

If you used to rely on this behavior, now you should create the resources for background tasks inside the background task itself, and use internally only data that doesn't depend on the resources of dependencies with yield.

For example, instead of using the same database session, you would create a new database session inside of the background task, and you would obtain the objects from the database using this new session. And then instead of passing the object from the database as a parameter to the background task function, you would pass the ID of that object and then obtain the object again inside the background task function.

Commits

  • Bump version from 0.58.0 to 0.59.0 (893fa7e)
  • Update to FastAPI 0.106 (e3ece81)
  • Update changelog for version 0.58.0 (#91) (0997ad3)

0.58.0 - 2023-12-30

Changes

Update to FastAPI 0.105 (5bc3013)

This release will update/upgrade to FastAPI 0.105. This is a minor release to align with FastAPI versioning.

FastAPI 0.105 adds support for Annotated dependencies with multiple type annotations.

Commits

  • Bump version from 0.57.0 to 0.58.0 (e3eee4d)
  • Update to FastAPI 0.105 (5bc3013)
  • Update to mypy==1.8.0 (2529780)
  • Update to hatch==1.9.1 (65e7363)
  • Update to pipx==1.4.0 (66f9560)
  • Update to pipx==1.3.3 (fb08b72)
  • Update changelog for version 0.57.0 (#90) (f867910)

0.57.0 - 2023-11-12

Changes

Update to FastAPI 0.104 (882084c)

This release will update/upgrade to FastAPI 0.104. This is a minor release to align with FastAPI versioning.

FastAPI 0.104 drops support for Python 3.7 and adds API reference docs available here.

Switch from pre-commit to Hatch scripts (#89, 1a5450b)

pre-commit runs Git hooks. It can run on different Git events like pre-push and can also easily run on CI (continuous integration) platforms like GitHub Actions. These pre-commit hooks are often related to code quality and help ensure code quality checks are continuously enforced. While it is helpful for continuously running code quality checks, pre-commit also has some downsides as detailed in #89.

This project was previously migrated from Poetry to Hatch in version 0.38.0 - 2023-02-26. As of this release, the project's code quality checks will be migrated from pre-commit to Hatch scripts.

Commits

  • Bump version from 0.56.1 to 0.57.0 (a500ab1)
  • Update to FastAPI 0.104 (882084c)
  • Switch from pre-commit to Hatch scripts (#89) (1a5450b)
  • Add attribute lists to CSpell ignoreRegExpList (03ac3f7)
  • Update changelog for version 0.56.1 (#88) (1006821)

0.56.1 - 2023-11-12

Changes

Fix uvicorn[standard] version (be409c4)

Uvicorn was updated to version 0.23.2 in 2590d8a and 0.56.0, but the version number for uvicorn[standard] was not updated correspondingly. This release will update uvicorn[standard] to 0.23.2.

Update to Material for MkDocs 9 (ab692a3, 90f75b0)

Docs will now be built with Material for MkDocs 9. The most notable user-facing change is the new dark theme color palette, which has undergone a few small changes since its release in version 9.4.0 (squidfunk/mkdocs-material#6061). Code block copy behavior has undergone some small changes as well. Code blocks in the documentation have been reformatted for easier copying.

Commits

  • Bump version from 0.56.0 to 0.56.1 (0dba457)
  • Fix uvicorn[standard] version (be409c4)
  • Add docs deployment info to contributing.md (141d8e5)
  • Remove Material for MkDocs version from README (b415bf4)
  • Configure Material for MkDocs code block copy (90f75b0)
  • Update to Material for MkDocs 9 (ab692a3)
  • Relax upper bound on HTTPX (f49d205)
  • Update to mypy==1.7.0 (140dac6)
  • Update changelog for version 0.56.0 (#86) (18f2052)

0.56.0 - 2023-09-09

Changes

Update to Uvicorn 0.23.2 (2590d8a)

This release will update/upgrade from Uvicorn 0.22.0 to Uvicorn 0.23.2. This is a minor release to align with Uvicorn versioning.

Changes to Uvicorn since 0.22.0 include:

  • Drop support for Python 3.7
  • Switch to a vendored copy of asgiref.typing at uvicorn._types
  • Add a new option --ws-max-queue
  • Make a small scope change in uvicorn.middleware.proxy_headers.ProxyHeadersMiddleware.

Commits

  • Bump version from 0.55.0 to 0.56.0 (4b92cef)
  • Update to Uvicorn 0.23.2 (2590d8a)
  • Update changelog for version 0.55.0 (#85) (62ec752)

0.55.0 - 2023-09-09

Changes

Update to FastAPI 0.103 (b6aef8b)

This release will update/upgrade to FastAPI 0.103. This is a minor release to align with FastAPI versioning

FastAPI 0.103 adds support for an openapi_examples keyword argument as described in the docs and sets a temporary upper bound on AnyIO of anyio>=3.7.1,<4.0.0, separately from Starlette, to help with the update to Starlette 0.31.

Commits

  • Bump version from 0.54.0 to 0.55.0 (f2acd2c)
  • Update to FastAPI 0.103 (b6aef8b)
  • Update changelog for version 0.54.0 (#84) (b348793)

0.54.0 - 2023-09-09

Changes

Update to FastAPI 0.102

This release will update/upgrade to FastAPI 0.102. This is a minor release to align with FastAPI versioning.

FastAPI 0.101 added support for Pydantic computed fields and altered responses to use Pydantic serialization. The change to Pydantic serialization in FastAPI 0.101 separated input and output schemas, altering responses and OpenAPI schema generation. Due to the lack of backwards compatibility and the associated issues (tiangolo/fastapi#10011 (comment), tiangolo/fastapi#10019, tiangolo/fastapi#10041), the update to FastAPI 0.101 may be a BREAKING CHANGE for some users.

FastAPI 0.102 builds on the serialization changes introduced in 0.101 by adding docs explaining the serialization behavior and by adding a new optional keyword argument for disabling the new behavior.

If the Pydantic serialization behavior affects your project adversely, disable it with separate_input_output_schemas=False on the FastAPI app (app = FastAPI(separate_input_output_schemas=False)) as shown in the FastAPI docs.

Commits

  • Bump version from 0.53.0 to 0.54.0 (59a3dd0)
  • Update changelog for version 0.53.0 (#83) (04dfec9)
  • Update to FastAPI 0.102 (05abd20)

0.53.0 - 2023-09-08

Changes

Update to FastAPI 0.101 (9d54839)

This release will update/upgrade to FastAPI 0.101.

FastAPI 0.101 adds support for Pydantic computed fields and alters responses to use Pydantic serialization. The change to Pydantic serialization in FastAPI 0.101 separates input and output schemas, altering responses and OpenAPI schema generation. Due to the lack of backwards compatibility and the associated issues (tiangolo/fastapi#10011 (comment), tiangolo/fastapi#10019, tiangolo/fastapi#10041), the update to FastAPI 0.101 may be a BREAKING CHANGE for some users.

How to deal with this breaking change:

  • If this change affects your project adversely, skip FastAPI 0.101 and update to FastAPI 0.102 (upcoming in the next inboard release).
  • Set separate_input_output_schemas=False on the FastAPI app instance (app = FastAPI(separate_input_output_schemas=False)) as shown in the FastAPI docs.

Commits

  • Bump version from 0.52.0 to 0.53.0 (825b08c)
  • Update to FastAPI 0.101 (9d54839)
  • Update changelog for version 0.52.0 (#82) (9c18aa0)

0.52.0 - 2023-08-20

Changes

Update to FastAPI 0.100 (de4d583)

This release will update/upgrade to FastAPI 0.100. This is a minor release to align with FastAPI versioning.

FastAPI 0.100 includes support for Pydantic 2 and installs Pydantic 2 by default, which can be a BREAKING CHANGE depending on each project's usage of Pydantic.

How to deal with this breaking change:

  • First, update requirements files with "pydantic==1.*" to avoid automatically updating to Pydantic 2.
  • Next, remove "pydantic==1.*" from requirements files, install Pydantic 2, and follow the Pydantic 2 migration guide.

Remove Poetry 1.1 from Docker images (b36b351)

As described in the changelog entry for inboard 0.38 and the inboard docs, inboard switched its dependency management and packaging from Poetry 1.1 to Hatch. Poetry 1.1 was retained in the inboard Docker images for backwards compatibility, but Poetry 1.1 is unmaintained and so it must eventually be removed.

This release will remove Poetry 1.1 from the inboard Docker images. This is a BREAKING CHANGE.

How to deal with this breaking change:

  • If you are not using Poetry there are no changes needed.
  • If you are still using Poetry add RUN pipx install poetry to your Dockerfile.

Commits

  • Bump version from 0.51.0 to 0.52.0 (be3c16c)
  • Update to FastAPI 0.100 (de4d583)
  • Remove Poetry 1.1 from Docker images (b36b351)
  • Update changelog for version 0.51.0 (#81) (fbda899)

0.51.0 - 2023-07-09

Changes

Update to FastAPI 0.99 (19be870)

This release will update/upgrade to FastAPI 0.99. This is a minor release to align with FastAPI versioning.

FastAPI 0.99 adds support for OpenAPI 3.1.0, which allows webhooks to be documented as described in the FastAPI docs.

FastAPI 0.99 is also the last minor version before introducing support for Pydantic 2.

UPCOMING BREAKING CHANGE: Update to FastAPI 0.100 and Pydantic 2

The next minor release of inboard will update to FastAPI 0.100. FastAPI 0.100 includes support for Pydantic 2 and installs Pydantic 2 by default, which can be a breaking change depending on each project's usage of Pydantic.

How to deal with this breaking change:

  • First, update requirements files with "pydantic==1.*" to avoid automatically updating to Pydantic 2.
  • Next, remove "pydantic==1.*" from requirements files, install Pydantic 2, and follow the Pydantic 2 migration guide.

UPCOMING BREAKING CHANGE: Remove Poetry 1.1 from Docker images

As described in the changelog entry for inboard 0.38 and the inboard docs, inboard switched its dependency management and packaging from Poetry 1.1 to Hatch. Poetry 1.1 was retained in the inboard Docker images for backwards compatibility, but Poetry 1.1 is unmaintained and so it must eventually be removed.

The next minor release of inboard will remove Poetry 1.1 from the inboard Docker images.

How to deal with this breaking change:

  • If you are not using Poetry there are no changes needed.
  • If you are still using Poetry add RUN pipx install poetry to your Dockerfile.

Note about automatic update to Debian bookworm

On 2023-06-14, Docker updated the default Debian Linux version in its Python official images from Debian bullseye to Debian bookworm (docker-library/official-images#14854). As inboard uses the default Debian Linux version from the Docker Python official images, this meant that the next release of inboard (0.50.0 - 2023-06-22) automatically updated to bookworm. There have been some issues noted by the community after this update. Thanks to @bodograumann for pointing this out in the related discussion.

Commits

  • Bump version from 0.50.0 to 0.51.0 (be5c444)
  • Update to FastAPI 0.99 (19be870)
  • Update changelog for version 0.50.0 (#79) (a38228a)

0.50.0 - 2023-06-22

Changes

Update to FastAPI 0.98 (0484e11)

This release will update/upgrade to FastAPI 0.98. This is a minor release to align with FastAPI versioning.

FastAPI 0.98 adds support for an app-level redirect_slashes argument.

Commits

  • Bump version from 0.49.0 to 0.50.0 (174e02c)
  • Update to FastAPI 0.98 (0484e11)
  • Update changelog for version 0.49.0 (#78) (a9670c1)

0.49.0 - 2023-06-12

Changes

Update to FastAPI 0.97 (438e4e1)

This release will update/upgrade to FastAPI 0.97. This is a minor release to align with FastAPI versioning. FastAPI 0.97 adds support for dependencies in WebSocket routes.

Commits

  • Bump version from 0.48.0 to 0.49.0 (cc49fa0)
  • Update to FastAPI 0.97 (438e4e1)
  • Update changelog for version 0.48.0 (#77) (edef011)

0.48.0 - 2023-06-11

Changes

Update to Uvicorn 0.22 (#74, 32a0ae8)

This release will update/upgrade to Uvicorn 0.22. This is a minor release to align with Uvicorn versioning.

Uvicorn 0.22 adds a --timeout-graceful-shutdown option and fixes the --reload-delay option when using watchfiles.

Commits

  • Bump version from 0.47.0 to 0.48.0 (91aaa54)
  • Update to Uvicorn 0.22 (#74) (32a0ae8) by @bodograumann
  • Update changelog for version 0.47.0 (#76) (532553c)

0.47.0 - 2023-06-11

Changes

Update to FastAPI 0.96 (a83bd71)

This release will update/upgrade to FastAPI 0.96. This is a minor release to align with FastAPI versioning.

FastAPI 0.96 improves the performance of create_cloned_field, which is used by FastAPI internally when instantiating API routes. See FastAPI discussions for further info.

Commits

  • Bump version from 0.46.0 to 0.47.0 (dc258df)
  • Update to FastAPI 0.96 (a83bd71)
  • Update changelog for version 0.46.0 (#75) (c22f101)

0.46.0 - 2023-06-11

Changes

Update to FastAPI 0.95 and Starlette 0.27 (e6280fb)

This release will update/upgrade to FastAPI 0.95 and Starlette 0.27. This is a minor release to align with FastAPI and Starlette versioning.

FastAPI 0.95 introduces Annotated for dependencies. Annotated sets up a dependency for easier reuse. This provides some benefits when specifying dependencies as function arguments because dependencies don't need to be specified in endpoint function default arguments. Annotated is part of the typing standard library package starting in Python 3.9.

Starlette 0.27 resolves a low-severity security vulnerability related to the StaticFiles class.

Commits

  • Bump version from 0.45.0 to 0.46.0 (8068c53)
  • Update to FastAPI 0.95 and Starlette 0.27 (e6280fb)
  • Relate inboard, FastAPI, and Uvicorn versions (e413a04)
  • Update to hatch==1.7.0 (6addfac)
  • Remove Sourcery configuration file (d8d8c67)
  • Update Black in pre-commit (307789a)
  • Update to mypy==1.3.0 (2bffd80)
  • Update to pytest-timeout 2 (e79cec3)
  • Update to coverage 7 (68a95d1)
  • Use urllib3<2 for HTTPie DEFAULT_CIPHERS (0f76e62)
  • Prepend $HATCH_ENV in GitHub Actions workflow (93e1c40)
  • Update to pipx==1.2.0 (0a50baa)
  • Update changelog for version 0.45.0 (#73) (b05c6d4)

0.45.0 - 2023-03-18

Changes

Update to Uvicorn 0.21.1 (768c95f)

This release will update/upgrade to Uvicorn 0.21.1. This is a minor release to align with Uvicorn versioning.

Uvicorn 0.21 introduces support for lifespan state. No docs or PR descriptions were provided to explain how this works. See the FastAPI docs and Starlette docs for further info.

Commits

0.44.0..0.45.0

  • Bump version from 0.44.0 to 0.45.0 (bdb5be4)
  • Update to Uvicorn 0.21.1 (768c95f)
  • Update changelog for version 0.44.0 (#72) (58800ce)

0.44.0 - 2023-03-11

Changes

Update to FastAPI 0.94 and Starlette 0.26 (f32d492)

This release will update/upgrade to FastAPI 0.94 and Starlette 0.26. This is a minor release to align with FastAPI and Starlette versioning.

FastAPI 0.94 and Starlette 0.26 introduce support for lifespan state. See the FastAPI docs and Starlette docs for more info.

Starlette 0.26 deprecates on_startup and on_shutdown events. See FastAPI 0.93, the FastAPI docs, and encode/starlette#2067 for more info.

Commits

0.43.0..0.44.0

  • Bump version from 0.43.0 to 0.44.0 (c289f24)
  • Update to FastAPI 0.94 and Starlette 0.26 (f32d492)
  • Update changelog for version 0.43.0 (#71) (133926c)

0.43.0 - 2023-03-11

Changes

Update to FastAPI 0.93 (4a52ee2)

This release will update/upgrade to FastAPI 0.93. This is a minor release to align with FastAPI versioning.

FastAPI 0.93 introduces support for lifespan context managers, which are intended to supersede startup and shutdown events. See the FastAPI docs and encode/starlette#2067 for more info.

Commits

0.42.0..0.43.0

  • Bump version from 0.42.0 to 0.43.0 (631f67b)
  • Update to FastAPI 0.93 (4a52ee2)
  • Update to mypy 1.1.1 (127c28d)
  • Update changelog for version 0.42.0 (#70) (27d2b42)

0.42.0 - 2023-03-05

Changes

Update to FastAPI 0.92 and Starlette 0.25 (e8330ea)

This release will update/upgrade to FastAPI 0.92 and Starlette 0.25. This is a minor release to align with FastAPI and Starlette versioning.

Starlette 0.25.0 fixes a security vulnerability related to forms. The release notes don't really explain this fix, but the release notes for FastAPI 0.92.0 provide some additional explanation.

Commits

0.41.0..0.42.0

  • Bump version from 0.41.0 to 0.42.0 (b36b277)
  • Update to FastAPI 0.92 and Starlette 0.25 (e8330ea)
  • Update changelog for version 0.41.0 (#69) (b370982)

0.41.0 - 2023-03-05

Changes

Update to FastAPI 0.91 and Starlette 0.24 (1474fa9)

This release will update/upgrade to FastAPI 0.91 and Starlette 0.24. This is a minor release to align with FastAPI and Starlette versioning.

Starlette 0.24 improves handling of middleware stacks (encode/starlette#2017).

Starlette is no longer documenting (but not yet deprecating) the app.add_middleware syntax in favor of passing a middleware list as a kwarg to Starlette() (Starlette(middleware=middleware)) (encode/starlette#1481). The recommended syntax allows for more predictable ordering of middleware lists, so that they are added to the Starlette app and initialized in expected order (encode/starlette#1490).

Use of the app.add_middleware syntax in the inboard example Starlette and FastAPI apps will be replaced with the recommended approach.

Commits

0.40.0..0.41.0

  • Bump version from 0.40.0 to 0.41.0 (6ba5a5c)
  • Update to recommended Starlette middleware syntax (ec752d2)
  • Update to FastAPI 0.91 and Starlette 0.24 (1474fa9)
  • Update changelog for version 0.40.0 (#68) (26565af)

0.40.0 - 2023-03-02

Changes

Update to FastAPI 0.90 and Starlette 0.23 (89caa66)

This release will update/upgrade to FastAPI 0.90 and Starlette 0.23. This is a minor release to align with FastAPI and Starlette versioning.

Starlette 0.23 begins a deprecation process for some of the Router and Starlette decorators like route, as described in the Starlette routing docs.

Use of the @app.route decorator in the inboard example Starlette app will be replaced with the recommended approach.

Commits

0.39.0..0.40.0

  • Bump version from 0.39.0 to 0.40.0 (30c9794)
  • Remove deprecated Starlette route decorators (44ad641)
  • Update to FastAPI 0.90 and Starlette 0.23 (89caa66)
  • Update changelog for version 0.39.0 (#67) (544c8d5)

0.39.0 - 2023-03-01

Changes

Update to FastAPI 0.89 (7f5e76d)

This release will update/upgrade to FastAPI 0.89. This is a minor release to align with FastAPI's versioning strategy.

Note that, as of FastAPI 0.89, FastAPI can now infer the response model from an API endpoint function's return type, so there is no longer need for the response_model argument in most cases. See the updated docs for further info.

Commits

0.38.0..0.39.0

  • Bump version from 0.38.0 to 0.39.0 (e80f7de)
  • Remove response_model usage (0ec39d9)
  • Update to FastAPI 0.89 (7f5e76d)
  • Update changelog for version 0.38.0 (#66) (c437fd8)

0.38.0 - 2023-02-26

Changes

Add Python 3.11 support (#62)

  • inboard will now run tests with Python 3.11, in addition to 3.8-3.10
  • inboard will now build and publish its PyPI package using Python 3.11
  • inboard will now include a Python 3.11 classifier in its PyPI package
  • inboard will now ship Docker images running Python 3.11, in addition to 3.8-3.10, and Docker images tagged with latest will now use 3.11

Update to Uvicorn 0.20.0 (13cd921)

This commit will update/upgrade from Uvicorn 0.17.6 to Uvicorn 0.20.0.

Uvicorn 0.20.0 will be pinned exactly to avoid problematic or breaking changes in future patch releases.

Uvicorn 0.18 was skipped for the following reasons:

  • As of Uvicorn 0.18.0, Uvicorn now prioritizes watchfiles instead of watchgod. watchfiles uses Rust binary extensions, which can have issues on Alpine Linux and macOS with Apple Silicon (M1/M2), and the evaluation process took some time. It does appear that watchfiles is now publishing wheels with musllinux tags, so Alpine Linux should be generally compatible. Apple Silicon Macs should be compatible as of watchfiles 0.16.
  • The h11_max_incomplete_event_size setting was added in 0.18.0 with an incorrect default, then updated in 0.18.1 with a correct default.
  • A temporary breaking change was made to the Uvicorn logging module. It was renamed from uvicorn.logging to uvicorn._logging in 0.18.0 (a breaking change that was not mentioned in the release notes), then reverted back to uvicorn.logging in 0.18.2. A change to the logging module path could break inboard LOG_FORMAT=uvicorn.
  • A temporary breaking change was made to the Uvicorn logging config. The logging config default was changed from LOGGING_CONFIG to None in 0.18.0, which resulted in logs not being shown at all. The default was then reverted to LOGGING_CONFIG in 0.18.2.
  • The type annotation and default value for the reload_delay config setting were changed in 0.18.3. The type annotation on reload_delay was changed from Optional[float] (float | None) to float, and the default value was changed from None to float. reload_delay is only used in one place, in the uvicorn.supervisors.basereload module, in BaseReload().pause(). BaseReload().pause() runs threading.Event().wait(), which uses None as its default. It would therefore be fine for reloading to pass in reload_delay=None, so the change in Uvicorn to requiring float was confusing and unnecessary.

Changes related to Uvicorn 0.19 include:

  • The debug setting was removed from uvicorn.config.Config.
  • As of 0.19.0, Uvicorn now ships with a PEP 563 py.typed file, marking the package as type-annotated. type: ignore comments on import uvicorn lines can be removed.
  • Type annotation updates are needed to match the new type information from Uvicorn. The inboard.types.UvicornOptions type added in 2cbc99c will be updated to more closely match arguments to uvicorn.run(), particularly by making the app field required and removing debug.
  • BREAKING CHANGE: a new required positional argument app_module will be added to inboard.start.set_uvicorn_options. inboard.start will be updated accordingly, so this change is not likely to affect end users. It is technically a change to inboard's public API, so it is listed here as a breaking change. This change does have the benefit of making the arguments to inboard.start.set_uvicorn_options more similar to the arguments to inboard.start.set_gunicorn_options.

Break up uvicorn[standard] optional dependencies (#60)

Uvicorn lumps several optional dependencies into a "standard" extra:

  • colorama (for Windows)
  • httptools
  • python-dotenv
  • pyyaml
  • uvloop
  • watchgod/watchfiles (watchgod was renamed to watchfiles)
  • websockets

There has been some discussion about the drawbacks of this approach:

inboard has previously installed the "standard" extra by default. This commit will change the default to installing Uvicorn without "standard." This is a BREAKING CHANGE to inboard's dependencies.

A new inboard[uvicorn-fast] extra will be added for dependencies from uvicorn[standard] related to web server performance, and can be installed by specifying the extra when installing inboard, like python -m pip install 'inboard[fastapi,uvicorn-fast]':

  • httptools
  • uvloop
  • websockets

For users who still need all the uvicorn[standard] extras, a new inboard[uvicorn-standard] extra will be added to the inboard package, and can be installed by specifying the extra when installing inboard, like python -m pip install 'inboard[fastapi,uvicorn-standard]'.

Migrate from Poetry 1.1 to Hatch (#56, #58, 8deae55, 8644d42, 53e2abb)

inboard has been migrated to Hatch. See #56 for further explanation.

Projects using inboard are not required to migrate to Hatch. The Docker images will retain Poetry 1.1 for backwards compatibility for now. Poetry 1.1 is unmaintained, so it will eventually need to be removed. Notice will be given at least one minor version prior to removal. If projects using inboard require poetry>1.2, they can add pipx upgrade poetry or pipx install poetry>1.2 --force to their Dockerfiles as described in the updated docs (on the Docker page, under "Docker and Poetry").

The Python package version will now be available at inboard.__version__.

Auto-generate changelog from Git tags (b15efff, e6e0490)

A changelog will now be provided at CHANGELOG.md for viewing on GitHub, and in the docs at the /changelog endpoint.

Update Docker tag syntax for inboard releases (5617084)

Originally, inboard just provided three Docker images, tagged with base, fastapi, and starlette based on the dependencies installed, and appended inboard version numbers when Git tags were pushed.

Appending version numbers to Docker tags can result in confusing syntax. For example, ghcr.io/br3ndonland/inboard:fastapi-0.37-alpine refers to inboard 0.37, but some users could interpret this as FastAPI 0.37.

The inboard version number will now be added to the beginning of all Docker tags to avoid this confusion.

  • Old: ghcr.io/br3ndonland/inboard:fastapi-0.38-alpine
  • New: ghcr.io/br3ndonland/inboard:0.38-fastapi-alpine

The old syntax will remain supported for backwards compatibility, so either the old or new syntax shown above will work.

Enable mypy strict mode (2cbc99c)

Mypy will run in strict mode on all Python code (source code and tests). In terms of user-facing improvements, this update will:

  • Add a new inboard.types module, with a DictConfig type that can be used to type-annotate logging configuration dictionaries, and a UvicornOptions type for options (positional and keyword arguments) passed to uvicorn.run()
  • Update the base ASGI application in inboard.app.main_base to ASGI3
  • Update contributing.md with type annotation info and instructions

Commits

0.37.0..0.38.0

  • Bump version from 0.38.0-beta.0 to 0.38.0 (4e8d8cb)
  • Update to mypy 1 (4630f8a)
  • Pin Gunicorn to 20.1.0 (7cc175a)
  • Update to Black 23 (1fea27e)
  • Update isort to avoid poetry-core breaking change (b289ee9)
  • Fix upper bound on HTTPX optional dependency (53e2abb)
  • Add note on syncing dependencies with Hatch (029c07f)
  • Alphabetize Hatch commands in contributing.md (f617e14)
  • Update pre-commit dependencies (7fbde3e)
  • Enable pymdownx.magiclink (5271a30)
  • Update changelog for version 0.38.0-beta.0 (#64) (9968f6f)
  • Bump version from 0.38.0-alpha.2 to 0.38.0-beta.0 (fdeae75)
  • Update changelog for version 0.38.0-alpha.2 (#63) (19da840)
  • Bump version from 0.38.0-alpha.1 to 0.38.0-alpha.2 (98c834e)
  • Add Python 3.11 support (#62) (5716eff)
  • Update changelog for version 0.38.0-alpha.1 (#61) (971b593)
  • Bump version from 0.38.0-alpha.0 to 0.38.0-alpha.1 (b1debfa)
  • Move pyproject.toml repo URL to [project.urls] (8644d42)
  • Organize Hatch install info in contributing.md (8deae55)
  • Update to Uvicorn 0.20.0 (13cd921)
  • Break up uvicorn[standard] optional dependencies (#60) (01ad352)
  • Update changelog for version 0.38.0-alpha.0 (#59) (49d3b96)
  • Bump version from 0.37.0 to 0.38.0-alpha.0 (e9348b0)
  • Merge pull request #58 from br3ndonland/hatch (78be3c2)
  • Update docs for Hatch (ec344ad)
  • Update GitHub Actions workflows for Hatch (9285efb)
  • Update Dockerfile for Hatch (93d9e0a)
  • Update configuration files for Hatch (5bd4ff5)
  • Update to actions/setup-python@v4 (8840873)
  • Add required trailers key for asgiref==3.6.0 (d729fdf)
  • Update to asgiref==3.6.0 (d534de8)
  • Move changelog updates to PRs (e6e0490)
  • Auto-generate changelog from Git tags (b15efff)
  • Remove unused .prettierrc (ef25ea0)
  • Add spell check with CSpell (7361702)
  • Remove GitHub issue templates (3797b2d)
  • Update GitHub Actions Git tag syntax (c8a0638)
  • Update Docker tag syntax for inboard releases (5617084)
  • Remove redundant GitHub Actions workflows (4d19501)
  • Enable mypy strict mode (2cbc99c)

0.38.0-beta.0 - 2023-01-02

Changes

Add Python 3.11 support (#62)

  • inboard will now run tests with Python 3.11, in addition to 3.8-3.10
  • inboard will now build and publish its PyPI package using Python 3.11
  • inboard will now include a Python 3.11 classifier in its PyPI package
  • inboard will now ship Docker images running Python 3.11, in addition to 3.8-3.10, and Docker images tagged with latest will now use 3.11

Update to Uvicorn 0.20.0 (13cd921)

This commit will update/upgrade from Uvicorn 0.17.6 to Uvicorn 0.20.0.

Uvicorn 0.20.0 will be pinned exactly to avoid problematic or breaking changes in future patch releases.

Uvicorn 0.18 was skipped for the following reasons:

  • As of Uvicorn 0.18.0, Uvicorn now prioritizes watchfiles instead of watchgod. watchfiles uses Rust binary extensions, which can have issues on Alpine Linux and macOS with Apple Silicon (M1/M2), and the evaluation process took some time. It does appear that watchfiles is now publishing wheels with musllinux tags, so Alpine Linux should be generally compatible. Apple Silicon Macs should be compatible as of watchfiles 0.16.
  • The h11_max_incomplete_event_size setting was added in 0.18.0 with an incorrect default, then updated in 0.18.1 with a correct default.
  • A temporary breaking change was made to the Uvicorn logging module. It was renamed from uvicorn.logging to uvicorn._logging in 0.18.0 (a breaking change that was not mentioned in the release notes), then reverted back to uvicorn.logging in 0.18.2. A change to the logging module path could break inboard LOG_FORMAT=uvicorn.
  • A temporary breaking change was made to the Uvicorn logging config. The logging config default was changed from LOGGING_CONFIG to None in 0.18.0, which resulted in logs not being shown at all. The default was then reverted to LOGGING_CONFIG in 0.18.2.
  • The type annotation and default value for the reload_delay config setting were changed in 0.18.3. The type annotation on reload_delay was changed from Optional[float] (float | None) to float, and the default value was changed from None to float. reload_delay is only used in one place, in the uvicorn.supervisors.basereload module, in BaseReload().pause(). BaseReload().pause() runs threading.Event().wait(), which uses None as its default. It would therefore be fine for reloading to pass in reload_delay=None, so the change in Uvicorn to requiring float was confusing and unnecessary.

Uvicorn 0.19 was less problematic, but did include some noteworthy changes. inboard will be updated accordingly. Notes:

  • The debug setting was removed from uvicorn.config.Config.
  • As of 0.19.0, Uvicorn now ships with a PEP 563 py.typed file, marking the package as type-annotated. type: ignore comments on import uvicorn lines can be removed.
  • Type annotation updates are needed to match the new type information from Uvicorn. The inboard.types.UvicornOptions type added in 2cbc99c will be updated to more closely match arguments to uvicorn.run(), particularly by making the app field required and removing debug.
  • BREAKING CHANGE: a new required positional argument app_module will be added to inboard.start.set_uvicorn_options. inboard.start will be updated accordingly, so this change is not likely to affect end users. It is technically a change to inboard's public API, so it is listed here as a breaking change. This change does have the benefit of making the arguments to inboard.start.set_uvicorn_options more similar to the arguments to inboard.start.set_gunicorn_options.

Break up uvicorn[standard] optional dependencies (#60)

Uvicorn lumps several optional dependencies into a "standard" extra:

  • colorama (for Windows)
  • httptools
  • python-dotenv
  • pyyaml
  • uvloop
  • watchgod/watchfiles (watchgod was renamed to watchfiles)
  • websockets

There has been some discussion about the drawbacks of this approach:

inboard has previously installed the "standard" extra by default. This commit will change the default to installing Uvicorn without "standard." This is a BREAKING CHANGE to inboard's dependencies.

A new inboard[uvicorn-fast] extra will be added for dependencies from uvicorn[standard] related to web server performance, and can be installed by specifying the extra when installing inboard, like python -m pip install 'inboard[fastapi,uvicorn-fast]':

  • httptools
  • uvloop
  • websockets

For users who still need all the uvicorn[standard] extras, a new inboard[uvicorn-standard] extra will be added to the inboard package, and can be installed by specifying the extra when installing inboard, like python -m pip install 'inboard[fastapi,uvicorn-standard]'.

Migrate from Poetry 1.1 to Hatch (#56, #58, 8deae55, 8644d42)

inboard has been migrated to Hatch. See #56 for more details and context around the motivations for this.

Projects using inboard are not required to migrate to Hatch. The Docker images will retain Poetry 1.1 for backwards compatibility for now. Poetry 1.1 is unmaintained, so it will eventually need to be removed. Notice will be given at least one minor version prior to removal. If projects using inboard require poetry>1.2, they can add pipx upgrade poetry or pipx install poetry>1.2 --force to their Dockerfiles as described in the updated docs (on the Docker page, under "Docker and Poetry").

The Python package version will now be available at inboard.__version__.

Auto-generate changelog from Git tags (b15efff, e6e0490)

A changelog will now be provided at CHANGELOG.md for viewing on GitHub, and in the docs at the /changelog endpoint.

Update Docker tag syntax for inboard releases (5617084)

Originally, inboard just provided three Docker images, tagged with base, fastapi, and starlette based on the dependencies installed, and appended inboard version numbers when Git tags were pushed.

Appending version numbers to Docker tags can result in confusing syntax. For example, ghcr.io/br3ndonland/inboard:fastapi-0.37-alpine refers to inboard 0.37, but some users could interpret this as FastAPI 0.37.

The inboard version number will now be added to the beginning of all Docker tags to avoid this confusion.

  • Old: ghcr.io/br3ndonland/inboard:fastapi-0.38-alpine
  • New: ghcr.io/br3ndonland/inboard:0.38-fastapi-alpine

The original syntax will remain supported for backwards compatibility, so either the old or new syntax shown above will work.

Enable mypy strict mode (2cbc99c)

Mypy will run in strict mode on all Python code (source code and tests). In terms of user-facing improvements, this update will:

  • Add a new inboard.types module, with a DictConfig type that can be used to type-annotate logging configuration dictionaries, and a UvicornOptions type for options (positional and keyword arguments) passed to uvicorn.run()
  • Update the base ASGI application in inboard.app.main_base to ASGI3
  • Update contributing.md with type annotation info and instructions

Commits

  • Bump version from 0.38.0-alpha.2 to 0.38.0-beta.0 (fdeae75)
  • Update changelog for version 0.38.0-alpha.2 (#63) (19da840)
  • Bump version from 0.38.0-alpha.1 to 0.38.0-alpha.2 (98c834e)
  • Add Python 3.11 support (#62) (5716eff)
  • Update changelog for version 0.38.0-alpha.1 (#61) (971b593)
  • Bump version from 0.38.0-alpha.0 to 0.38.0-alpha.1 (b1debfa)
  • Move pyproject.toml repo URL to [project.urls] (8644d42)
  • Organize Hatch install info in contributing.md (8deae55)
  • Update to Uvicorn 0.20.0 (13cd921)
  • Break up uvicorn[standard] optional dependencies (#60) (01ad352)
  • Update changelog for version 0.38.0-alpha.0 (#59) (49d3b96)
  • Bump version from 0.37.0 to 0.38.0-alpha.0 (e9348b0)
  • Merge pull request #58 from br3ndonland/hatch (78be3c2)
  • Update docs for Hatch (ec344ad)
  • Update GitHub Actions workflows for Hatch (9285efb)
  • Update Dockerfile for Hatch (93d9e0a)
  • Update configuration files for Hatch (5bd4ff5)
  • Update to actions/setup-python@v4 (8840873)
  • Add required trailers key for asgiref==3.6.0 (d729fdf)
  • Update to asgiref==3.6.0 (d534de8)
  • Move changelog updates to PRs (e6e0490)
  • Auto-generate changelog from Git tags (b15efff)
  • Remove unused .prettierrc (ef25ea0)
  • Add spell check with CSpell (7361702)
  • Remove GitHub issue templates (3797b2d)
  • Update GitHub Actions Git tag syntax (c8a0638)
  • Update Docker tag syntax for inboard releases (5617084)
  • Remove redundant GitHub Actions workflows (4d19501)
  • Enable mypy strict mode (2cbc99c)

0.38.0-alpha.2 - 2023-01-01

Changes:

Add Python 3.11 support (#62)

  • inboard will now run tests with Python 3.11, in addition to 3.8-3.10
  • inboard will now build and publish its PyPI package using Python 3.11
  • inboard will now include a Python 3.11 classifier in its PyPI package
  • inboard will now ship Docker images running Python 3.11, in addition to 3.8-3.10, and Docker images tagged with latest will now use 3.11

Commits:

  • Bump version from 0.38.0-alpha.1 to 0.38.0-alpha.2 (98c834e)
  • Add Python 3.11 support (#62) (5716eff)
  • Update changelog for version 0.38.0-alpha.1 (#61) (971b593)

0.38.0-alpha.1 - 2022-12-31

Changes:

Update to Uvicorn 0.20.0 (13cd921)

This commit will update/upgrade to Uvicorn 0.20.0.

https://github.com/encode/uvicorn/releases/tag/0.20.0

Uvicorn 0.20.0 will be pinned exactly to avoid problematic or breaking changes in future patch releases.

Uvicorn 0.18 was skipped for the following reasons:

  • As of Uvicorn 0.18.0, Uvicorn now prioritizes watchfiles instead of watchgod. watchfiles uses Rust binary extensions, which can have issues on Alpine Linux and macOS with Apple Silicon (M1/M2), and the evaluation process took some time. It does appear that watchfiles is now publishing wheels with musllinux tags, so Alpine Linux should be generally compatible. Apple Silicon Macs should be compatible as of watchfiles 0.16.
  • The h11_max_incomplete_event_size setting was added in 0.18.0 with an incorrect default, then updated in 0.18.1 with a correct default.
  • A temporary breaking change was made to the Uvicorn logging module. It was renamed from uvicorn.logging to uvicorn._logging in 0.18.0 (a breaking change that was not mentioned in the release notes), then reverted back to uvicorn.logging in 0.18.2. A change to the logging module path could break inboard LOG_FORMAT=uvicorn.
  • A temporary breaking change was made to the Uvicorn logging config. The logging config default was changed from LOGGING_CONFIG to None in 0.18.0, which resulted in logs not being shown at all. The default was then reverted to LOGGING_CONFIG in 0.18.2.
  • The type annotation and default value for the reload_delay config setting were changed in 0.18.3. The type annotation on reload_delay was changed from Optional[float] (float | None) to float, and the default value was changed from None to float. reload_delay is only used in one place, in the uvicorn.supervisors.basereload module, in BaseReload().pause(). BaseReload().pause() runs threading.Event().wait(), which uses None as its default. It would therefore be fine for reloading to pass in reload_delay=None, so the change in Uvicorn to requiring float was confusing and unnecessary.

https://github.com/encode/uvicorn/releases/tag/0.18.3

Uvicorn 0.19 was less problematic, but did include some noteworthy changes. inboard will be updated accordingly. Notes:

  • The debug setting was removed from uvicorn.config.Config.
  • As of 0.19.0, Uvicorn now ships with a PEP 563 py.typed file, marking the package as type-annotated. type: ignore comments on import uvicorn lines can be removed.
  • Type annotation updates are needed to match the new type information from Uvicorn. The inboard.types.UvicornOptions type added in 2cbc99c will be updated to more closely match arguments to uvicorn.run(), particularly by making the app field required and removing debug.
  • BREAKING CHANGE: a new required positional argument app_module will be added to inboard.start.set_uvicorn_options. inboard.start will be updated accordingly, so this change is not likely to affect end users. It is technically a change to inboard's public API, so it is listed here as a breaking change. This change does have the benefit of making the arguments to inboard.start.set_uvicorn_options more similar to the arguments to inboard.start.set_gunicorn_options.

https://github.com/encode/uvicorn/releases/tag/0.19.0

Break up uvicorn[standard] optional dependencies (#60)

Uvicorn lumps several optional dependencies into a "standard" extra:

  • colorama (for Windows)
  • httptools
  • python-dotenv
  • pyyaml
  • uvloop
  • watchgod/watchfiles (watchgod was renamed to watchfiles)
  • websockets

There has been some discussion about the drawbacks of this approach:

inboard has previously installed the "standard" extra by default. This commit will change the default to installing Uvicorn without "standard." This is a BREAKING CHANGE to inboard's dependencies.

A new inboard[uvicorn-fast] extra will be added for dependencies from uvicorn[standard] related to web server performance, and can be installed by specifying the extra when installing inboard, like python -m pip install 'inboard[fastapi,uvicorn-fast]':

  • httptools
  • uvloop
  • websockets

For users who still need all the uvicorn[standard] extras, a new inboard[uvicorn-standard] extra will be added to the inboard package, and can be installed by specifying the extra when installing inboard, like python -m pip install 'inboard[fastapi,uvicorn-standard]'.

Commits:

  • Bump version from 0.38.0-alpha.0 to 0.38.0-alpha.1 (b1debfa)
  • Move pyproject.toml repo URL to [project.urls] (8644d42)
  • Organize Hatch install info in contributing.md (8deae55)
  • Update to Uvicorn 0.20.0 (13cd921)
  • Break up uvicorn[standard] optional dependencies (#60) (01ad352)
  • Update changelog for version 0.38.0-alpha.0 (#59) (49d3b96)

0.38.0-alpha.0 - 2022-12-30

Changes:

Migrate from Poetry 1.1 to Hatch (#56, #58)

inboard has been migrated to Hatch. See #56 for more details and context around the motivations for this.

The inboard Python version is now available at inboard.__version__.

Projects using inboard are not required to migrate to Hatch. The Docker images will retain Poetry 1.1 for backwards compatibility for now. Poetry 1.1 is unmaintained, so it will eventually need to be removed. Notice will be given at least one minor version prior to removal. If projects using inboard require poetry>1.2, they can add pipx upgrade poetry or pipx install poetry>1.2 --force to their Dockerfiles as described in the updated docs (on the Docker page, under "Docker and Poetry").

Auto-generate changelog from Git tags (b15efff, e6e0490)

A changelog will now be provided at CHANGELOG.md for viewing on GitHub, and in the docs at the /changelog endpoint.

Update Docker tag syntax for inboard releases (5617084)

Originally, inboard just provided three Docker images, tagged with base, fastapi, and starlette based on the dependencies installed, and appended inboard version numbers when Git tags were pushed.

Appending version numbers to Docker tags can result in confusing syntax. For example, ghcr.io/br3ndonland/inboard:fastapi-0.37-alpine refers to inboard 0.37, but some users could interpret this as FastAPI 0.37.

The inboard version number will now be added to the beginning of all Docker tags to avoid this confusion.

  • Before: ghcr.io/br3ndonland/inboard:fastapi-0.37-alpine
  • After: ghcr.io/br3ndonland/inboard:0.37-fastapi-alpine

The original syntax will remain supported for backwards compatibility, so either the "before" or "after" syntax shown above will work.

Enable mypy strict mode (2cbc99c)

Mypy will run in strict mode on all Python code (source code and tests). In terms of user-facing improvements, this update will:

  • Add a new inboard.types module, with a DictConfig type that can be used to type-annotate logging configuration dictionaries, and a UvicornOptions type that can be used to type-annotate options passed to Uvicorn via uvicorn.run() or uvicorn.Config
  • Update the base ASGI application in inboard.app.main_base to ASGI3
  • Update contributing.md with type annotation info and instructions

Commits:

  • Bump version from 0.37.0 to 0.38.0-alpha.0 (e9348b0)
  • Merge pull request #58 from br3ndonland/hatch (78be3c2)
  • Update docs for Hatch (ec344ad)
  • Update GitHub Actions workflows for Hatch (9285efb)
  • Update Dockerfile for Hatch (93d9e0a)
  • Update configuration files for Hatch (5bd4ff5)
  • Update to actions/setup-python@v4 (8840873)
  • Add required trailers key for asgiref==3.6.0 (d729fdf)
  • Update to asgiref==3.6.0 (d534de8)
  • Move changelog updates to PRs (e6e0490)
  • Auto-generate changelog from Git tags (b15efff)
  • Remove unused .prettierrc (ef25ea0)
  • Add spell check with CSpell (7361702)
  • Remove GitHub issue templates (3797b2d)
  • Update GitHub Actions Git tag syntax (c8a0638)
  • Update Docker tag syntax for inboard releases (5617084)
  • Remove redundant GitHub Actions workflows (4d19501)
  • Enable mypy strict mode (2cbc99c)

0.37.0 - 2022-11-28

Changes:

Update to FastAPI 0.88 and Starlette 0.22 (7c76538)

This release will update/upgrade to FastAPI 0.88 and Starlette 0.22. This is a minor release to align with FastAPI and Starlette versioning.

https://github.com/tiangolo/fastapi/releases/tag/0.88.0 https://github.com/encode/starlette/releases/tag/0.22.0

Commits:

  • Bump version from 0.36.0 to 0.37.0 (6893b78)
  • Update to FastAPI 0.88 and Starlette 0.22 (7c76538)

0.36.0 - 2022-11-26

Changes:

Update to FastAPI 0.87 and Starlette 0.21 (b429f5c)

This release will update/upgrade to FastAPI 0.87 and Starlette 0.21. This is a minor release to align with FastAPI and Starlette versioning.

BREAKING CHANGE: Starlette 0.21 updated the test client to run on HTTPX instead of Requests. Please verify compatibility with your test suite after updating. Also note that, while Requests is no longer a dependency of Starlette, it recently became a dependency of mkdocs-material, so it will still be included when installing mkdocs-material. mkdocs-material (aka "Material for MkDocs") is used to build the documentation. They recently achieved their $8000 "Scotch Bonnet" funding goal, and released a collection of previously insiders-only features to the public. One of these features is a new built-in social plugin that uses Requests. https://github.com/tiangolo/fastapi/releases/tag/0.87.0 https://github.com/encode/starlette/releases/tag/0.21.0 https://www.python-httpx.org/compatibility/ https://squidfunk.github.io/mkdocs-material/insiders/ https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/

Commits:

  • Bump version from 0.35.0 to 0.36.0 (c74d77c)
  • Update to FastAPI 0.87 and Starlette 0.21 (b429f5c)

0.35.0 - 2022-11-26

Changes:

Update to FastAPI 0.86 (ab869dd)

This release will update/upgrade to FastAPI 0.86. This is a minor release to align with FastAPI's versioning strategy. Note that FastAPI 0.86 added support for Python 3.11.

Commits:

  • Bump version from 0.34.1 to 0.35.0 (50ba2be)
  • Update to FastAPI 0.86 (ab869dd)

0.34.1 - 2022-11-26

Commits:

  • Bump version from 0.34.0 to 0.34.1 (4994950)
  • Rename VSCode debugger config (20dd052)
  • Update to Flake8 6 (e5ab9ee)
  • Update dependencies (ab826e1)

0.34.0 - 2022-09-18

Changes:

Update to FastAPI 0.85 and Starlette 0.20 (0703e7c)

This release will update/upgrade to FastAPI 0.85 and Starlette 0.20. This is a minor release to align with FastAPI and Starlette versioning. Note that Starlette has dropped support for Python 3.6. inboard supports Python 3.8-3.10, so this is not a breaking change for inboard. https://github.com/tiangolo/fastapi/releases/tag/0.85.0 https://github.com/encode/starlette/releases/tag/0.20.0 https://github.com/encode/starlette/releases/tag/0.20.4

Commits:

  • Bump version from 0.33.0 to 0.34.0 (9fc7281)
  • Update to FastAPI 0.85 and Starlette 0.20 (0703e7c)

Note about Git commit and tag verification:

The email address bws@bws.bio and associated GPG key 783DBAF23C1D6478 have been used to sign Git commits and tags since 0.10.0 - 2021-05-20.

Git and GitHub now support commit signing and verification with SSH. The SSH key fingerprint SHA256:w+KL3qQKtku1MfLFSZLCl93kSgxH3O4OvtcxHG5k0Go will also be used to sign Git commits and tags going forward.

See @br3ndonland and br3ndonland/br3ndonland@08257e6 for corroboration of the new info.

0.33.0 - 2022-09-18

Changes:

Update to FastAPI 0.84 (c12ea2e)

This release will update/upgrade to FastAPI 0.84. This is a minor release to align with FastAPI's versioning strategy. Note that FastAPI has dropped support for Python 3.6. inboard supports Python 3.8-3.10, so this is not a breaking change for inboard. https://github.com/tiangolo/fastapi/releases/tag/0.84.0

Commits:

  • Bump version from 0.32.0 to 0.33.0 (871f492)
  • Update to FastAPI 0.84 (c12ea2e)

0.32.0 - 2022-09-18

Changes:

Update to FastAPI 0.83 (404df56)

This release will update/upgrade to FastAPI 0.83. This is a minor release to align with FastAPI's versioning strategy. https://github.com/tiangolo/fastapi/releases/tag/0.83.0

Commits:

  • Bump version from 0.31.0 to 0.32.0 (fbfd228)
  • Update to FastAPI 0.83 (404df56)

0.31.0 - 2022-09-18

Changes:

Update to FastAPI 0.82 (6313b22)

This release will update/upgrade to FastAPI 0.82. This is a minor release to align with FastAPI's versioning strategy. https://github.com/tiangolo/fastapi/releases/tag/0.82.0

Commits:

  • Bump version from 0.30.0 to 0.31.0 (8a97844)
  • Update to FastAPI 0.82 (6313b22)

0.30.0 - 2022-09-18

Changes:

Update to FastAPI 0.81 (f66214a)

This release will update/upgrade to FastAPI 0.81. This is a minor release to align with FastAPI's versioning strategy. https://github.com/tiangolo/fastapi/releases/tag/0.81.0

Commits:

  • Bump version from 0.29.0 to 0.30.0 (28c6f6b)
  • Update to FastAPI 0.81 (f66214a)

0.29.0 - 2022-09-18

Update to FastAPI 0.80 (f8bd04a)

This release will update/upgrade to FastAPI 0.80. This is a minor release to align with FastAPI's versioning strategy. BREAKING CHANGE: response_model will now invalidate None. https://github.com/tiangolo/fastapi/releases/tag/0.80.0

Commits:

  • Bump version from 0.28.1 to 0.29.0 (eceeb09)
  • Update to FastAPI 0.80 (f8bd04a)
  • Update dependencies (cd301e6)

0.28.1 - 2022-09-04

Commits:

  • Bump version from 0.28.0 to 0.28.1 (d3982f1)
  • Update to Flake8 5 (28dc5e4)
  • Update dependencies (3536ab2)
  • Add justification section to docs and README (a807a11)
  • Add test case for Uvicorn log format (087efda)
  • Add changelog command to docs (8c474b6)

0.28.0 - 2022-07-30

Changes:

Update to FastAPI 0.79 (3a34076)

This release will update/upgrade to FastAPI 0.79. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.27.0 to 0.28.0 (dcfa947)
  • Update to FastAPI 0.79 (3a34076)
  • Update dependencies (121271a)

0.27.0 - 2022-07-09

Changes:

  • Use BuildKit for Docker builds (#54)

Commits:

  • Bump version from 0.26.1 to 0.27.0 (4f67d82)
  • Update dependencies (9d2bf9f)
  • Merge pull request #54 from br3ndonland/buildkit (5968ae2)
  • Relax Dockerfile syntax version specifier (79ce14e)
  • Update docker build --cache-from for inboard (8cc569f)
  • Add BUILDKIT_INLINE_CACHE Docker build argument (173fc51)
  • Use COPY --link to improve layer caching (1af4421)
  • Add heredoc examples and info to docs (d3c6f11)
  • Break heredoc across multiple stages (91cbd6f)
  • Refactor Dockerfile with heredoc syntax (cd22c8d)
  • Add Docker BuildKit info to CONTRIBUTING.md (64fc4a8)
  • Enable BuildKit in GitHub Actions (517fcf8)

0.26.1 - 2022-06-11

Commits:

  • Bump version from 0.26.0 to 0.26.1 (0452dde)
  • Update to pipx 1.1.0 (3437bdd)
  • Update dependencies (c0c7638)
  • Add example requirements files to docs (36fd603)
  • Remove <!-- prettier-ignore --> from docs (ff212f4)
  • Simplify CodeQL workflow (59e3dad)

0.26.0 - 2022-05-14

Changes:

This release will update/upgrade (whatever you call it) to FastAPI 0.78. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.25.0 to 0.26.0 (5eb3a12)
  • Update to FastAPI 0.78 (acb3533)

0.25.0 - 2022-05-14

Changes:

This release will upgrade to FastAPI 0.77 and Starlette 0.19. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.24.0 to 0.25.0 (ddd24f5)
  • Upgrade to FastAPI 0.77 and Starlette 0.19 (a41c20f)

0.24.0 - 2022-05-14

Changes:

This release will upgrade to FastAPI 0.76 and Starlette 0.18. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.23.2 to 0.24.0 (a39e595)
  • Upgrade to FastAPI 0.76 and Starlette 0.18 (5fb5aed)

0.23.2 - 2022-05-14

Commits:

  • Bump version from 0.23.1 to 0.23.2 (24a3da8)
  • Update dependencies (e7752b3)

0.23.1 - 2022-04-19

Commits:

  • Bump version from 0.23.0 to 0.23.1 (5f2d247)
  • Update dependencies (b6ab26c)
  • Update to FastAPI 0.75.2 (ea2fffa)
  • Update logging filter docs to use Docker image (342490c)
  • Merge pull request #51 from br3ndonland/drop-codecov (e2c8b74)
  • Raise coverage of tests to 100% (5143685)
  • Update GitHub Actions workflows for coverage.py (5b9beff)
  • Remove pytest-cov and just use coverage.py (829e862)
  • Update CONTRIBUTING.md for Codecov removal (71d2ede)
  • Swap Codecov badge for custom coverage badge (e078ea8)
  • Add Sourcery config file to set Python version (455dd65)
  • Update to v3 actions (6b73d75)
  • Update to codecov/codecov-action@v3 (b0f29a6)
  • Drop typing import from test_logging_conf.py (6624a43)

0.23.0 - 2022-04-02

Changes:

Add Python 3.10 support (#36)

  • Work began on Python 3.10 support nearly nine months ago.
  • inboard is now able to support Python 3.10.
  • The primary blockers were Poetry and pydantic.

Add configurable logging filter (#49)

  • Filters identify log messages to filter out, so that the logger does not log messages containing any of the filters. If any matches are present in a log message, the logger will not output the message.
  • The environment variable LOG_FILTERS can be used to specify filters as a comma-separated string, like LOG_FILTERS="/health, /heartbeat". To then add the filters to a class instance, the LogFilter.set_filters() method can make the set of filters from the environment variable value.
  • One of the primary use cases for log message filters is health checks. When applications with APIs are deployed, it is common to perform "health checks" on them. Health checks are usually performed by making HTTP requests to a designated API endpoint. These checks are made at frequent intervals, and so they can fill up the access logs with large numbers of unnecessary log records. To avoid logging health checks, add those endpoints to the LOG_FILTERS environment variable.

Support module paths for Gunicorn config files (e068622, 75b3a48)

  • Gunicorn accepts either file paths or module paths. Module paths are prefixed with "python:".
  • inboard will now support module paths (in addition to file paths) with the GUNICORN_CONF environment variable.
  • inboard will now use a module path as the default.

Commits:

  • Bump version from 0.22.0 to 0.23.0 (b1a6855)
  • Merge pull request #36 from br3ndonland/python-3.10 (7b2fdf6)
  • Update type annotations for Python 3.10 (f3fd95d)
  • Use Python 3.10 as default version in Dockerfile (760c071)
  • Add Python 3.10 to GitHub Actions workflows (1fbcdeb)
  • Merge pull request #49 from br3ndonland/logging-filter (97e35b7)
  • Refactor #49 with Sourcery (#50) (fba2fd2)
  • Add configurable logging filter (32792cd)
  • Update dependencies (80cbaf4)
  • Update pre-commit dependencies (0746175)
  • Resolve Black pre-commit hook ImportError (cb62817)
  • Add complete logging override example to docs (94d202b)
  • Use Python module path as gunicorn_conf default (75b3a48)
  • Set default PRE_START_PATH to None (8c8c6cf)
  • Move pydantic response models to main_fastapi.py (4990a2e)
  • Refactor test_main.py (e6a6060)
  • Remove the last # noqa: E501 Flake8 comment (21667c5)
  • Clarify pytest fixture request variable names (35d4d2c)
  • Support module paths for Gunicorn config files (e068622)

0.22.0 - 2022-03-06

Changes:

Add Docker tags for minor version numbers (a547b68)

  • The inboard version in the Python package doesn't automatically stay in sync with the inboard version in the Docker container. Some users may install the inboard Python package with a minor version constraint, like inboard==0.22.* for requirements.txt or inboard = "^0.22" for pyproject.toml with Poetry. The Docker images previously only offered exact version numbers.
  • This commit will add support for minor version numbers, so the Docker images can be specified with something like br3ndonland/inboard:fastapi-0.22.

Check pre-start script exit code (1a27553) (breaking change)

  • inboard optionally runs a pre-start script before starting the server. The path to a pre-start script can be specified with the environment variable PRE_START_PATH. If the environment variable is set to a nonzero value, inboard will run the script at the provided path, using the subprocess standard library package.
  • Previously, if the script exited with an error, inboard would continue starting the server. However, it may be preferable to stop the server if the pre-start script fails.
  • This commit will update the subprocess call to include check=True. If the pre-start script exits with an error, inboard will not start the server.
  • The behavior of successful pre-start script runs will not change. However, failed pre-start script runs will now exit with error codes, and prevent the server from starting.

This is a minor release to account for the potentially breaking change.

Commits:

  • Bump version from 0.21.0 to 0.22.0 (39b644a)
  • Add Docker tags for minor version numbers (a547b68)
  • Check pre-start script exit code (1a27553)

0.21.0 - 2022-03-05

Changes:

This release will upgrade to Uvicorn 0.17. This is a minor release to align with Uvicorn's versioning strategy.

Commits:

  • Bump version from 0.20.0 to 0.21.0 (5436443)
  • Upgrade to Uvicorn 0.17 (2d29e13)

0.20.0 - 2022-03-05

Changes:

This release will upgrade to Uvicorn 0.16. This is a minor release to align with Uvicorn's versioning strategy.

Commits:

  • Bump version from 0.19.0 to 0.20.0 (8b7f6da)
  • Upgrade to Uvicorn 0.16 (7cf41c4)

0.19.0 - 2022-03-05

Changes:

This release will upgrade to FastAPI 0.75. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.18.0 to 0.19.0 (c24eef0)
  • Upgrade to FastAPI 0.75 (82df92c)

0.18.0 - 2022-03-05

Changes:

This release will upgrade to FastAPI 0.74. This is a minor release to align with FastAPI's versioning strategy.

Note the important breaking change: The internal AsyncExitStack was updated so that dependencies with yield can now catch HTTPException and custom exceptions. See the docs for further details: https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/

Commits:

  • Bump version from 0.17.0 to 0.18.0 (f4cef1f)
  • Upgrade to FastAPI 0.74 (570ef57)

0.17.0 - 2022-03-05

Changes:

This release will upgrade to FastAPI 0.73. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.16.0 to 0.17.0 (c0af880)
  • Upgrade to FastAPI 0.73 (d9512bb)

0.16.0 - 2022-03-05

Changes:

This release will upgrade to FastAPI 0.72. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.15.0 to 0.16.0 (c8adeaf)
  • Upgrade to FastAPI 0.72 (66686fd)

0.15.0 - 2022-03-05

Changes:

This release will upgrade to FastAPI 0.71 and Starlette 0.17. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.14.0 to 0.15.0 (2a477d3)
  • Add PyPI trove classifier for FastAPI (b164470)
  • Upgrade to FastAPI 0.71 and Starlette 0.17 (d2f3295)

0.14.0 - 2022-03-05

Changes:

  • Install Poetry with pipx (#47)

Commits:

  • Bump version from 0.13.0 to 0.14.0 (d9207e9)
  • Update pre-commit dependencies (06a0a85)
  • Update to pytest 7 (7a3cd8f)
  • Update to stable Black (df6ce8d)
  • Update dependencies (f1cde24)
  • Update to Material for MkDocs 8 (8454308)
  • Update to mypy 0.9x (73d528b)
  • Update coverage.py concurrency configuration (0474074)
  • Update dependencies (c7c3b32)
  • Document musllinux binary package distributions (8fc950a)
  • Add virtualenvs.create setting to poetry.toml (5831c0e)
  • Don't install dev-dependencies for CodeQL (3c24b5e)
  • Run CodeQL with latest Python (4e15f78)
  • Remove Python version matrix from CodeQL workflow (5214051)
  • Test package version before publishing to PyPI (9a2cf80)
  • Remove POETRY_VIRTUALENVS_IN_PROJECT variables (b33af2a)
  • Disable Poetry experimental new installer (9476d5b)
  • Merge pull request #47 from br3ndonland/pipx-poetry (a4691bf)
  • Document installation of Poetry with pipx (ebd8454)
  • Install Poetry with pipx (af7bedd)

0.13.0 - 2021-10-23

Changes:

This release will upgrade to FastAPI 0.70 and Starlette 0.16. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.12.0 to 0.13.0 (48ae350)
  • Merge pull request #46 from br3ndonland/fastapi-0.70 (00f70f9) Upgrade to FastAPI 0.70 and Starlette 0.16
  • Upgrade to FastAPI 0.70 and Starlette 0.16 (9006a15)

0.12.0 - 2021-10-23

Changes:

This release will upgrade to FastAPI 0.69 and Starlette 0.15. This is a minor release to align with FastAPI's versioning strategy.

Commits:

  • Bump version from 0.11.0 to 0.12.0 (b5b2eab)
  • Merge pull request #45 from br3ndonland/fastapi-0.69 (93ac39a) Upgrade to FastAPI 0.69 and Starlette 0.15
  • Update dependencies (9935758)

0.11.0 - 2021-10-23

Changes include (most recent first):

  • Pin and test Poetry version
  • Drop toml dependency
  • Implement UVICORN_CONFIG_OPTIONS variable for catch-all config
  • Upgrade to Uvicorn 0.15, ensuring version-appropriate config options
  • Add support for Alpine and Debian "slim" Linux distributions

Commits:

  • Bump version from 0.11.0-beta.0 to 0.11.0 (dcfaa60)
  • Bump version from 0.11.0-alpha.3 to 0.11.0-beta.0 (a12f12a)
  • Update dependencies (e7a23df)
  • Use consistent substring match for Poetry version (74deab7)
  • Merge pull request #44 from br3ndonland/poetry-version (02066b3) Pin and test Poetry version
  • Pin and test Poetry version in Docker (036b57c)
  • Pin and test Poetry version in GitHub Actions (a38617d)
  • Document Rust Python extensions on Alpine Linux (c59805a)
  • Merge pull request #43 from br3ndonland/drop-toml (d7eb82a) Drop toml dependency
  • Drop toml dependency (619f63c)
  • Replace PAT with GITHUB_TOKEN for docker login (ddffe97)
  • Only run docker login when pushing to registry (809d413)
  • Fix typo in contributing.md (#42) (8900a7e)
  • Bump version from 0.11.0-alpha.2 to 0.11.0-alpha.3 (9745b25)
  • Clarify inboard.start._split_uvicorn_option (a93fcbb)
  • Ensure Uvicorn options are version-appropriate (242ff7a)
  • Bump version from 0.11.0-alpha.1 to 0.11.0-alpha.2 (792c263)
  • Merge pull request #41 from br3ndonland/uvicorn-config-options (fe582cb) Add UVICORN_CONFIG_OPTIONS environment variable for catch-all configuration
  • Document UVICORN_CONFIG_OPTIONS variable (509b4bf)
  • Implement UVICORN_CONFIG_OPTIONS variable (a8773b6)
  • Use pytest fixtures for test Uvicorn configs (2964358)
  • Remove mock_ prefixes from tests/test_start.py (0ef5dfc)
  • Strip spaces from both ends of RELOAD_DIRS (3808f2c)
  • Merge pull request #39 from br3ndonland/uvicorn-0.15 (043c929) Upgrade to Uvicorn 0.15 and implement new reload options
  • Update #39 with Sourcery refactorings from #40 (75b81a4)
  • Document new Uvicorn 0.15 reload config options (95fe201)
  • Implement new Uvicorn 0.15 reload config options (f4428dd)
  • Upgrade to Uvicorn 0.15 (ffb47df)
  • Clarify Debian slim Dockerfile example in docs (8b0ef55)
  • Bump version from 0.11.0-alpha.0 to 0.11.0-alpha.1 (7c4647d)
  • Merge pull request #38 from br3ndonland/slim (bac938a) Add support for Debian slim Docker images
  • Document how to use Debian slim Docker images (9389572)
  • Add support for Debian slim Docker images (582dcef)
  • Bump version from 0.10.4 to 0.11.0-alpha.0 (6f27dc7)
  • Document how to use Alpine Linux with inboard (86efc46)
  • Delete build dependencies from Alpine Linux images (d85200c)
  • Merge pull request #37 from br3ndonland/alpine (11dc393) Add support for Alpine Linux
  • Document support for Alpine Linux (41ae8b6)
  • Add support for Alpine Linux to GitHub Actions (a442b9f)
  • Add support for Alpine Linux to Dockerfile (c7d83e7)
  • Ensure Poetry is on $PATH in all Docker images (efe50b8)

0.11.0-beta.0 - 2021-10-11

Changes include:

  • Add support for Alpine and Debian "slim" Linux distributions
  • Upgrade to Uvicorn 0.15, ensuring version-appropriate config options
  • Implement UVICORN_CONFIG_OPTIONS variable for catch-all config
  • Drop toml dependency
  • Pin and test Poetry version

Commits:

  • Bump version from 0.11.0-alpha.3 to 0.11.0-beta.0 (a12f12a)
  • Update dependencies (e7a23df)
  • Use consistent substring match for Poetry version (74deab7)
  • Merge pull request #44 from br3ndonland/poetry-version (02066b3)
  • Pin and test Poetry version in Docker (036b57c)
  • Pin and test Poetry version in GitHub Actions (a38617d)
  • Document Rust Python extensions on Alpine Linux (c59805a)
  • Merge pull request #43 from br3ndonland/drop-toml (d7eb82a)
  • Drop toml dependency (619f63c)
  • Replace PAT with GITHUB_TOKEN for docker login (ddffe97)
  • Only run docker login when pushing to registry (809d413)
  • Fix typo in contributing.md (#42) (8900a7e)
  • Bump version from 0.11.0-alpha.2 to 0.11.0-alpha.3 (9745b25)
  • Clarify inboard.start._split_uvicorn_option (a93fcbb)
  • Ensure Uvicorn options are version-appropriate (242ff7a)
  • Bump version from 0.11.0-alpha.1 to 0.11.0-alpha.2 (792c263)
  • Merge pull request #41 from br3ndonland/uvicorn-config-options (fe582cb)
  • Document UVICORN_CONFIG_OPTIONS variable (509b4bf)
  • Implement UVICORN_CONFIG_OPTIONS variable (a8773b6)
  • Use pytest fixtures for test Uvicorn configs (2964358)
  • Remove mock_ prefixes from tests/test_start.py (0ef5dfc)
  • Strip spaces from both ends of RELOAD_DIRS (3808f2c)
  • Merge pull request #39 from br3ndonland/uvicorn-0.15 (043c929)
  • Update #39 with Sourcery refactorings from #40 (75b81a4)
  • Document new Uvicorn 0.15 reload config options (95fe201)
  • Implement new Uvicorn 0.15 reload config options (f4428dd)
  • Upgrade to Uvicorn 0.15 (ffb47df)
  • Clarify Debian slim Dockerfile example in docs (8b0ef55)
  • Bump version from 0.11.0-alpha.0 to 0.11.0-alpha.1 (7c4647d)
  • Merge pull request #38 from br3ndonland/slim (bac938a)
  • Document how to use Debian slim Docker images (9389572)
  • Add support for Debian slim Docker images (582dcef)
  • Bump version from 0.10.4 to 0.11.0-alpha.0 (6f27dc7)
  • Document how to use Alpine Linux with inboard (86efc46)
  • Delete build dependencies from Alpine Linux images (d85200c)
  • Merge pull request #37 from br3ndonland/alpine (11dc393)
  • Document support for Alpine Linux (41ae8b6)
  • Add support for Alpine Linux to GitHub Actions (a442b9f)
  • Add support for Alpine Linux to Dockerfile (c7d83e7)
  • Ensure Poetry is on $PATH in all Docker images (efe50b8)

0.11.0-alpha.3 - 2021-08-29

  • Bump version from 0.11.0-alpha.2 to 0.11.0-alpha.3 (9745b25)
  • Clarify inboard.start._split_uvicorn_option (a93fcbb)
  • Ensure Uvicorn options are version-appropriate (242ff7a)

0.11.0-alpha.2 - 2021-08-27

  • Bump version from 0.11.0-alpha.1 to 0.11.0-alpha.2 (792c263)
  • Merge pull request #41 from br3ndonland/uvicorn-config-options (fe582cb) Add UVICORN_CONFIG_OPTIONS environment variable for catch-all configuration
  • Document UVICORN_CONFIG_OPTIONS variable (509b4bf)
  • Implement UVICORN_CONFIG_OPTIONS variable (a8773b6)
  • Use pytest fixtures for test Uvicorn configs (2964358)
  • Remove mock_ prefixes from tests/test_start.py (0ef5dfc)
  • Strip spaces from both ends of RELOAD_DIRS (3808f2c)
  • Merge pull request #39 from br3ndonland/uvicorn-0.15 (043c929) Upgrade to Uvicorn 0.15 and implement new reload options
  • Update #39 with Sourcery refactorings from #40 (75b81a4)
  • Document new Uvicorn 0.15 reload config options (95fe201)
  • Implement new Uvicorn 0.15 reload config options (f4428dd)
  • Upgrade to Uvicorn 0.15 (ffb47df)
  • Clarify Debian slim Dockerfile example in docs (8b0ef55)

0.11.0-alpha.1 - 2021-08-14

  • Bump version from 0.11.0-alpha.0 to 0.11.0-alpha.1 (7c4647d)
  • Merge pull request #38 from br3ndonland/slim (bac938a)
  • Document how to use Debian slim Docker images (9389572)
  • Add support for Debian slim Docker images (582dcef)

0.11.0-alpha.0 - 2021-08-14

  • Bump version from 0.10.4 to 0.11.0-alpha.0 (6f27dc7)
  • Document how to use Alpine Linux with inboard (86efc46)
  • Delete build dependencies from Alpine Linux images (d85200c)
  • Merge pull request #37 from br3ndonland/alpine (11dc393)
  • Document support for Alpine Linux (41ae8b6)
  • Add support for Alpine Linux to GitHub Actions (a442b9f)
  • Add support for Alpine Linux to Dockerfile (c7d83e7)
  • Ensure Poetry is on $PATH in all Docker images (efe50b8)

0.10.4 - 2021-08-01

  • Bump version from 0.10.3 to 0.10.4 (e81b09e)
  • Upgrade to FastAPI 0.68 (741ece7)
  • Update dependencies (7ce0c24)

0.10.3 - 2021-07-22

  • Bump version from 0.10.2 to 0.10.3 (897b521)
  • Upgrade to FastAPI 0.67 (e46604b)
  • Update dependencies (1cf46b4)
  • Update to codecov-action@v2 and new uploader (2512d3c)
  • Update GitHub Container Registry URL to new format (8b9346c)
  • Use standard input for GitHub Actions Docker login (23ba613)
  • Don't push Python version tags from develop (b41768c)
  • Remove site_url and trailing slash from docs (9943112)
  • Revert "Set site_url for mkdocs" (ec2546c)
  • Add newlines between admonitions and code blocks (00a73b2)
  • Simplify CodeQL workflow (8eefab6)

0.10.2 - 2021-07-05

  • Bump version from 0.10.1 to 0.10.2 (9dc08a2)
  • Upgrade to Uvicorn 0.14 and Click 8.0 (ea77261)
  • Upgrade to FastAPI 0.66 (3255a26)
  • Update dependencies (709b9cf)
  • Use admonitions consistently in docs (15f3d1a)
  • Set site_url for mkdocs (36eca9d)
  • Move mkdocs-material to Poetry dev-dependencies (02e2ddd)

0.10.1 - 2021-06-09

  • Bump version from 0.10.0 to 0.10.1 (d565cfa)
  • Update to FastAPI 0.65.2 to patch CVE (7318243)

0.10.0 - 2021-05-20

  • Bump version from 0.9.5 to 0.10.0 (ab0e3db)
  • Update dependencies (6315cba)
  • Merge pull request #35 from br3ndonland/fastapi-0.65 (4cb2430)
  • Upgrade to FastAPI 0.65 and Starlette 0.14 (92326a2)
  • Update project author info (3c8a800)
  • Remove relative links from README (6ff9f08)
  • Revert "Include inboard logo in Python package" (0d06af1)

These changes merit a minor release for the following reasons:

  • Upgrading to FastAPI 0.65 and Starlette 0.14 may be a breaking change.
  • Project author info will be updated. The email address bws@bws.bio and associated GPG key 783DBAF23C1D6478 will be used going forward. See @br3ndonland and https://keybase.io/br3ndonland for corroboration of the new info.

0.9.5 - 2021-05-16

  • Bump version from 0.9.4 to 0.9.5 (1330702)
  • Include inboard logo in Python package (354ccdf)
  • Capitalize Poetry URL for Docker (08668d0)

0.9.4 - 2021-05-16

  • Bump version from 0.9.3 to 0.9.4 (c94687e)
  • Add docs URLs to README.md and CONTRIBUTING.md (407b45a)
  • Add Poetry URLs for Docker and docs (01dda30)
  • Merge pull request #34 from br3ndonland/docs (897ae29)
  • Add Vercel config (611b204)
  • Add authentication docs (c7b98dd)
  • Add logging configuration behavior and design docs (4abb085)
  • Refactor README.md and CONTRIBUTING.md into docs (eb8d592)
  • Add favicon from Material for MkDocs (8257c86)
  • Add inboard logo to docs (ebfb59d)
  • Add docs homepage (e0f9ed0)
  • Configure MkDocs site (22122c7)
  • Create MkDocs site (20065b8)
  • Add dependencies for docs (05202f5)

0.9.3 - 2021-05-08

  • Bump version from 0.9.2 to 0.9.3 (adcdecc)
  • Add awesome list badge to README (36216b8)
  • Update dependencies (f4d0db9)
  • Update FastAPI to 0.64 (2feeb74)
  • Update Black to 21.5b0 (bcf89c4)

0.9.2 - 2021-05-02

  • Bump version from 0.9.1 to 0.9.2 (6d34ecd)
  • Only use Gunicorn max_workers setting as a limit (f22c1dc)
  • Update mypy configuration file (73204fb)
  • Update dependencies (f0a63ff)
  • Update Black to 21.4b2 (dfb3044)

0.9.1 - 2021-04-19

  • Bump version from 0.9.0 to 0.9.1 (8364ec4)
  • Separate FastAPI and Starlette imports for __all__ (94879d4)

0.9.0 - 2021-04-18

  • Bump version from 0.8.2 to 0.9.0 (d5ba52a)
  • Merge pull request #33 from br3ndonland/__all__ (9f361a9)
  • Update LOGGING_CONFIG import in README example (b9b0f2f)
  • Add __all__ to __init__.py (827c1c7)
  • Update dependencies (aec2cf5)
  • Update repo tagline (2615802)
  • Update mypy configuration file (96132a6)
  • Shorten lines in GitHub Actions builds workflow (ebe9d9c)
  • Merge pull request #32 from br3ndonland/update-http-basic-auth (a0ab4d0)
  • Update HTTP Basic auth for FastAPI and Starlette (2630dea)
  • Merge pull request #31 from br3ndonland/conf-testing (c9dd974)
  • Clarify Gunicorn variable descriptions in README (40baca4)
  • Update links to pytest docs (aa243dd)
  • Test logger output after configuring logging (273f795)
  • Remove prefix from mocker objects in logger tests (9a61fc2)
  • Split up logging configuration method (373c98d)
  • Correct attribute error on module spec loader (0ba94fc)
  • Consolidate logging configuration method and tests (8cd8db2)
  • Use similar syntax to set up Gunicorn and Uvicorn (1b739ed)
  • Test Gunicorn settings (324f88f)
  • Organize Gunicorn settings (aaef2f0)
  • Refactor Gunicorn worker calculation and tests (315c1c1)
  • Move Gunicorn conf tests to separate module (d28753b)
  • Parametrize app module tests (35d6772)
  • Update flake8 pre-commit hook for new GitHub repo (d0174e5)

0.8.2 - 2021-04-04

  • Bump version to 0.8.2 (4893ad5)
  • Merge pull request #30 from br3ndonland/refactor-start-script (54b0f25)
  • Organize Gunicorn and Uvicorn server settings (ad39efe)

0.8.1 - 2021-04-04

  • Bump version to 0.8.1 (75676bb)
  • Update dependencies (d5ee6b0)
  • Add PyPI trove classifier for typed packages (27c18c4)
  • Update Poetry info in CONTRIBUTING.md (12a00a7)
  • Remove use of standard library bool class (43d3756)

0.8.0 - 2021-03-06

  • Bump version to 0.8.0 (dcf51c1)
  • Update dependencies (95d02e1)
  • Improve logging config typing and extension info (4a280ac)
  • Merge pull request #29 from br3ndonland/docker-start-path (b51193e)
  • Use module path for start script in Dockerfile (8d8ac47)
  • Merge pull request #28 from br3ndonland/logging-updates (a263822)
  • Remove mock logger pytest fixture (3c0e076)
  • Properly mock logger in inboard server tests (815a365)
  • Properly mock logger in pre-start script tests (23682a1)
  • Properly mock logger in app module tests (7b65853)
  • Properly mock logger in logging config tests (fcd7021)
  • Add GitHub Discussions link to CONTRIBUTING.md (b99b28a)
  • Add link to Docker intro site to CONTRIBUTING.md (892fd45)
  • Revert README HTML center alignment (cd4ae86)

0.7.4 - 2021-02-13

  • Bump version to 0.7.4 (89029d6)
  • Correct GitHub Actions Docker push step (8dfd6f3)
  • Add prestart path to Uvicorn debugger config (2178bd4)
  • Use paragraph tags to improve spacing in README (ff267d8)
  • Improve pydantic settings model (aa08fab)
  • Add FastAPI response models and status codes (409281e)
  • Create pytest fixture for pydantic settings model (bb088ac)
  • Use consistent names for tests in test_metadata.py (b6449af)
  • Update Uvicorn and FastAPI debugger configs (1f7e5d0)

0.7.3 - 2021-02-06

  • Bump version to 0.7.3 (9212f3f)
  • Use regex for CORS origins (6707159)
  • Load pyproject.toml into pydantic settings model (c862c3f)
  • Update dependencies (543b1fe)
  • Remove flaky importlib.metadata test (8b37585)
  • Download Poetry custom installer from Git HEAD (a03f1db)
  • Fix HTML syntax in README (b03f62d)
  • Update dependencies (8bbfd1c)
  • Merge pull request #24 from br3ndonland/docker-smoke-tests (70997b5)
  • Add Docker smoke tests with HTTPie (13f0d0b)

0.7.2 - 2021-01-30

  • Bump version to 0.7.2 (8cff451)
  • Merge pull request #23 from br3ndonland/master-to-main (cb94fa1)
  • Update GitHub Actions workflows for main branch (c03de3d)
  • Update CONTRIBUTING.md for main branch (7674081)
  • Merge pull request #22 from br3ndonland/logo (a060a4e)
  • Center align headings and badges in README (c217e9b)
  • Add inboard logo to README (5f2a094)

0.7.1 - 2020-12-21

  • Bump version to 0.7.1 (fef0a8c)
  • Upgrade to FastAPI 0.63 (646aad3)
  • Update dependencies (f6ac18b)
  • Update to Contributor Covenant v2.0 (0177132)

0.7.0 - 2020-12-20

  • Bump version to 0.7.0 (49f63b3)
  • Revert "Enable Starlette 0.14" (12eef2a)
  • Add new FastAPI VSCode debugger config (11524b6, 79f9e9c)
  • Update README (9a6751b, e82ba73, aa399ef)
  • Merge pull request #21 from br3ndonland/uvicorn-reload-dirs (a607d65) Implement Uvicorn reload_dirs
  • Merge pull request #20 from br3ndonland/fastapi!=starlette (e1e34c7) Improve separation between FastAPI and Starlette

0.6.1 - 2020-12-18

  • Bump version to 0.6.1 (7236cd5)
  • Update dependencies (49ccdf3)
  • Update test syntax for pytest 6.2 (77fe500)
  • Upgrade to pytest 6.2 (24f9372)

0.6.0 - 2020-11-28

  • Bump version to 0.6.0 (47b164e)
  • Flatten app directory (059c72a)
  • Build Python package with latest Python version (5f449e2)
  • Merge pull request #19 from br3ndonland/python-versions (b033732)
  • Use Python version matrix in Docker job (465c923)
  • Add info on specifying Python version to README (c14de7f)
  • Build Docker images for multiple Python versions (dc8da18)
  • Add Python version build argument to Dockerfile (69ebc5f)
  • Add Python version matrices for GitHub Actions (1a7a5ad)
  • Specify VSCode debugger port for Linux (d651a92)
  • Fix test of custom Gunicorn worker calculations (fabc7fc)
  • Add coverage.py multiprocessing config (2effdb0)
  • Update Prettier pre-commit hook (0cda29d)
  • Update dependencies (2ec6bf8)

0.5.9 - 2020-10-31

  • Bump version to 0.5.9 (f5eb570)
  • Update minimum pre-commit version to 2.8 (8ac4a34)
  • Migrate to new Prettier pre-commit repo (8866ab4)
  • Update .prettierignore to ignore venv (c2a5ddb)
  • Update GitHub Actions workflows to Python 3.9 (6f01d75)
  • Update Docker image to Python 3.9 (d9734b4)
  • Use more specific web server mocks (ac5ff70)
  • Make Python version syntax more flexible (6bf3abc)
  • Make all FastAPI and Starlette endpoints async (e3959b0)
  • Simplify conditionals in gunicorn_conf.py (4914a4b)
  • Update HTTPie info in README (1c45f19)
  • Update dependencies (e96e263)
  • Remove Docker SDK (d529e91)

0.5.8 - 2020-10-17

  • Bump version to 0.5.8 (b192f32)
  • Parse pyproject.toml for testing (ff00f0d)
  • Rename package metadata test module (0bf44e3)
  • Alphabetize GitHub Actions tests workflow branches (f859052)
  • Don't change directory if running VSCode debugger (1bcb9c8)
  • Explain how to disable pre-start script in README (16dca97)
  • Expand example logging_conf.py in README (d8d9af7)
  • Update release instructions in CONTRIBUTING.md (e9868d5)
  • Update dependencies (7143e26)

0.5.7 - 2020-10-10

git log --pretty=format:"- %s (%h)" 0.5.6..HEAD

  • Bump version to 0.5.7 (0a6692b)
  • Manage pre-commit with Poetry in GitHub Actions (84b25bc)
  • Add pytest-mock to pre-commit mypy dependencies (8c9081d)
  • Update dependencies (0b472d1)
  • Update type annotations in README logging config (d7ddb5e)
  • Disable Dependabot dependency updates (0bd02d1)
  • Update Poetry Docker command for custom installer (b10ace1)
  • Use absolute URLs in README (e585a88)
  • Merge pull request #18 from br3ndonland/github-actions-updates (83d09bd)
  • Run Docker builds on pull requests (023f4d5)
  • Remove deprecated GitHub Actions set-env syntax (05a36a8)
  • Simplify CodeQL workflow syntax (90abd1f)

0.5.6 - 2020-10-03

  • Bump version to 0.5.6 (0f35934)
  • Update docs (e5f18ff, 42d9e45, ded9841, ac859f0)
  • Update for Poetry 1.1.0 (#17, 600c951)
  • Update dependencies (#12, #13, #14, #15, #16, 059e28b, 13fa37d)

0.5.5 - 2020-09-21

  • Bump version to 0.5.5 (62f331b)
  • Restore pre-start logging (c6f446f)

0.5.4 - 2020-09-21

  • Bump version to 0.5.4 (6208d9c)
  • Use Optional[str] for values that could be None (9c79964)

0.5.3 - 2020-09-20

  • Bump version to 0.5.3 (00d336c)
  • Fix web concurrency Gunicorn worker calculation (fd60470)

0.5.2 - 2020-09-19

  • Bump version to 0.5.2 (edcc361)
  • Improve testing of server configuration (PR #11)
  • Run Dependabot updates on Saturdays (55baa72)
  • Update Docker image URLs for new GHCR pages (6b55bbc)

0.5.1 - 2020-09-15

  • Bump version to 0.5.1 (727181e)
  • Add OCI Docker labels (6750087)
  • Update README (894175c, 802b0dd, 82d4d8e)

0.5.0 - 2020-09-13

  • Add test coverage tooling (#7)
  • Increase unit test coverage to 100% (#8)

0.4.1 - 2020-09-11

  • Bump version to 0.4.1 (108bcda)
  • Add PyPI trove classifiers to pyproject.toml (782248a)
  • Add Poetry keywords to pyproject.toml (0341582)
  • Add py.typed file for PEP 561 compliance (d5f030f)
  • Use Poetry custom installer for GitHub Actions (23e097d)
  • Avoid creating Poetry virtualenv in GitHub Actions (2eed1fd)
  • Hard-code __token__ as PyPI username (b9538aa)
  • Add workflow_dispatch triggers to hooks and tests (89f9c17)
  • Add CodeQL code scanning (e50684e)

0.4.0 - 2020-09-07

  • Support both file and module paths for logging configs (b0a36de)
  • Use more specific Mypy ignore comments (f2b5419)
    • # type: ignore -> type: ignore[attr-defined]
  • Add error handling for start.set_conf_path (1c6a7ec)
  • Improve separation of Uvicorn and Gunicorn servers (735618a)
    • Make process_manager a required argument for start.start_server()
    • Only set Gunicorn conf path when running Gunicorn
  • Patch uvicorn.run with pytest-mock to manage server context (3906b3d)
  • Update README (a8c5d0e, eaf1d6a, bd26793, 68d86cf)
  • Update dependencies (a47c6fa, 28b9019, d2bab44, cc17974)
  • Add Dependabot for automated dependency updates (0582667)
  • Bump version to 0.4.0 (0734869)

0.3.0 - 2020-09-02

  • Remove unused pytest type ignores after upgrading to pytest 6 (3dc8085)
  • Refactor start.configure_logging for module path (ff9155a)
  • Bump version to 0.3.0 (db8a6ac)

0.2.2 - 2020-09-01

  • Install Pytest 6 (95178d2)
  • Update Python dependencies (223e078)
  • Bump version to 0.2.2 (7f642dc)

0.2.1 - 2020-09-01

  • Move latest tag to final workflow step (cf907fe)
  • Bump version to 0.2.1 (c47f545)

0.2.0 - 2020-09-01

Update Docker builds for GitHub Container Registry

  • #6
  • br3ndonland/inboard@723bc98
  • br3ndonland/inboard@f3d829c
  • br3ndonland/inboard@21c3bcd

0.1.3 - 2020-08-31

Bump version to 0.1.3 (51fc961)

0.1.2 - 2020-08-31

  • Update README (1ad6ba6)
  • Update FastAPI and Starlette tests (5b9706f, 397638e)

0.1.1 - 2020-08-31

  • Correct poetry publish command (681dc09)
  • Bump version to 0.1.1 (74900ab)

0.1.0 - 2020-08-31

  • Add Dockerfile with Poetry installation and multi-stage builds (#1)
  • Add app modules, Gunicorn config, and start scripts (#2)
  • Add logging configuration for Gunicorn and Uvicorn (#3)
  • Add unit test suite (#4)
  • Add GitHub Actions workflow for Python and Docker builds (#5)