diff --git a/poetry.lock b/poetry.lock index b09adb3..59658d2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -323,13 +323,13 @@ test = ["pytest (>=6)"] [[package]] name = "execnet" -version = "2.1.0" +version = "2.1.1" description = "execnet: rapid multi-Python deployment" optional = false python-versions = ">=3.8" files = [ - {file = "execnet-2.1.0-py3-none-any.whl", hash = "sha256:ad174d7705410adc9359ba4822bad211d71cdbd59ff70304e1aa41d196b4b4d3"}, - {file = "execnet-2.1.0.tar.gz", hash = "sha256:dc4a63f86afb40f8429f59f938d6cb97846f9e7cf7dd9eb4b8c26016965b7ac0"}, + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, ] [package.extras] @@ -370,13 +370,13 @@ sphinx-basic-ng = "*" [[package]] name = "galileo-core" -version = "0.9.3" +version = "0.10.0" description = "Shared schemas and configuration for Galileo's Python packages." optional = false python-versions = "<3.13,>=3.8.1" files = [ - {file = "galileo_core-0.9.3-py3-none-any.whl", hash = "sha256:995ce9f2b14f4146b16106547b3a15ee0ec4356f94896d498c5c9aa2a2ed5aa1"}, - {file = "galileo_core-0.9.3.tar.gz", hash = "sha256:c6db40a54b06a708cbe99b999eb554d900c2692590be57042a98f68b4a82d036"}, + {file = "galileo_core-0.10.0-py3-none-any.whl", hash = "sha256:5927dcaf5e7314e78f810a0cf0c8b5ce321eb08bb8023cfe2cc602e36b349c65"}, + {file = "galileo_core-0.10.0.tar.gz", hash = "sha256:b65854a027e65cf11b4c698e0c1f5cbb6fdd714ef6adffc0e510af14b64b96c9"}, ] [package.dependencies] @@ -1504,4 +1504,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8.1,<3.13" -content-hash = "bc6f60b427038278292c0facc95dbf64ff6c0cbf63ea0dbfa17613c426711b68" +content-hash = "4aee9458438b4b8dc7da14ffa6df838a238b969b4cfb35ad4f2f351f94dc6bd4" diff --git a/pyproject.toml b/pyproject.toml index 4525c7f..393d147 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ packages = [{include = "galileo_protect", from = "src"}] [tool.poetry.dependencies] python = "^3.8.1,<3.13" -galileo-core = "^0.9.3" +galileo-core = "^0.10.0" [tool.poetry.group.test.dependencies] diff --git a/src/galileo_protect/__init__.py b/src/galileo_protect/__init__.py index 18df4ec..e8ea95b 100644 --- a/src/galileo_protect/__init__.py +++ b/src/galileo_protect/__init__.py @@ -1,5 +1,6 @@ # flake8: noqa: F401 # ruff: noqa: F401 from galileo_protect.invoke import invoke +from galileo_protect.project import create_project __version__ = "0.1.0" diff --git a/src/galileo_protect/project.py b/src/galileo_protect/project.py new file mode 100644 index 0000000..cbdc190 --- /dev/null +++ b/src/galileo_protect/project.py @@ -0,0 +1,19 @@ +from typing import Optional + +from galileo_core.helpers.project import create_project as core_create_project +from galileo_core.schemas.core.project import ( + DEFAULT_PROJECT_NAME, + CreateProjectRequest, + ProjectResponse, + ProjectType, +) + +from galileo_protect.helpers.config import ProtectConfig + + +def create_project(name: str = DEFAULT_PROJECT_NAME, config: Optional[ProtectConfig] = None) -> ProjectResponse: + config = config or ProtectConfig.get() + project = core_create_project(CreateProjectRequest(name=name, type=ProjectType.protect), config) + config.project_id = project.id + config.write() + return project diff --git a/src/galileo_protect/stage.py b/src/galileo_protect/stage.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_project.py b/tests/test_project.py new file mode 100644 index 0000000..d997901 --- /dev/null +++ b/tests/test_project.py @@ -0,0 +1,23 @@ +from typing import Callable +from uuid import uuid4 + +from galileo_core.constants.routes import Routes as CoreRoutes +from galileo_core.schemas.core.project import DEFAULT_PROJECT_NAME, ProjectType +from requests_mock import POST + +from galileo_protect.project import create_project + + +def test_create_project(set_validated_config: Callable, mock_request: Callable) -> None: + config = set_validated_config() + project_id = uuid4() + matcher = mock_request( + POST, + CoreRoutes.projects, + json={"id": str(project_id), "type": ProjectType.protect, "name": DEFAULT_PROJECT_NAME}, + ) + create_project(config=config) + assert matcher.called + # Verify that the project ID was set in the config. + assert config.project_id is not None + assert config.project_id == project_id