From 12773927caaf50adedca5af37a9ae01bed8aa859 Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Mon, 13 Apr 2026 19:20:33 +0530 Subject: [PATCH] refactor: Improve project Structure --- .gitignore | 2 +- pyproject.toml | 13 +++- src/__init__.py | 0 src/omnia/__init__.py | 0 entities.py => src/omnia/entities.py | 6 +- game_loop.py => src/omnia/game_loop.py | 10 +-- interaction.py => src/omnia/interaction.py | 10 +-- llm_runtime.py => src/omnia/llm_runtime.py | 0 .../omnia/logging_setup.py | 0 main.py => src/omnia/main.py | 9 +-- memory.py => src/omnia/memory.py | 4 +- .../omnia/scenario_loader.py | 10 +-- .../omnia/spatial_graph.py | 0 time_utils.py => src/omnia/time_utils.py | 0 .../omnia/world_architect.py | 2 +- uv.lock | 65 ++++++++++++------- 16 files changed, 81 insertions(+), 50 deletions(-) create mode 100644 src/__init__.py create mode 100644 src/omnia/__init__.py rename entities.py => src/omnia/entities.py (94%) rename game_loop.py => src/omnia/game_loop.py (94%) rename interaction.py => src/omnia/interaction.py (94%) rename llm_runtime.py => src/omnia/llm_runtime.py (100%) rename logging_setup.py => src/omnia/logging_setup.py (100%) rename main.py => src/omnia/main.py (61%) rename memory.py => src/omnia/memory.py (96%) rename scenario_loader.py => src/omnia/scenario_loader.py (96%) rename spatial_graph.py => src/omnia/spatial_graph.py (100%) rename time_utils.py => src/omnia/time_utils.py (100%) rename world_architect.py => src/omnia/world_architect.py (99%) diff --git a/.gitignore b/.gitignore index 296df88..33599ce 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ build/ dist/ wheels/ *.egg-info - +*.egg-info/ # Virtual environments .venv .obsidian/ diff --git a/pyproject.toml b/pyproject.toml index b6381ec..f15b448 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "langchain-tutorial" +name = "omnia" version = "0.1.0" description = "Add your description here" readme = "README.md" @@ -9,6 +9,17 @@ dependencies = [ "langchain-community>=0.4.1", "langchain[llms]>=1.2.15", "llama-cpp-python>=0.3.20", + "pip>=26.0.1", "rich>=13.9.4", "sentence-transformers>=5.4.0", ] + +[dependency-groups] +dev = [ + "omnia", +] + +[tool.uv.sources] +omnia = { workspace = true } + + diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/omnia/__init__.py b/src/omnia/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/entities.py b/src/omnia/entities.py similarity index 94% rename from entities.py rename to src/omnia/entities.py index b252c46..805ee7c 100644 --- a/entities.py +++ b/src/omnia/entities.py @@ -2,9 +2,9 @@ import logging from langchain_core.messages import HumanMessage, SystemMessage -from llm_runtime import _format_prompt, _normalize_llm_output, llm -from memory import EntityMemory, MemoryEntry -from time_utils import WorldClock +from omnia.llm_runtime import _format_prompt, _normalize_llm_output, llm +from omnia.memory import EntityMemory, MemoryEntry +from omnia.time_utils import WorldClock logger = logging.getLogger(__name__) diff --git a/game_loop.py b/src/omnia/game_loop.py similarity index 94% rename from game_loop.py rename to src/omnia/game_loop.py index f43e6a9..db6fdd2 100644 --- a/game_loop.py +++ b/src/omnia/game_loop.py @@ -1,10 +1,10 @@ import logging -from entities import Player -from interaction import ask_entity -from spatial_graph import SpatialGraph -from time_utils import WorldClock -from world_architect import WorldState +from omnia.entities import Player +from omnia.interaction import ask_entity +from omnia.spatial_graph import SpatialGraph +from omnia.time_utils import WorldClock +from omnia.world_architect import WorldState logger = logging.getLogger(__name__) diff --git a/interaction.py b/src/omnia/interaction.py similarity index 94% rename from interaction.py rename to src/omnia/interaction.py index 551e112..7a1e2f5 100644 --- a/interaction.py +++ b/src/omnia/interaction.py @@ -2,11 +2,11 @@ import logging from langchain_core.messages import HumanMessage, SystemMessage -from entities import Entity -from llm_runtime import _format_prompt, _normalize_llm_output, llm -from spatial_graph import SpatialGraph -from time_utils import WorldClock, describe_relative_time -from world_architect import invoke_architect, apply_state_delta, WorldState +from omnia.entities import Entity +from omnia.llm_runtime import _format_prompt, _normalize_llm_output, llm +from omnia.spatial_graph import SpatialGraph +from omnia.time_utils import WorldClock, describe_relative_time +from omnia.world_architect import invoke_architect, apply_state_delta, WorldState logger = logging.getLogger(__name__) diff --git a/llm_runtime.py b/src/omnia/llm_runtime.py similarity index 100% rename from llm_runtime.py rename to src/omnia/llm_runtime.py diff --git a/logging_setup.py b/src/omnia/logging_setup.py similarity index 100% rename from logging_setup.py rename to src/omnia/logging_setup.py diff --git a/main.py b/src/omnia/main.py similarity index 61% rename from main.py rename to src/omnia/main.py index ba968aa..35d7996 100644 --- a/main.py +++ b/src/omnia/main.py @@ -1,10 +1,11 @@ from pathlib import Path -from game_loop import start_game -from logging_setup import configure_logging -from scenario_loader import load_scenario, save_scenario +from omnia.game_loop import start_game +from omnia.logging_setup import configure_logging +from omnia.scenario_loader import load_scenario, save_scenario -SCENARIO_PATH = Path(__file__).with_name("demo.json") +# Find demo.json in project root (go up from src/omnia to root) +SCENARIO_PATH = Path(__file__).parent.parent.parent / "demo.json" if __name__ == "__main__": diff --git a/memory.py b/src/omnia/memory.py similarity index 96% rename from memory.py rename to src/omnia/memory.py index b4ac7d7..bb8932c 100644 --- a/memory.py +++ b/src/omnia/memory.py @@ -1,7 +1,7 @@ from langchain_community.vectorstores import FAISS -from llm_runtime import embeddings -from time_utils import describe_relative_time +from omnia.llm_runtime import embeddings +from omnia.time_utils import describe_relative_time class MemoryEntry: diff --git a/scenario_loader.py b/src/omnia/scenario_loader.py similarity index 96% rename from scenario_loader.py rename to src/omnia/scenario_loader.py index acc753a..9184d33 100644 --- a/scenario_loader.py +++ b/src/omnia/scenario_loader.py @@ -3,11 +3,11 @@ import logging from dataclasses import dataclass from pathlib import Path -from entities import Entity, Player -from memory import MemoryEntry -from spatial_graph import SpatialGraph -from time_utils import WorldClock -from world_architect import WorldState +from omnia.entities import Entity, Player +from omnia.memory import MemoryEntry +from omnia.spatial_graph import SpatialGraph +from omnia.time_utils import WorldClock +from omnia.world_architect import WorldState logger = logging.getLogger(__name__) diff --git a/spatial_graph.py b/src/omnia/spatial_graph.py similarity index 100% rename from spatial_graph.py rename to src/omnia/spatial_graph.py diff --git a/time_utils.py b/src/omnia/time_utils.py similarity index 100% rename from time_utils.py rename to src/omnia/time_utils.py diff --git a/world_architect.py b/src/omnia/world_architect.py similarity index 99% rename from world_architect.py rename to src/omnia/world_architect.py index 341cc65..6703482 100644 --- a/world_architect.py +++ b/src/omnia/world_architect.py @@ -3,7 +3,7 @@ import logging from datetime import datetime, timedelta from typing import Any -from llm_runtime import llm, _normalize_llm_output, _format_prompt +from omnia.llm_runtime import llm, _normalize_llm_output, _format_prompt from langchain_core.messages import HumanMessage, SystemMessage logger = logging.getLogger(__name__) diff --git a/uv.lock b/uv.lock index 3484b3a..f3e3e1e 100644 --- a/uv.lock +++ b/uv.lock @@ -751,29 +751,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/84/66/d9e0c3b83b0ad75ee746c51ba347cacecb8d656b96e1d513f3e334d1ccab/langchain_text_splitters-1.1.1-py3-none-any.whl", hash = "sha256:5ed0d7bf314ba925041e7d7d17cd8b10f688300d5415fb26c29442f061e329dc", size = 35734, upload-time = "2026-02-18T23:02:41.913Z" }, ] -[[package]] -name = "langchain-tutorial" -version = "0.1.0" -source = { virtual = "." } -dependencies = [ - { name = "faiss-cpu" }, - { name = "langchain" }, - { name = "langchain-community" }, - { name = "llama-cpp-python" }, - { name = "rich" }, - { name = "sentence-transformers" }, -] - -[package.metadata] -requires-dist = [ - { name = "faiss-cpu", specifier = ">=1.13.2" }, - { name = "langchain", extras = ["llms"], specifier = ">=1.2.15" }, - { name = "langchain-community", specifier = ">=0.4.1" }, - { name = "llama-cpp-python", specifier = ">=0.3.20" }, - { name = "rich", specifier = ">=13.9.4" }, - { name = "sentence-transformers", specifier = ">=5.4.0" }, -] - [[package]] name = "langgraph" version = "1.1.6" @@ -1294,6 +1271,39 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" }, ] +[[package]] +name = "omnia" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "faiss-cpu" }, + { name = "langchain" }, + { name = "langchain-community" }, + { name = "llama-cpp-python" }, + { name = "pip" }, + { name = "rich" }, + { name = "sentence-transformers" }, +] + +[package.dev-dependencies] +dev = [ + { name = "omnia" }, +] + +[package.metadata] +requires-dist = [ + { name = "faiss-cpu", specifier = ">=1.13.2" }, + { name = "langchain", extras = ["llms"], specifier = ">=1.2.15" }, + { name = "langchain-community", specifier = ">=0.4.1" }, + { name = "llama-cpp-python", specifier = ">=0.3.20" }, + { name = "pip", specifier = ">=26.0.1" }, + { name = "rich", specifier = ">=13.9.4" }, + { name = "sentence-transformers", specifier = ">=5.4.0" }, +] + +[package.metadata.requires-dev] +dev = [{ name = "omnia", virtual = "." }] + [[package]] name = "orjson" version = "3.11.8" @@ -1395,6 +1405,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, ] +[[package]] +name = "pip" +version = "26.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/48/83/0d7d4e9efe3344b8e2fe25d93be44f64b65364d3c8d7bc6dc90198d5422e/pip-26.0.1.tar.gz", hash = "sha256:c4037d8a277c89b320abe636d59f91e6d0922d08a05b60e85e53b296613346d8", size = 1812747, upload-time = "2026-02-05T02:20:18.702Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/f0/c81e05b613866b76d2d1066490adf1a3dbc4ee9d9c839961c3fc8a6997af/pip-26.0.1-py3-none-any.whl", hash = "sha256:bdb1b08f4274833d62c1aa29e20907365a2ceb950410df15fc9521bad440122b", size = 1787723, upload-time = "2026-02-05T02:20:16.416Z" }, +] + [[package]] name = "propcache" version = "0.4.1"