diff --git a/CHANGELOG.md b/CHANGELOG.md index c2c22c1..56c0b47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,11 @@ This project uses [towncrier](https://towncrier.readthedocs.io/) and the changes +## [0.1.4](https://github.com/devqubit-labs/devqubit/releases/tag/v0.1.4) - 2026-01-11 + +#### Fixed +- Fix top-level imports from devqubit_ui by exposing run_server and create_app. ([#9](https://github.com/devqubit-labs/devqubit/pull/9)) + ## [0.1.3](https://github.com/devqubit-labs/devqubit/releases/tag/v0.1.3) - 2026-01-10 #### Fixed diff --git a/packages/devqubit-braket/pyproject.toml b/packages/devqubit-braket/pyproject.toml index b24facd..c07ea1f 100644 --- a/packages/devqubit-braket/pyproject.toml +++ b/packages/devqubit-braket/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "devqubit-braket" -version = "0.1.3" +version = "0.1.4" description = "devqubit adapter for Braket" readme = "README.md" license = "Apache-2.0" @@ -26,7 +26,7 @@ classifiers = [ dependencies = [ "amazon-braket-sdk>=1.107,<2", - "devqubit-engine>=0.1.3,<0.2.0", + "devqubit-engine>=0.1.4,<0.2.0", ] [project.entry-points."devqubit.adapters"] diff --git a/packages/devqubit-cirq/pyproject.toml b/packages/devqubit-cirq/pyproject.toml index a96a474..7838b70 100644 --- a/packages/devqubit-cirq/pyproject.toml +++ b/packages/devqubit-cirq/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "devqubit-cirq" -version = "0.1.3" +version = "0.1.4" description = "devqubit adapter for Cirq" readme = "README.md" license = "Apache-2.0" @@ -26,7 +26,7 @@ classifiers = [ dependencies = [ "cirq>=1.6,<2", - "devqubit-engine>=0.1.3,<0.2.0", + "devqubit-engine>=0.1.4,<0.2.0", "ply>=3.11", ] diff --git a/packages/devqubit-engine/pyproject.toml b/packages/devqubit-engine/pyproject.toml index bc8ad62..31f6bce 100644 --- a/packages/devqubit-engine/pyproject.toml +++ b/packages/devqubit-engine/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "devqubit-engine" -version = "0.1.3" +version = "0.1.4" description = "Internal core runtime for devqubit" readme = "README.md" license = "Apache-2.0" diff --git a/packages/devqubit-pennylane/pyproject.toml b/packages/devqubit-pennylane/pyproject.toml index af318b8..ff2b076 100644 --- a/packages/devqubit-pennylane/pyproject.toml +++ b/packages/devqubit-pennylane/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "devqubit-pennylane" -version = "0.1.3" +version = "0.1.4" description = "devqubit adapter for Pennylane" readme = "README.md" license = "Apache-2.0" @@ -25,7 +25,7 @@ classifiers = [ ] dependencies = [ - "devqubit-engine>=0.1.3,<0.2.0", + "devqubit-engine>=0.1.4,<0.2.0", "pennylane>=0.43,<0.44", ] diff --git a/packages/devqubit-qiskit-runtime/pyproject.toml b/packages/devqubit-qiskit-runtime/pyproject.toml index f28a246..ea049bb 100644 --- a/packages/devqubit-qiskit-runtime/pyproject.toml +++ b/packages/devqubit-qiskit-runtime/pyproject.toml @@ -4,13 +4,13 @@ build-backend = "hatchling.build" [project] name = "devqubit-qiskit-runtime" -version = "0.1.3" +version = "0.1.4" description = "devqubit adapter for Qiskit Runtime" readme = "README.md" requires-python = ">=3.11,<3.14" dependencies = [ - "devqubit-engine>=0.1.3,<0.2.0", - "devqubit-qiskit>=0.1.3,<0.2.0", + "devqubit-engine>=0.1.4,<0.2.0", + "devqubit-qiskit>=0.1.4,<0.2.0", "qiskit-ibm-runtime>=0.44,<0.45", ] diff --git a/packages/devqubit-qiskit/pyproject.toml b/packages/devqubit-qiskit/pyproject.toml index 715e747..bb02a5a 100644 --- a/packages/devqubit-qiskit/pyproject.toml +++ b/packages/devqubit-qiskit/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "devqubit-qiskit" -version = "0.1.3" +version = "0.1.4" description = "devqubit adapter for Qiskit" readme = "README.md" license = "Apache-2.0" @@ -25,7 +25,7 @@ classifiers = [ ] dependencies = [ - "devqubit-engine>=0.1.3,<0.2.0", + "devqubit-engine>=0.1.4,<0.2.0", "qiskit>=2.2,<3", "qiskit-aer>=0.17,<0.18", "qiskit-qasm3-import>=0.6,<0.7", diff --git a/packages/devqubit-ui/pyproject.toml b/packages/devqubit-ui/pyproject.toml index 762cd58..5b1b741 100644 --- a/packages/devqubit-ui/pyproject.toml +++ b/packages/devqubit-ui/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "devqubit-ui" -version = "0.1.3" +version = "0.1.4" description = "Web interface for devqubit experiment tracking" readme = "README.md" license = "Apache-2.0" @@ -27,7 +27,7 @@ classifiers = [ ] dependencies = [ - "devqubit-engine>=0.1.3,<0.2.0", + "devqubit-engine>=0.1.4,<0.2.0", "fastapi>=0.128.0", "httpx>=0.28.1", "jinja2>=3.1.6", diff --git a/packages/devqubit-ui/src/devqubit_ui/__init__.py b/packages/devqubit-ui/src/devqubit_ui/__init__.py index 24d30a4..bbaa63d 100644 --- a/packages/devqubit-ui/src/devqubit_ui/__init__.py +++ b/packages/devqubit-ui/src/devqubit_ui/__init__.py @@ -47,4 +47,13 @@ API or the JSON endpoints at ``/api/*``. """ -__version__ = "0.1.3" +__version__ = "0.1.4" + + +from devqubit_ui.app import create_app, run_server + + +__all__ = [ + "run_server", + "create_app", +] diff --git a/packages/devqubit-ui/src/devqubit_ui/app.py b/packages/devqubit-ui/src/devqubit_ui/app.py index e36834a..ac2b7f4 100644 --- a/packages/devqubit-ui/src/devqubit_ui/app.py +++ b/packages/devqubit-ui/src/devqubit_ui/app.py @@ -131,7 +131,7 @@ def create_app( app = FastAPI( title="devqubit UI", description="Web interface for devqubit experiment tracking", - version="0.1.3", + version="0.1.4", lifespan=lifespan, ) diff --git a/packages/devqubit-ui/src/devqubit_ui/routers/api.py b/packages/devqubit-ui/src/devqubit_ui/routers/api.py index bb2d5eb..288a08c 100644 --- a/packages/devqubit-ui/src/devqubit_ui/routers/api.py +++ b/packages/devqubit-ui/src/devqubit_ui/routers/api.py @@ -50,7 +50,7 @@ async def get_capabilities() -> dict[str, Any]: """ return { "mode": "local", - "version": "0.1.3", + "version": "0.1.4", "features": { "auth": False, "workspaces": False, diff --git a/packages/devqubit-ui/src/devqubit_ui/templates/base.html b/packages/devqubit-ui/src/devqubit_ui/templates/base.html index ac591ae..d4dca53 100644 --- a/packages/devqubit-ui/src/devqubit_ui/templates/base.html +++ b/packages/devqubit-ui/src/devqubit_ui/templates/base.html @@ -6,9 +6,13 @@ {% block title %}devqubit{% endblock %} {% block head %}{% endblock %}
-
- - -
- -
- {% if current_user and workspaces is defined and workspaces and workspaces|length > 0 %} - -
- {% if workspaces|length > 1 %} - -
-
Switch Workspace
- {% for ws in workspaces %} - - {{ (ws.name or 'W')[:1] | upper }} - {{ ws.name }} - - {% endfor %} -
- {% else %} -
- {{ (current_workspace.name or 'W')[:1] | upper }} - {{ current_workspace.name | truncate(20) if current_workspace else 'Workspace' }} -
- {% endif %} +
+
+ +
- {% endif %} - - {% if current_user %} - -
-
- {{ (current_user.name or current_user.email)[:2] | upper }} -
-
-
- {{ current_user.name or current_user.email.split('@')[0] }} - {{ current_user.email }} -
- API Tokens - Profile - {% if current_user.is_admin %} - Admin - {% endif %} -
-
- -
-
+ +
+ {% block header_right %} + {# Extension point for devqubit-hub: workspace selector, user menu, edition badge #} + {% endblock %}
- {% endif %}
@@ -653,28 +430,6 @@ {% block content %}{% endblock %} - {% block scripts %}{% endblock %} diff --git a/pyproject.toml b/pyproject.toml index 16cc4fa..912847e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "devqubit" -version = "0.1.3" +version = "0.1.4" description = "Quantum experiment tracking library" readme = "README.md" license = "Apache-2.0" @@ -28,7 +28,7 @@ classifiers = [ ] dependencies = [ - "devqubit-engine>=0.1.3,<0.2.0", + "devqubit-engine>=0.1.4,<0.2.0", ] [project.urls] @@ -39,25 +39,25 @@ Documentation = "https://devqubit.readthedocs.io" [project.optional-dependencies] # Remote storage dependencies -s3 = ["devqubit-engine[s3]>=0.1.3,<0.2.0"] -gcs = ["devqubit-engine[gcs]>=0.1.3,<0.2.0"] +s3 = ["devqubit-engine[s3]>=0.1.4,<0.2.0"] +gcs = ["devqubit-engine[gcs]>=0.1.4,<0.2.0"] # SDKs/providers dependencies -qiskit = ["devqubit-qiskit>=0.1.3,<0.2.0"] -qiskit-runtime = ["devqubit-qiskit-runtime>=0.1.3,<0.2.0"] -pennylane = ["devqubit-pennylane>=0.1.3,<0.2.0"] -cirq = ["devqubit-cirq>=0.1.3,<0.2.0"] -braket = ["devqubit-braket>=0.1.3,<0.2.0"] +qiskit = ["devqubit-qiskit>=0.1.4,<0.2.0"] +qiskit-runtime = ["devqubit-qiskit-runtime>=0.1.4,<0.2.0"] +pennylane = ["devqubit-pennylane>=0.1.4,<0.2.0"] +cirq = ["devqubit-cirq>=0.1.4,<0.2.0"] +braket = ["devqubit-braket>=0.1.4,<0.2.0"] all = [ - "devqubit-qiskit>=0.1.3,<0.2.0", - "devqubit-qiskit-runtime>=0.1.3,<0.2.0", - "devqubit-pennylane>=0.1.3,<0.2.0", - "devqubit-cirq>=0.1.3,<0.2.0", - "devqubit-braket>=0.1.3,<0.2.0", + "devqubit-qiskit>=0.1.4,<0.2.0", + "devqubit-qiskit-runtime>=0.1.4,<0.2.0", + "devqubit-pennylane>=0.1.4,<0.2.0", + "devqubit-cirq>=0.1.4,<0.2.0", + "devqubit-braket>=0.1.4,<0.2.0", ] # Local UI -ui = ["devqubit-ui>=0.1.3,<0.2.0"] +ui = ["devqubit-ui>=0.1.4,<0.2.0"] [project.scripts] devqubit = "devqubit.cli:main" diff --git a/uv.lock b/uv.lock index bd7d896..3dbe5ad 100644 --- a/uv.lock +++ b/uv.lock @@ -744,7 +744,7 @@ wheels = [ [[package]] name = "devqubit" -version = "0.1.3" +version = "0.1.4" source = { editable = "." } dependencies = [ { name = "devqubit-engine" }, @@ -836,7 +836,7 @@ docs = [ [[package]] name = "devqubit-braket" -version = "0.1.3" +version = "0.1.4" source = { editable = "packages/devqubit-braket" } dependencies = [ { name = "amazon-braket-sdk" }, @@ -851,7 +851,7 @@ requires-dist = [ [[package]] name = "devqubit-cirq" -version = "0.1.3" +version = "0.1.4" source = { editable = "packages/devqubit-cirq" } dependencies = [ { name = "cirq" }, @@ -868,7 +868,7 @@ requires-dist = [ [[package]] name = "devqubit-engine" -version = "0.1.3" +version = "0.1.4" source = { editable = "packages/devqubit-engine" } dependencies = [ { name = "click" }, @@ -898,7 +898,7 @@ provides-extras = ["s3", "gcs"] [[package]] name = "devqubit-pennylane" -version = "0.1.3" +version = "0.1.4" source = { editable = "packages/devqubit-pennylane" } dependencies = [ { name = "devqubit-engine" }, @@ -913,7 +913,7 @@ requires-dist = [ [[package]] name = "devqubit-qiskit" -version = "0.1.3" +version = "0.1.4" source = { editable = "packages/devqubit-qiskit" } dependencies = [ { name = "devqubit-engine" }, @@ -932,7 +932,7 @@ requires-dist = [ [[package]] name = "devqubit-qiskit-runtime" -version = "0.1.3" +version = "0.1.4" source = { editable = "packages/devqubit-qiskit-runtime" } dependencies = [ { name = "devqubit-engine" }, @@ -949,7 +949,7 @@ requires-dist = [ [[package]] name = "devqubit-ui" -version = "0.1.3" +version = "0.1.4" source = { editable = "packages/devqubit-ui" } dependencies = [ { name = "devqubit-engine" },