{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":354465216,"defaultBranch":"develop","name":"fastenv","ownerLogin":"br3ndonland","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-04-04T05:39:22.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/26674818?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1714184596.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"76898d1c7cafd94a80d4f52e6c11bc0269d41ce0","ref":"refs/heads/github-actions-pypi-job","pushedAt":"2024-04-27T02:23:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"WIP: Use dedicated GitHub Actions job for PyPI","shortMessageHtmlLink":"WIP: Use dedicated GitHub Actions job for PyPI"}},{"before":"26fd927ff453929da8a164f0b2c63f86195d5721","after":"6bb820c41efdff9ba8284503bf1c8faa3837be3f","ref":"refs/heads/main","pushedAt":"2024-04-11T20:50:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Update changelog for version 0.5.0 (#33)\n\nAutomated changes by\r\n[create-pull-request](https://github.com/peter-evans/create-pull-request)\r\nGitHub action\r\n\r\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update changelog for version 0.5.0 (#33)"}},{"before":"ba8b49b7291aecc2d2fb256c8773fbcdf272e71a","after":null,"ref":"refs/heads/create-pull-request/0.5.0","pushedAt":"2024-04-11T20:43:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"}},{"before":"26fd927ff453929da8a164f0b2c63f86195d5721","after":"6bb820c41efdff9ba8284503bf1c8faa3837be3f","ref":"refs/heads/develop","pushedAt":"2024-04-11T20:43:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Update changelog for version 0.5.0 (#33)\n\nAutomated changes by\r\n[create-pull-request](https://github.com/peter-evans/create-pull-request)\r\nGitHub action\r\n\r\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update changelog for version 0.5.0 (#33)"}},{"before":null,"after":"ba8b49b7291aecc2d2fb256c8773fbcdf272e71a","ref":"refs/heads/create-pull-request/0.5.0","pushedAt":"2024-04-11T20:41:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Update changelog for version 0.5.0","shortMessageHtmlLink":"Update changelog for version 0.5.0"}},{"before":"ed436f90399ca8ca4821f8c4d29d0ae4cc5415ae","after":"26fd927ff453929da8a164f0b2c63f86195d5721","ref":"refs/heads/main","pushedAt":"2024-04-11T20:32:06.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Bump version from 0.4.2 to 0.5.0","shortMessageHtmlLink":"Bump version from 0.4.2 to 0.5.0"}},{"before":"7362541497bb975cb021552ebf2a0fe9a5cd0a99","after":"26fd927ff453929da8a164f0b2c63f86195d5721","ref":"refs/heads/develop","pushedAt":"2024-04-11T20:29:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Bump version from 0.4.2 to 0.5.0","shortMessageHtmlLink":"Bump version from 0.4.2 to 0.5.0"}},{"before":"47e02b7a3d1069b57776e8e14647dbbd94aefc9b","after":null,"ref":"refs/heads/fastapi","pushedAt":"2024-04-11T20:18:43.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"}},{"before":"1e8b89639bc1e6ad0badf5d1db9207d5d3077936","after":"7362541497bb975cb021552ebf2a0fe9a5cd0a99","ref":"refs/heads/develop","pushedAt":"2024-04-11T20:18:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Document and test FastAPI integration (#32)\n\nOne of the goals of this project as shown in the README is to unify\r\nsettings management for FastAPI. It would be helpful to provide a simple\r\nexample of how to integrate fastenv with a FastAPI app. The most common\r\nuse case for fastenv would be to load environment variables and settings\r\nwhen the FastAPI app starts up. The recommended way to customize app\r\nstartup and shutdown is with lifespan events.\r\n\r\nThis PR will add an example to the quickstart in the README that uses\r\n[lifespan events](https://fastapi.tiangolo.com/advanced/events/) with\r\n[lifespan state](https://www.starlette.io/lifespan/#lifespan-state).\r\nLifespan state is the recommended way to share objects between the\r\nlifespan function and API endpoints.\r\n\r\nCurrently, the lifespan function can only have one required argument for\r\nthe FastAPI or Starlette app instance. This is because of the way\r\nStarlette runs the lifespan function, as seen in the source code\r\n[here](https://github.com/encode/starlette/blob/4e453ce91940cc7c995e6c728e3fdf341c039056/starlette/routing.py#L732).\r\nThis is shown, but not explained, in the\r\n[FastAPI docs on lifespan events](https://fastapi.tiangolo.com/advanced/events/) -\r\nthe code examples use objects from outside the lifespan function by\r\ninstantiating them at the top-level of the module. Unfortunately this\r\nlimits lifespan event customization. For example, an application might\r\nwant a way to customize the dotenv file path or the object storage\r\nbucket from which the dotenv file needs to be downloaded. One way to\r\ncustomize the dotenv file path is to set an environment variable with\r\nthe dotenv file path, then pass the environment variable value into\r\n`fastenv.load_dotenv()`. This is demonstrated in the new tests.\r\n\r\nThe new tests will build on the example in the README by loading a\r\ndotenv file into a FastAPI app instance with `fastenv.load_dotenv()`.\r\nThe resultant `DotEnv` instance will then be accessed within an API\r\nendpoint by reading the lifespan state on `request.state`. As explained\r\nin the [Starlette lifespan docs](https://www.starlette.io/lifespan/),\r\nthe `TestClient` must be used as a context manager to trigger lifespan.\r\n\r\nhttps://github.com/br3ndonland/fastenv/discussions/28","shortMessageHtmlLink":"Document and test FastAPI integration (#32)"}},{"before":"4670b5be3cad2651a134cfe78cd2bedbe77ca1b4","after":"47e02b7a3d1069b57776e8e14647dbbd94aefc9b","ref":"refs/heads/fastapi","pushedAt":"2024-04-11T19:55:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Document and test FastAPI integration","shortMessageHtmlLink":"Document and test FastAPI integration"}},{"before":"468d34ac106a56e4efdcd704758d4d654178af38","after":"4670b5be3cad2651a134cfe78cd2bedbe77ca1b4","ref":"refs/heads/fastapi","pushedAt":"2024-04-11T04:22:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Document and test FastAPI integration","shortMessageHtmlLink":"Document and test FastAPI integration"}},{"before":"5cfac317b1f1da3d6a8db649eab63165c2269113","after":"468d34ac106a56e4efdcd704758d4d654178af38","ref":"refs/heads/fastapi","pushedAt":"2024-04-11T04:16:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Document and test FastAPI integration","shortMessageHtmlLink":"Document and test FastAPI integration"}},{"before":"5088300b946f709bf63b7476f1de860e268dd40f","after":"5cfac317b1f1da3d6a8db649eab63165c2269113","ref":"refs/heads/fastapi","pushedAt":"2024-04-11T03:58:56.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Document and test FastAPI integration","shortMessageHtmlLink":"Document and test FastAPI integration"}},{"before":"fa774b3affa1aa78a8449b5d69c009b2c9d9cab8","after":"5088300b946f709bf63b7476f1de860e268dd40f","ref":"refs/heads/fastapi","pushedAt":"2024-04-11T03:48:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Document and test FastAPI integration","shortMessageHtmlLink":"Document and test FastAPI integration"}},{"before":null,"after":"fa774b3affa1aa78a8449b5d69c009b2c9d9cab8","ref":"refs/heads/fastapi","pushedAt":"2024-04-11T03:13:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Document and test FastAPI integration","shortMessageHtmlLink":"Document and test FastAPI integration"}},{"before":"53464862ffcec4292cbee1407a32a471f43e9da8","after":"1e8b89639bc1e6ad0badf5d1db9207d5d3077936","ref":"refs/heads/develop","pushedAt":"2024-04-10T17:29:08.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Update to pytest 8\n\nhttps://docs.pytest.org/en/latest/changelog.html\n\nRelease notes for pytest 8 were written mostly for 8.0.0rc1 and 8.0.0rc2\ninstead of 8.0.0. 8.1.0 was yanked so 8.1.1 will be the minimum version.","shortMessageHtmlLink":"Update to pytest 8"}},{"before":"dda48fe27a09dca5eb68632a294976ea958c7630","after":null,"ref":"refs/heads/python-3.12","pushedAt":"2024-04-10T17:12:44.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"}},{"before":"ed436f90399ca8ca4821f8c4d29d0ae4cc5415ae","after":"53464862ffcec4292cbee1407a32a471f43e9da8","ref":"refs/heads/develop","pushedAt":"2024-04-10T17:12:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Add support for Python 3.12 (#31)\n\n- fastenv will now include a Python 3.12 classifier in its PyPI package\r\n- fastenv will now build and publish its PyPI package using Python 3.12\r\n- fastenv will now run tests with Python 3.12, in addition to 3.8-3.11","shortMessageHtmlLink":"Add support for Python 3.12 (#31)"}},{"before":null,"after":"dda48fe27a09dca5eb68632a294976ea958c7630","ref":"refs/heads/python-3.12","pushedAt":"2024-04-10T17:04:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Add support for Python 3.12\n\n- fastenv will now include a Python 3.12 classifier in its PyPI package\n- fastenv will now build and publish its PyPI package using Python 3.12\n- fastenv will now run tests with Python 3.12, in addition to 3.8-3.11","shortMessageHtmlLink":"Add support for Python 3.12"}},{"before":"ff9d56f6a511307af80eb15ade16dbf70fc52239","after":"ed436f90399ca8ca4821f8c4d29d0ae4cc5415ae","ref":"refs/heads/main","pushedAt":"2024-04-09T10:07:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Update changelog for version 0.4.2 (#30)\n\nAutomated changes by\r\n[create-pull-request](https://github.com/peter-evans/create-pull-request)\r\nGitHub action\r\n\r\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update changelog for version 0.4.2 (#30)"}},{"before":"18515c32c034850c8f2e9547af50458a5800ad82","after":null,"ref":"refs/heads/create-pull-request/0.4.2","pushedAt":"2024-04-09T09:48:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"}},{"before":"ff9d56f6a511307af80eb15ade16dbf70fc52239","after":"ed436f90399ca8ca4821f8c4d29d0ae4cc5415ae","ref":"refs/heads/develop","pushedAt":"2024-04-09T09:48:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Update changelog for version 0.4.2 (#30)\n\nAutomated changes by\r\n[create-pull-request](https://github.com/peter-evans/create-pull-request)\r\nGitHub action\r\n\r\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update changelog for version 0.4.2 (#30)"}},{"before":null,"after":"18515c32c034850c8f2e9547af50458a5800ad82","ref":"refs/heads/create-pull-request/0.4.2","pushedAt":"2024-04-09T09:45:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Update changelog for version 0.4.2","shortMessageHtmlLink":"Update changelog for version 0.4.2"}},{"before":"b396976bc5d4538615a6752f971b21f546ce946c","after":null,"ref":"refs/heads/wip","pushedAt":"2024-04-09T09:43:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"}},{"before":"6d6f5c9e44900e83fbdab80cee68596490413142","after":"ff9d56f6a511307af80eb15ade16dbf70fc52239","ref":"refs/heads/main","pushedAt":"2024-04-09T09:37:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Bump version from 0.4.1 to 0.4.2","shortMessageHtmlLink":"Bump version from 0.4.1 to 0.4.2"}},{"before":"6d6f5c9e44900e83fbdab80cee68596490413142","after":"ff9d56f6a511307af80eb15ade16dbf70fc52239","ref":"refs/heads/develop","pushedAt":"2024-04-09T09:27:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Bump version from 0.4.1 to 0.4.2","shortMessageHtmlLink":"Bump version from 0.4.1 to 0.4.2"}},{"before":"d668549ee52e13001d49a831267c4e29330964c6","after":"6d6f5c9e44900e83fbdab80cee68596490413142","ref":"refs/heads/main","pushedAt":"2024-04-09T09:24:44.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Avoid auto-inactivating GitHub Actions deployments\n\nThe GitHub REST API docs for deployments say, \"When you set the state of\na deployment to `success`, then all prior non-transient, non-production\nenvironment deployments in the same repository with the same environment\nname will become `inactive`. To avoid this, you can set `auto_inactive`\nto `false` when creating the deployment status.\"\n\nGitHub Actions auto-inactivates deployments. When a deployment\nenvironment is used from within a GitHub Actions workflow job with the\n`environment:` configuration syntax, GitHub Actions marks previous\ndeployments to that environment as `inactive`. This behavior is\nundocumented and there doesn't appear to be a way to configure it, but\nthere are some possible workarounds/hacks. One workaround could be using\nthe GitHub deployment statuses API to reactivate deployments of interest.\nhttps://docs.github.com/en/rest/deployments/statuses?apiVersion=2022-11-28\nAnother workaround for keeping deployments active could be through\ndeployment URLs. A GitHub community discussion comment hints, \"If the\nnew Deployment specifies an environment URL in the workflow definition,\nonly previous Deployments with the exact same environment URL will be\nauto-inactivated.\" This implies that deployments could stay active if\neach deployment got its own unique URL.\nhttps://github.com/orgs/community/discussions/67982#discussioncomment-7086962\n\nCommit 6e532c6 configured Python package publication to use PyPI OIDC\nwith GitHub Actions deployment environments. This commit will update the\nGitHub Actions workflow so that each deployment has its own unique URL.","shortMessageHtmlLink":"Avoid auto-inactivating GitHub Actions deployments"}},{"before":"845e8b283abaef7f35c3c870748662c2e578c7dd","after":"6d6f5c9e44900e83fbdab80cee68596490413142","ref":"refs/heads/develop","pushedAt":"2024-04-09T09:09:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"Avoid auto-inactivating GitHub Actions deployments\n\nThe GitHub REST API docs for deployments say, \"When you set the state of\na deployment to `success`, then all prior non-transient, non-production\nenvironment deployments in the same repository with the same environment\nname will become `inactive`. To avoid this, you can set `auto_inactive`\nto `false` when creating the deployment status.\"\n\nGitHub Actions auto-inactivates deployments. When a deployment\nenvironment is used from within a GitHub Actions workflow job with the\n`environment:` configuration syntax, GitHub Actions marks previous\ndeployments to that environment as `inactive`. This behavior is\nundocumented and there doesn't appear to be a way to configure it, but\nthere are some possible workarounds/hacks. One workaround could be using\nthe GitHub deployment statuses API to reactivate deployments of interest.\nhttps://docs.github.com/en/rest/deployments/statuses?apiVersion=2022-11-28\nAnother workaround for keeping deployments active could be through\ndeployment URLs. A GitHub community discussion comment hints, \"If the\nnew Deployment specifies an environment URL in the workflow definition,\nonly previous Deployments with the exact same environment URL will be\nauto-inactivated.\" This implies that deployments could stay active if\neach deployment got its own unique URL.\nhttps://github.com/orgs/community/discussions/67982#discussioncomment-7086962\n\nCommit 6e532c6 configured Python package publication to use PyPI OIDC\nwith GitHub Actions deployment environments. This commit will update the\nGitHub Actions workflow so that each deployment has its own unique URL.","shortMessageHtmlLink":"Avoid auto-inactivating GitHub Actions deployments"}},{"before":"f34784e6292378293bde8184d1f3b9640e3362ce","after":"b396976bc5d4538615a6752f971b21f546ce946c","ref":"refs/heads/wip","pushedAt":"2024-04-09T07:45:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"WIP","shortMessageHtmlLink":"WIP"}},{"before":"91189b5088c6982f3f4b743f95421e18eb877c7b","after":"f34784e6292378293bde8184d1f3b9640e3362ce","ref":"refs/heads/wip","pushedAt":"2024-04-09T07:39:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"br3ndonland","name":"Brendon Smith","path":"/br3ndonland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26674818?s=80&v=4"},"commit":{"message":"WIP","shortMessageHtmlLink":"WIP"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEO6WkjwA","startCursor":null,"endCursor":null}},"title":"Activity ยท br3ndonland/fastenv"}