Jonathan
bec888923a
Fix for ruff
2023-12-14 12:47:10 +11:00
Jonathan
c6235049c7
Add an unsharp mask node to core nodes
...
Unsharp mask is an image operation that, despite its name, sharpens an image. Like a Gaussian blur, it takes a radius and strength.
2023-12-14 12:47:10 +11:00
psychedelicious
e10f6e8962
fix(nodes): mark CalculateImageTilesInvocation as beta
...
missed this when I added classification
2023-12-13 20:33:25 -05:00
psychedelicious
461e474394
fix(nodes): fix embedded workflows with IDs
...
This model was a bit too strict, and raised validation errors when workflows we expect to *not* have an ID (eg, an embedded workflow) have one.
Now it strips unknown attributes, allowing those workflows to load.
2023-12-14 11:38:04 +11:00
psychedelicious
f0c70fe3f1
fix(db): add error handling for workflow migration
...
- Handle an image file not existing despite being in the database.
- Add a simple pydantic model that tests only for the existence of a workflow's version.
- Check against this new model when migrating workflows, skipping if the workflow fails validation. If it succeeds, the frontend should be able to handle the workflow.
2023-12-14 10:16:56 +11:00
psychedelicious
f76b04a3b8
fix(db): rename "SQLiteMigrator" -> "SqliteMigrator"
2023-12-13 11:31:15 +11:00
psychedelicious
cc18d86f29
Merge branch 'main' into feat/db/migrations
2023-12-13 11:24:55 +11:00
psychedelicious
c50a49719b
fix(db): raise a MigrationVersionError when invalid versions are used
...
This inherits from `ValueError`, so pydantic understands it when doing validation.
2023-12-13 11:21:16 +11:00
psychedelicious
ebf5f5d418
feat(db): address feedback, cleanup
...
- use simpler pattern for migration dependencies
- move SqliteDatabase & migration to utility method `init_db`, use this in both the app and tests, ensuring the same db schema is used in both
2023-12-13 11:19:59 +11:00
psychedelicious
d7cede6c28
chore/fix: bump fastapi to 0.105.0
...
This fixes a problem with `Annotated` which prevented us from using pydantic's `Field` to specify a discriminator for a union. We had to use FastAPI's `Body` as a workaround.
2023-12-13 09:48:34 +11:00
psychedelicious
2cdda1fda2
Merge remote-tracking branch 'origin/main' into feat/db/migrations
2023-12-12 17:22:52 +11:00
psychedelicious
3d64bc886d
feat(nodes): flag all tiled upscaling nodes as beta
2023-12-12 16:43:05 +11:00
psychedelicious
1a136d6167
feat(nodes): fix classification docstrings
2023-12-12 16:43:05 +11:00
psychedelicious
43f2837117
feat(nodes): add invocation classifications
...
Invocations now have a classification:
- Stable: LTS
- Beta: LTS planned, API may change
- Prototype: No LTS planned, API may change, may be removed entirely
The `@invocation` decorator has a new arg `classification`, and an enum `Classification` is added to `baseinvocation.py`.
The default is Stable; this is a non-breaking change.
The classification is presented in the node header as a hammer icon (Beta) or flask icon (prototype).
The icon has a tooltip briefly describing the classification.
2023-12-12 16:43:05 +11:00
psychedelicious
5f77ef7e99
feat(db): improve docstrings in migrator
2023-12-12 16:30:57 +11:00
Lincoln Stein
d277bd3c38
Merge branch 'main' into feat/enhance-model-db-migrate-script
2023-12-12 00:24:43 -05:00
Kevin Turner
fd4e041e7c
feat: serve HTTPS when configured with ssl_certfile
2023-12-12 16:01:43 +11:00
Lincoln Stein
15a3e8076f
Merge branch 'main' into feat/enhance-model-db-migrate-script
2023-12-11 23:10:04 -05:00
Lincoln Stein
b0cfa58526
allow the model record migrate script to update existing model records
2023-12-11 22:47:19 -05:00
psychedelicious
18ba7feca1
feat(db): update docstrings
2023-12-12 13:35:46 +11:00
psychedelicious
55b0c7cdc9
feat(db): tidy migration_2
2023-12-12 13:30:29 +11:00
psychedelicious
a69f518c76
feat(db): tidy dependencies for migrations
2023-12-12 13:09:09 +11:00
psychedelicious
0cf7fe43af
feat(db): refactor migrate callbacks to use dependencies, remote pre/post callbacks
2023-12-12 12:35:42 +11:00
psychedelicious
6063760ce2
feat(db): tweak docstring
2023-12-12 11:13:40 +11:00
psychedelicious
c5ba4f2ea5
feat(db): remove file backups
...
Instead of mucking about with the filesystem, we rely on SQLite transactions to handle failed migrations.
2023-12-12 11:12:46 +11:00
psychedelicious
3414437eea
feat(db): instantiate SqliteMigrator with a SqliteDatabase
...
Simplifies a couple things:
- Init is more straightforward
- It's clear in the migrator that the connection we are working with is related to the SqliteDatabase
2023-12-12 10:46:08 +11:00
psychedelicious
417db71471
feat(db): decouple SqliteDatabase from config object
...
- Simplify init args to path (None means use memory), logger, and verbose
- Add docstrings to SqliteDatabase (it had almost none)
- Update all usages of the class
2023-12-12 10:30:37 +11:00
psychedelicious
afe4e55bf9
feat(db): simplify migration registration validation
...
With the previous change to assert that the to_version == from_version + 1, this validation can be simpler.
2023-12-12 09:52:03 +11:00
psychedelicious
55acc16b2d
feat(db): require migration versions to be consecutive
2023-12-12 09:43:09 +11:00
skunkworxdark
f762940335
Merge branch 'main' into tiled-upscaling-graph
2023-12-11 16:57:36 +00:00
skunkworxdark
fefb78795f
- Even_spilt overlap renamed to overlap_fraction
...
- min_overlap removed * restrictions and round_to_8
- min_overlap handles tile size > image size by clipping the num tiles to 1.
- Updated assert test on min_overlap.
2023-12-11 16:55:27 +00:00
psychedelicious
290851016e
feat(db): move sqlite_migrator into its own module
2023-12-11 16:41:30 +11:00
psychedelicious
fa7d002175
fix(tests): fix typing issues
2023-12-11 16:22:29 +11:00
psychedelicious@windows
f1b6f78319
fix(db): fix windows db migrator tests
...
- Ensure db files are closed before manipulating them
- Use contextlib.closing() so that sqlite connections are closed on existing the context
2023-12-11 16:14:25 +11:00
psychedelicious
4f3c32a2ee
fix(db): remove errant print stmts
2023-12-11 16:14:25 +11:00
psychedelicious
41db92b9e8
feat(db): add check for missing migration from 0
2023-12-11 16:14:25 +11:00
psychedelicious
3227b30430
feat(db): extract non-stateful logic to class methods
2023-12-11 16:14:25 +11:00
psychedelicious
567f107a81
feat(db): return backup_db_path, move log stmt to run_migrations
2023-12-11 16:14:25 +11:00
psychedelicious
b3d5955bc7
fix(db): rename Migrator._migrations -> _migration_set
2023-12-11 16:14:25 +11:00
psychedelicious
8726b203d4
fix(db): fix migration chain validation
2023-12-11 16:14:25 +11:00
psychedelicious
b3f92e0547
fix(db): fix docstring
2023-12-11 16:14:25 +11:00
psychedelicious
72c9a7663f
fix(db): add docstring
2023-12-11 16:14:25 +11:00
psychedelicious
fcb9e89bd7
feat(db): tidy db naming utils
2023-12-11 16:14:25 +11:00
psychedelicious
56966d6d05
feat(db): only reinit db if migrations occurred
2023-12-11 16:14:25 +11:00
psychedelicious
e46dc9b34e
fix(db): close db conn before reinitializing
2023-12-11 16:14:25 +11:00
psychedelicious
e461f9925e
feat(db): invert backup/restore logic
...
Do the migration on a temp copy of the db, then back up the original and move the temp into its file.
2023-12-11 16:14:25 +11:00
psychedelicious
abeb1bd3b3
feat(db): reduce power MigrateCallback, only gets cursor
...
use partial to provide extra dependencies for the image workflow migration function
2023-12-11 16:14:25 +11:00
psychedelicious
83e820d721
feat(db): decouple from SqliteDatabase
2023-12-11 16:14:25 +11:00
psychedelicious
f8e4b93a74
feat(db): add migration lock file
2023-12-11 16:14:25 +11:00
psychedelicious
0710ec30cf
feat(db): incorporate feedback
2023-12-11 16:14:25 +11:00