All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
The project changed to CalVer
in September 2023.
FEATURES:
- Create catch-all/fallback route for UI app #932 ([@gabalafou] (https://github.com/gabalafou))
IMPROVEMENTS:
- MAINT - Bump base Docker image version #990 (@trallard)
- Bump cross-spawn from 7.0.3 to 7.0.5 in /docusaurus-docs #989 (@dependabot)
- MAINT - Update dependabot configuration #988 (@trallard)
- [MAINT] Update pydantic to >=2.0 #985 (@peytondmurray)
- MAINT - Do not use
nodefaults
moving forward #978 (@trallard) - Bump sqlalchemy version #970 (@soapy1)
BUG FIXES:
- DEV - Set traitlets application version #981 (@soapy1)
- [BUG] Fix python version compatibility issues affecting tests #973 (@peytondmurray)
- Update conda-package-build causes an integrity error on conda_package_build table #961 (@soapy1)
(GitHub contributors page for this release)
@dependabot | @gabalafou | @github-actions | @marcelovilla | @netlify | @nkaretnikov | @peytondmurray | @rigzba21 | @soapy1 | @trallard
- Bump k8 example version #960 (@soapy1)
- [pre-commit.ci] pre-commit autoupdate #959 (@pre-commit-ci)
- [DOC] Roadmap updates #958 (@peytondmurray)
- Move build to worker #945 (@soapy1)
- Fix link to GH issues for road map (operation) items #943 (@soapy1)
- Make conda-store server launch uvicorn with log level #940 (@soapy1)
- Add links to GH issues for roadmap items #939 (@soapy1)
- Move dependencies module into conda store server module #935 (@soapy1)
- [MAINT] Update lint tooling #933 (@peytondmurray)
- Remove unused _internal/client module #928 (@soapy1)
- [AUTO] Update openapi.json #927 (@github-actions)
- Add tests - storage + worker #926 (@soapy1)
- Move seeding tests functionality into test module #925 (@soapy1)
- Add coverage report to unit tests #923 (@soapy1)
- Update docs link #922 (@pavithraes)
- Test improvements - part 1 #919 (@soapy1)
- Bump http-proxy-middleware from 2.0.6 to 2.0.7 in /docusaurus-docs #917 (@dependabot)
- [BUG] Pin pyyaml dependency due to cython>=3 incompatibility #916 (@peytondmurray)
- Wait for celery to return response to request to solve specification #913 (@soapy1)
- [DOCS] Describe new config vars for React router #912 (@gabalafou)
- Bump version for dev #910 (@soapy1)
- REL - 2024.10.1 #909 (@soapy1)
- [DOCS] Update architecture diagram + fix docs links #908 (@soapy1)
- [ENH] Add hot reloading for development #907 (@peytondmurray)
- DEV - Extend compose to include target for local UI #905 (@trallard)
- Respect worker log level config setting #903 (@soapy1)
- [DOC] Update contributing guidelines #763 (@pavithraes)
(GitHub contributors page for this release)
@Adam-D-Lewis | @costrouc | @dependabot | @gabalafou | @github-actions | @jaimergp | @kcpevey | @krassowski | @netlify | @pavithraes | @peytondmurray | @pre-commit-ci | @soapy1 | @trallard
- [AUTO] Update openapi.json #904 (@github-actions)
- Create local conda-store dir for celery beat data files #902 (@soapy1)
- REACT_APP_URL_BASENAME #898 (@gabalafou)
- Bump cookie and express in /docusaurus-docs #896 (@dependabot)
- [BUG] Fix openapi.json generation workflow #891 (@peytondmurray)
- [MAINT] Add the 2024/2025 roadmap #890 (@peytondmurray)
- Revert "REL - 2024.9.1 (#880)" #887 (@peytondmurray)
- BUG - patch release workflow #885 (@trallard)
- Set logout url properly when using the integrated ui #884 (@dcmcand)
- update to latest miniforge image #883 (@Adam-D-Lewis)
- REL - 2024.9.1 #880 (@peytondmurray)
- [MAINT] Make github workflow format openapi.json #879 (@peytondmurray)
- BUG - Fix release workflows #878 (@trallard)
- Bump body-parser and express in /docusaurus-docs #873 (@dependabot)
- DEV - Update conda-store build hook #872 (@trallard)
- Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows #869 (@dependabot)
- [pre-commit.ci] pre-commit autoupdate #868 (@pre-commit-ci)
- Bump micromatch from 4.0.5 to 4.0.8 in /docusaurus-docs #867 (@dependabot)
- Bump webpack from 5.89.0 to 5.94.0 in /docusaurus-docs #866 (@dependabot)
- MAINT - Miscellaneous maintenance/governance tasks #865 (@trallard)
- [ENH] Allow fetching of arbitrary user environments #864 (@peytondmurray)
- Update
openapi.json
file path ingenerate_api_docs.yaml
#863 (@pavithraes) - [pre-commit.ci] pre-commit autoupdate #860 (@pre-commit-ci)
- [MAINT] Prevent workers from trying to parse sys.argv upon intialization #850 (@peytondmurray)
- MAINT - Add dependabot config #847 (@trallard)
- [MAINT] Remove deprecated docker-compose config option #846 (@peytondmurray)
- DEV - Set a canonical default Python version (3.12) #844 (@trallard)
- DEV - Simplify Docker images #841 (@trallard)
- restart workers after executing 10 tasks to mitigate memory leaks #840 (@Adam-D-Lewis)
- [pre-commit.ci] pre-commit autoupdate #839 (@pre-commit-ci)
- DEV - Update dev environments #838 (@trallard)
- BUG - Fix triggers #837 (@trallard)
- Bump braces from 3.0.2 to 3.0.3 in /docusaurus-docs #835 (@dependabot)
- MAINT - Mock out calls to
conda-lock
fortest_solve_lockfile
#834 (@peytondmurray) - MAINT - Mock out call to env solve in
test_generate_constructor_installer
#833 (@peytondmurray) - ENH - Update workflows triggers #832 (@trallard)
- DOC - Update documentation #831 (@trallard)
- REL - 2024.6.1 #829 (@peytondmurray)
- Add
conda config
warning docs/message; add duration log for actions #823 (@peytondmurray) - Build docker images for arm (aarch64) #822 (@aktech)
- Privatize internal conda-store API #820 (@peytondmurray)
- MAINT - Misc improvements to repo #802 (@trallard)
- Bump express from 4.18.2 to 4.19.2 in /docusaurus-docs #800 (@dependabot)
- Bump follow-redirects from 1.15.4 to 1.15.6 in /docusaurus-docs #785 (@dependabot)
- [DOC] Auto-generate openapi.json #782 (@pavithraes)
- Update metadata on landing page #774 (@pavithraes)
- Update conda-store explanations #726 (@pavithraes)
(GitHub contributors page for this release)
@Adam-D-Lewis | @aktech | @asmeurer | @costrouc | @dcmcand | @dharhas | @gabalafou | @jaimergp | @kcpevey | @nkaretnikov | @pavithraes | @peytondmurray | @soapy1 | @trallard
- Update runtime dependencies #827 (@peytondmurray)
- Add conda-store Usability Study Report.md #824 (@smeragoel)
- [pre-commit.ci] pre-commit autoupdate #819 (@pre-commit-ci)
- Run tests as separate jobs #813 (@nkaretnikov)
- Add user journey test for canceling a build #812 (@peytondmurray)
- Implement log flushing #808 ([@nkaretnikov](https://gith ub.com/nkaretnikov))
- Add user journey test to retrieve a lockfile for a build #807 (@peytondmurray)
- Add user journey test to mark build as active #804 (@peytondmurray)
- MAINT - Add conda-store dependencies to pyproject.toml #798 (@trallard)
- Add user journey test to check that logs can be found for failed builds #797 (@peytondmurray)
- 🔧 Update .pre-commit-config #796 (@trallard)
- MAINT - Bump actions versions #795 (@trallard)
- Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /docusaurus-docs #794 (@dependabot)
- Add conda recipe with verification workflow #793 (@jaimergp)
- Make conda_flags configurable #790 (@patrix58)
- Added user journey test to delete old environment #787 (@peytondmurray)
- Set
CONDA_STORE_DIR
toplatformdirs.user_data_path
#786 (@nkaretnikov) - Update docs theme #784 (@pavithraes)
- [pre-commit.ci] pre-commit autoupdate #781 (@pre-commit-ci)
- Add CHANGELOG entries for v2024.3.1 #779 (@pavithraes)
- REL - 2024.3.1 #778 (@pavithraes)
- Support hash-only build paths #777 (@nkaretnikov)
- Add user journey for logging in and deleting shared environment #776 (@peytondmurray)
- Document user personas #773 (@pavithraes)
- Add ability to create environment from lockfile #772 (@nkaretnikov)
- Create temp REST API reference #766 (@pavithraes)
- [DOC] Add JupyterLab Extension docs page #752 (@pavithraes)
- Add standalone installation docs #724 (@pavithraes)
(GitHub contributors page for this release)
@asmeurer | @costrouc | @dependabot | @jaimergp | @kcpevey | @netlify | @nkaretnikov | @patrix58 | @pavithraes | @peytondmurray | @pre-commit-ci | @smeragoel | @trallard
- Add upstream contribution policy by @pavithraes in conda-incubator#722
- Pass
CONDA_OVERRIDE_CUDA
towith_cuda
of conda-lock by @nkaretnikov in conda-incubator#721 - Add backwards compatibility policy by @dcmcand in conda-incubator#687
- add how to test section to PR template by @dcmcand in conda-incubator#743
- Add extended-length prefix support by @nkaretnikov in conda-incubator#713
- Generate
constructor
artifacts by @nkaretnikov in conda-incubator#714 - Add support for the
editor
role by @nkaretnikov in conda-incubator#738 - Add a test for parallel builds, fix race conditions due to the shared conda cache by @nkaretnikov in conda-incubator#745
- Add user journey test by @dcmcand in conda-incubator#760
- Add status
CANCELED
by @nkaretnikov in conda-incubator#747 - [DOC] Document setting environment variable by @pavithraes in conda-incubator#765
- Log address and port, show exception trace from
uvicorn.run
by @nkaretnikov in conda-incubator#708 - Check if worker is initialized by @nkaretnikov in conda-incubator#705
(GitHub contributors page for this release)
@nkaretnikov | @dcmcand | @pavithraes | @dependabot| @trallard
- MAINT - Add plausible tracking snippet #716 (@pavithraes)
- ENH - Terminate worker tasks on SIGINT #709 (@nkaretnikov)
- DOC -Add brand and design guidelines #701 (@pavithraes)
- DOC - Misc clean-up docs structure #700 (@pavithraes)
- MAINT - Remove Sphinx docs #695 (@pavithraes)
- DOC - Add basic conda-store-ui docs #694 (@pavithraes)
- ENH - Set channel priority to strict, print config info #693 (@nkaretnikov)
- DEV - Place a bound on docker-py #689 (@nkaretnikov)
- ENH - Check the size of
build_path
#653 (@nkaretnikov) - ENH - Use shorter
build_key
#652 (@nkaretnikov) - ENH - Windows support #640 (@nkaretnikov)
- ENH - Store the state and database files in ~/.conda-store by default #639 (@nkaretnikov)
- ENH - Change API to be able to assign roles to namespaces #607 (@nkaretnikov)
- ENH - Adding build canceling (only works with compatible celery brokers redis and rabbitmq) #531 (@costrouc)
- ENH - Use string substitution in
normalized_channel_url
#710 (@nkaretnikov) - MAINT - Bump the npm_and_yarn group group in /docusaurus-docs with 1 update #706 (@dependabot)
- MAINT - Update npm dependencies for Docusaurus v3 #704 (@pavithraes)
- DOC - Basic migration of conda-store (core) docs #685 (@pavithraes)
- DEV - Disable code that depends on conda-docker #667 (@nkaretnikov)
- BUG - Remove links to changelog #698 (@trallard)
- ENH - replace port 5000 with port 8080 #642 (@dcmcand)
(GitHub contributors page for this release)
@amjames | @anirrudh | @asmeurer | @costrouc | @dcmcand | @dependabot | @dharhas | @iameskild | @jaimergp | @kcpevey | @netlify | @nkaretnikov | @pavithraes | @pierrotsmnrd | @smeragoel | @trallard
- BUG - Add missing permissions for publishing #637 (@trallard)
- DEV - Add build check and test release workflow #636 (@trallard)
- REL - 2023.10.1 #635 (@trallard)
- ENH - Use miniforge throughout #634 (@trallard)
- DEV - Add python-docker #633 (@trallard)
- DEV - optimize docker files #625 (@dcmcand)
- DOC - Tone and grammar improvements to templates #624 (@trallard)
- Bump @babel/traverse from 7.22.10 to 7.23.2 in /docusaurus-docs #623 (@dependabot)
- Bug fix: use context manager for Sessions #622 (@nkaretnikov)
- DEV - update conda store dockerfile to have prod target #621 (@dcmcand)
- MAINT - remove extra redis and move to using built images for examples #620 (@dcmcand)
- DOC - Add alembic example for postgres in docker #610 (@nkaretnikov)
- Bump postcss from 8.4.27 to 8.4.31 in /docusaurus-docs #609 (@dependabot)
- MAINT - Update release docs and add issue template #608 (@trallard)
- [DOC] Add Community documentation #579 (@pavithraes)
- MAINT - Add a macOS worker to the CI #550 (@asmeurer)
- DEV - Better handling of pydantic error msgs #546 (@pierrotsmnrd)
(GitHub contributors page for this release)
@asmeurer | @costrouc | @dcmcand | @dependabot | @dharhas | @iameskild | @jaimergp | @kcpevey | @netlify | @nkaretnikov | @pavithraes | @pierrotsmnrd | @trallard
- ENH - Make conda-store-server test port configurable (#571) [Kim Pevey]
- DOC - Update homepage to include project details (#565) [Kim Pevey, Pavithra Eswaramoorthy]
- [DOCS] Create multiple sidebars structure (#558) [Pavithra Eswaramoorthy]
- Make tests use a temporary directory for conda environments (#549) [Aaron Meurer]
- Set up Docusaurus (#534) [Pavithra Eswaramoorthy]
- Add a favicon to the docs and the conda-store server UI (#523) [Aaron Meurer, Chris Ostrouchov]
- Add trailing slash to avoid redirects (#500) [ClaytonAstrom, castrom]
- 🔧 Create new docs env (#533) [Pavithra Eswaramoorthy]
- Adding support for cleaning up builds stuck in BUILDING state (#530) [Christopher Ostrouchov]
- Adding additional routes for conda-lock lockfile (#526) [Christopher Ostrouchov]
- Allow setting a subdomain cookie for conda-store (#509) [Christopher Ostrouchov]
- MAINT - Add security policy. [Tania Allard]
- Add pre-commit (#479) [john lee]
- Adding incremental updates to the logs (#487) [Christopher Ostrouchov]
- Adding an api method for getting usage data for namespaces (#486) [Christopher Ostrouchov]
- Adding global/namespace/environment settings with api/ui and tests (#485) [Christopher Ostrouchov]
- Adding tests that test traitlets for conda-store-server (#484) [Christopher Ostrouchov]
- Adding tests for fastapi server without need for integration (#483) [Christopher Ostrouchov]
- MAINT - Update pre-commit hooks (#577) [Kim Pevey, Tania Allard]
- Handle argv in pytest fixture (#557) [Stephannie Jimenez]
- Fix some spelling errors in the PR template (#555) [Aaron Meurer]
- Allow all channels by default (#545) [Nikita Karetnikov]
- Don't run conda-docker on Mac (#539) [Aaron Meurer]
- Make the disk_usage() function work on macOS (#537) [Aaron Meurer]
- Bugfix to allow backwards compatibility on metadata_ (#527) [Christopher Ostrouchov]
- Fixing vault role and paths (#525) [Christopher Ostrouchov]
- Fixing docker builds on main (#503) [Christopher Ostrouchov]
- Fixing docker builds temporarily by creating single image (#488) [Christopher Ostrouchov]
- Fix #476 : delete dangling build artifacts before migration (#477) [Pierre-Olivier Simonard]
- Pin SQLAlchemy <=1 .4.47 (#480) [Pierre-Olivier Simonard]
- Fixing username for pipeline. [Chris Ostrouchov]
- Update build metadata on deletion, fix misc bugs (#572) [Nikita Karetnikov]
- Fix migration of artifact type for postgres (#574) [Pierre-Olivier Simonard]
- ENH - Return legacy lockfile if key is empty (#553) [Nikita Karetnikov]
- Update LICENSE attribution (#564) [Pavithra Eswaramoorthy]
- MAINT - Update release.yaml to use trusted publishing (#542) [Anirrudh Krishnan]
- Delete subdomain keys on logout (#541) [Anirrudh Krishnan]
- Update release docs to reflect pyproject.toml changes. [Chris Ostrouchov]
- MAINT - Update issue and PR templates. [Tania Allard]
- Update repository URL (#518) [Stephannie Jimenez Gacha]
- Add python-docker as an explicit dependency in environment.yml (#524)
[Aaron Meurer]
- Proper handling of sqlalchemy database sessions in fastapi and celery (#522) [Christopher Ostrouchov]
- API : update a namespace's metadata and role mappings (#508) [Pierre- Olivier Simonard]
- Change the tests when using sqlite to not check threads (#505) [Christopher Ostrouchov]
- Better error messages around pip packages (#504) [Christopher Ostrouchov]
- Removing use of old lockfile format using newer conda-lock.yml format (#501) [Christopher Ostrouchov, Pierre-Olivier Simonard]
- Role mapping (#496) [Chris Ostrouchov, Pierre-Olivier Simonard]
- Push images for main (#474) [john lee]
- Reworking on celery tasks into actions (#473) [Christopher Ostrouchov]
- Changing the vault url (#472) [Christopher Ostrouchov]
- conda-store and conda-store-server images are now deployed to quay.io/Quansight, which has support for podman and rkt. (#455)
- Parallel builds of conda environments (#417)
- Switch to green theme by default for conda-store UI (#463)
- Fix for use environment stats (#466)
- make conda-store-ui settings configurable (were previously hardcoded and broken) (#451)
- Added new conda-store-ui (#444)
- Added new option
CondaStore.conda_indexed_channels
for indexed channels (#445) - Allow passing environment variables in specification (#424)
- Switched to hatch for conda-store and conda-store-server (#449, #450)
- Switch default UI to conda-store-ui and expose behind
/admin/
(#448) - Significant database rework on package storage for performance (#300)
- Remove unused helm chart (#450)
- Remove nix flakes from repository (#443)
- environment description is optional
- Make symlink path configurable for builds on filesystem #388
- Redirect on login and cookie handling #381
- Visually split the namespace with bootstrap bit #374
- Make image name and tag configurable for uploads to registries #380
- including package_data #379
conda-store-server --standalone
now runs conda-store-server without any service dependencies (#378, #376)- Initial helm chart skeleton still work to be done to have official helm chart
- Bug in LocalStorage implmentation #376
- Bug in docker builds when pushed to container registries #377
- CORS endpoint error on login when using POST #375
- push/pull container images to/from additionall registries (#370)
- adding description associated with environments #363
- Adding shebang support for conda-store (#362)
- Fixed example demo for docker
- Fixing docker registry implementation in conda-store (#368)
- Adding authentication behind docker registry (#369)
- Adding additional query parameters environment_id, namespace, name in list api methods in build/environment #350
- Adding ability to sort based on start/schedule/ended for list builds #352
- Adding repo.anaconda.com to default channels #354
- Empty list for conda_allowed_channels now will allow any channel #358
- Changed docker images to no longer run as root by default #355
- Added
c.CondaStoreServer.template_vars
for easy customization #347 - Consistent naming of
conda-store
throughout project #345 - Adding token endpoint #335
- Adding token UI create button #348
- Bug with user being able to modify
c.RBACAuthorizationBackend.authenticated_role_bindings
#346
- Adding cli command
solve
to call remote conda solve api (#329) - New filters for build and environment api calls status, artifact, package (#329)
- Adding Alembic migration integration (#314)
wait
option in cli for waiting on artifacts and builds (#328)list build
command (#328)- tests for client conda-store (#328)
- issue with caching option in run command (#328)
- api now exposes the build_artifacts field on
api/v1/build/<build-id>/
- fixed release process using build toolchain
- Command line client for conda-store (#327)
- Adding searchbar for UI (#326)
- OpenAPI specification in documentation
- Added namespace query parameter to
/api/v1/environment/?namespace=
(#324)
- Transition to FastAPI for web server from Flask (#277) end user API should not have changed
conda_store_server.server.auth.Authentication.authenticate
is now anasync
method receiving a Starlette request object
- Adding PyPi validation for included, required, and default packages (#292)
- Creating a Conda solve API endpoint (#279)
- Fully tested API for
/api/v1/...
endpoints (#281)
- Support for valid
pip
options inenvironment.yaml
(#295)
- Debug mode now controlled by CondaStoreServer.log_level
- Make concurrency setting optional in configuration
- Sort namespaces in create environment UI button
- Allow cookies cross domain
- Correct default namespace for POST /api/v1/specification/
- Account for None, "" values within namespace POST in
/api/v1/specification
#274
- API endpoint
/api/v1/permission/
and UI user endpoint showing user permissions #271
- better error messages when user not authenticated #261
- conda package builds independent from conda package download #258
- exact search route for conda-store api in packages #264
- adding lockfile to conda-store to provide a short term fix around conda/mamba concurrency issue #268
CondaStore.conda_...
options for managing channels and packages in specification #256- Ability to modify/validate specifications server side #252
- Concurrency option for conda-store celery worker #250
- Flask webserver has a
CondaStore.behind_proxy
option to properly handle X-Forward- headers #249 - Docker layer chaching to CI for docker image builds #234
buildId
parameter in/api/v1/environment/<namespace>/<name>/
changed tobuild_id
#251
build_id
response toPOST /api/v1/specification
route #244- Added a validation for namespaces that is more flexible # 233
- Added ability to use via
nix run github:quansight/conda-store ...
#232 - API endpoints now return channel name instead of id #231
- Flask paths now support routes with and without a trailing slash #230
- Adding support for templates for build and environment symlink directories
- Adding support for internal and external secure settings
- Error in build url with extra
/
in environment page
- Ensure compatibility with keycloak authentication flow
- Support for custom
GenericOAuthAuthentication.oauth_callback_url
- Support for optional tls_verification on oauth2 flow
GenericOAuthAuthentication.tls_verify
- Testing to support mysql database
- setting fixed sizes to Unicode columns
- api endpoint for exporting yaml environment files #204
- using Unicode sqlalchemy column instead of String
- removed typer as a dependency
- removed hardcoded path for conda executable
- environment creation endpoint with namespaces
- removed psycopg2 as a dependency #206
- validate that config_file exists #223
- missing dependency in
conda-store-server/setup.py
yarl
- added ability to search within the
/api/v1/build/<build-id>/package/
path #193 - environments and namespaces no longer show up in API and UI when soft deleted #194
docker-compose.yaml
inexamples/docker
now compatible with 2.0 #195- flask templates now included in the PyPi packages #196
- support for credentials supplied for object storage including IAM credentials #176
- namespace UI to conda-store server #183
- create/read/delete methods for namespaces
/api/v1/namespace/
#181 - distinct_on query parameter to list REST API methods #164
- adding sorting query parameter to list REST API methods #162
- ability to filter Conda packages by build parameter #156
- delete environments and all related builds from REST API #154
- initial support for pagination for all list REST API methods #126
- support for filtering environments by name #125
- working Kubernetes deployment example #116
- significant documentation effort via multiple PRs
- namespace parameter in JSON POST request to
/api/v1/specification/
#178 - API route for listing packages within build instead of including within build API response #157
- database relationship between build, environments, and namespaces improved #153
- adding conda-store gator extension to
example/docker
#165 - get query count before applying limits to query #159
This is the beginning of the changelog. Here I will list the most notable things done in the past 3-6 months.
- complete authentication and RBAC based authorization modeled after JupyterHub authentication model #97
- support for a namespace associated with environments and builds #96
- testing of conda-store UI via cypress #111
- delete and update buttons immediately update status #107
- support for dummy authentication and OAuth2 (GitHub + JupyterHub) authentication #103
- delete method for conda-store builds #94
- support for url prefix #109
- docker button says click to copy to clipboard #110
- enabling rollbacks of environment builds #93
- adding
conda env export
for pinned YAML file #92 - celery integration for true task based builds #90
- conda-store configuration is configured via Traitlets #87
- Prometheus metrics endpoint #84
- help button in top right hand corner #83
- support for internal and external url for s3 bucket #81
- use Micromamba for environment builds by default #66
- download repodata compressed #76
- only show artifacts once it has been built #113
- true parallel builds and retry if Conda channel update fails #114
- SQLAlchemy connection leak to database #105