6 Commits

Author SHA1 Message Date
gitea-actions[bot]
6b6735e07f bump version to v0.8.3 2025-10-02 15:46:09 +00:00
4b99f2e816 remove asset dir from Dockerfile
All checks were successful
Security Scan / dependency-check (push) Successful in 38s
Security Scan / security (push) Successful in 41s
Test Suite / lint (push) Successful in 29s
Test Suite / test (3.11) (push) Successful in 1m29s
Test Suite / build (push) Successful in 43s
2025-10-02 08:44:46 -07:00
gitea-actions[bot]
c38f8f2ef8 bump version to v0.8.2 2025-10-02 15:16:38 +00:00
478dc3a8a1 fix path to sample-txt.md
Some checks failed
Security Scan / security (push) Failing after 10s
Security Scan / dependency-check (push) Successful in 28s
Test Suite / lint (push) Successful in 24s
Test Suite / test (3.11) (push) Successful in 1m28s
Test Suite / build (push) Successful in 39s
2025-10-02 08:15:33 -07:00
gitea-actions[bot]
2d4bc5fa2f bump version to v0.8.1 2025-10-02 15:08:45 +00:00
291bf9473a relocate assets so they get budled correctly
All checks were successful
Security Scan / dependency-check (push) Successful in 38s
Security Scan / security (push) Successful in 42s
Test Suite / lint (push) Successful in 30s
Test Suite / test (3.11) (push) Successful in 1m26s
Test Suite / build (push) Successful in 40s
2025-10-02 08:03:29 -07:00
21 changed files with 20 additions and 14 deletions

View File

@@ -23,7 +23,6 @@ COPY pyproject.toml uv.lock ./
# Copy source code (needed for editable install) # Copy source code (needed for editable install)
COPY src/ src/ COPY src/ src/
COPY assets/ assets/
# Change ownership of source files before building (lighter I/O) # Change ownership of source files before building (lighter I/O)
RUN chown -R appuser:appuser /app RUN chown -R appuser:appuser /app
@@ -56,7 +55,6 @@ RUN chown appuser:appuser /app
# Copy files from builder with correct ownership # Copy files from builder with correct ownership
COPY --from=builder --chown=appuser:appuser /app/.venv /app/.venv COPY --from=builder --chown=appuser:appuser /app/.venv /app/.venv
COPY --from=builder --chown=appuser:appuser /app/src /app/src COPY --from=builder --chown=appuser:appuser /app/src /app/src
COPY --from=builder --chown=appuser:appuser /app/assets /app/assets
# Switch to non-root user # Switch to non-root user
USER appuser USER appuser

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "embeddingbuddy" name = "embeddingbuddy"
version = "0.8.0" version = "0.8.3"
description = "A Python Dash application for interactive exploration and visualization of embedding vectors through dimensionality reduction techniques." description = "A Python Dash application for interactive exploration and visualization of embedding vectors through dimensionality reduction techniques."
readme = "README.md" readme = "README.md"
requires-python = ">=3.11" requires-python = ">=3.11"
@@ -54,3 +54,6 @@ where = ["src"]
[tool.setuptools.package-dir] [tool.setuptools.package-dir]
"" = "src" "" = "src"
[tool.setuptools.package-data]
embeddingbuddy = ["assets/**/*"]

View File

@@ -16,9 +16,9 @@ def create_app():
from .ui.callbacks.visualization import VisualizationCallbacks from .ui.callbacks.visualization import VisualizationCallbacks
from .ui.callbacks.interactions import InteractionCallbacks from .ui.callbacks.interactions import InteractionCallbacks
# Get the project root directory (two levels up from this file) # Get the assets directory relative to this module
project_root = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) module_dir = os.path.dirname(__file__)
assets_path = os.path.join(project_root, "assets") assets_path = os.path.join(module_dir, "assets")
app = dash.Dash( app = dash.Dash(
__name__, __name__,
@@ -167,8 +167,15 @@ def serve(host=None, port=None, dev=False, debug=False):
# Only print startup messages in main process (not in Flask reloader) # Only print startup messages in main process (not in Flask reloader)
if not os.environ.get("WERKZEUG_RUN_MAIN"): if not os.environ.get("WERKZEUG_RUN_MAIN"):
from importlib.metadata import version
try:
pkg_version = version("embeddingbuddy")
except Exception:
pkg_version = "unknown"
mode = "development" if dev else ("debug" if debug else "production") mode = "development" if dev else ("debug" if debug else "production")
print(f"Starting EmbeddingBuddy in {mode} mode...") print(f"Starting EmbeddingBuddy v{pkg_version} in {mode} mode...")
print("Loading dependencies (this may take a few seconds)...") print("Loading dependencies (this may take a few seconds)...")
print(f"Server will start at http://{actual_host}:{actual_port}") print(f"Server will start at http://{actual_host}:{actual_port}")
if use_reloader: if use_reloader:

View File

@@ -660,14 +660,12 @@ class DataProcessingCallbacks:
import os import os
try: try:
# Get the project root directory (four levels up from this file) # Get the embeddingbuddy package directory (three levels up from this file)
current_file = os.path.abspath(__file__) current_file = os.path.abspath(__file__)
project_root = os.path.dirname( package_dir = os.path.dirname(
os.path.dirname( os.path.dirname(os.path.dirname(current_file))
os.path.dirname(os.path.dirname(os.path.dirname(current_file)))
)
) )
sample_file_path = os.path.join(project_root, "assets", "sample-txt.md") sample_file_path = os.path.join(package_dir, "assets", "sample-txt.md")
if os.path.exists(sample_file_path): if os.path.exists(sample_file_path):
with open(sample_file_path, "r", encoding="utf-8") as file: with open(sample_file_path, "r", encoding="utf-8") as file:

2
uv.lock generated
View File

@@ -412,7 +412,7 @@ wheels = [
[[package]] [[package]]
name = "embeddingbuddy" name = "embeddingbuddy"
version = "0.6.4" version = "0.8.1"
source = { editable = "." } source = { editable = "." }
dependencies = [ dependencies = [
{ name = "dash" }, { name = "dash" },