diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3ff69f7..e5a3b9a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,7 +47,7 @@ jobs: - name: Test install run: | pip install . - python -c "import orderly; import outpack" + python -c "import pyorderly" - name: Upload to Codecov uses: codecov/codecov-action@v4 with: diff --git a/README.md b/README.md index d873983..e60362a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# outpack +# pyorderly -[![PyPI - Version](https://img.shields.io/pypi/v/outpack.svg)](https://pypi.org/project/outpack) -[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/outpack.svg)](https://pypi.org/project/outpack) +[![PyPI - Version](https://img.shields.io/pypi/v/pyorderly.svg)](https://pypi.org/project/pyorderly) +[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pyorderly.svg)](https://pypi.org/project/pyorderly) ----- @@ -13,7 +13,7 @@ ## Installation ```console -pip install outpack +pip install pyorderly ``` ## Development @@ -33,7 +33,7 @@ hatch run lint:fmt The outpack query parser is implemented in Rust as part of the [outpack_server](https://github.com/mrc-ide/outpack_server) repository. When developing new features in the query parser, they can be tested out in your -development environment of `outpack-py` by installing the parser from your local +development environment of `pyorderly` by installing the parser from your local checkout: ``` @@ -43,4 +43,4 @@ hatch run pip install /path/to/outpack_server ## License -`outpack` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license. +`pyorderly` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license. diff --git a/docs/conf.py b/docs/conf.py index 0eb87e5..b5c05ca 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -5,7 +5,7 @@ # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information -import outpack.__about__ as info +import pyorderly.__about__ as info project = info.__name__ copyright = "2023-present Imperial College of Science, Technology and Medicine" diff --git a/pyproject.toml b/pyproject.toml index fb2176d..ca26f45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["hatchling"] build-backend = "hatchling.build" [project] -name = "outpack" +name = "pyorderly" dynamic = ["version"] description = "Reproducible and collaborative reporting" readme = "README.md" @@ -36,15 +36,12 @@ dependencies = [ ] [project.urls] -Documentation = "https://github.com/mrc-ide/outpack#readme" -Issues = "https://github.com/mrc-ide/outpack/issues" -Source = "https://github.com/mrc-ide/outpack" +Documentation = "https://github.com/mrc-ide/pyorderly#readme" +Issues = "https://github.com/mrc-ide/pyorderly/issues" +Source = "https://github.com/mrc-ide/pyorderly" [tool.hatch.version] -path = "src/outpack/__about__.py" - -[tool.hatch.build.targets.wheel] -packages = ["src/outpack", "src/orderly"] +path = "src/pyorderly/__about__.py" [tool.hatch.envs.default] dependencies = [ @@ -177,14 +174,14 @@ ban-relative-imports = "all" convention = "numpy" [tool.coverage.run] -source_pkgs = ["outpack", "orderly", "tests"] +source_pkgs = ["pyorderly", "tests"] branch = true parallel = true # The wildcards are needed in order for the omit path to work correctly even # when spawning subprocess in different directories. omit = [ - "**/src/outpack/__about__.py", + "**/src/pyorderly/__about__.py", "**/tests/helpers/*", ] diff --git a/scripts/update_schemas b/scripts/update_schemas index ceaba84..52815b2 100755 --- a/scripts/update_schemas +++ b/scripts/update_schemas @@ -14,7 +14,7 @@ schema_version <- jsonlite::read_json(file.path(tmp, "schema", "config.json"))$version fs::dir_copy(file.path(tmp, "schema"), dest) -writeLines(c("# Imported from outpack", +writeLines(c("# Imported from pyorderly.outpack", "", sprintf("* Schema version %s", schema_version), sprintf("* Imported on %s", Sys.time()), diff --git a/src/outpack/__about__.py b/src/pyorderly/__about__.py similarity index 85% rename from src/outpack/__about__.py rename to src/pyorderly/__about__.py index e8f5621..1ad9aa8 100644 --- a/src/outpack/__about__.py +++ b/src/pyorderly/__about__.py @@ -2,4 +2,4 @@ # # SPDX-License-Identifier: MIT __version__ = "0.0.1" -__name__ = "outpack-py" +__name__ = "pyorderly" diff --git a/src/orderly/__init__.py b/src/pyorderly/__init__.py similarity index 89% rename from src/orderly/__init__.py rename to src/pyorderly/__init__.py index af23258..9318077 100644 --- a/src/orderly/__init__.py +++ b/src/pyorderly/__init__.py @@ -1,4 +1,4 @@ -from orderly.core import ( +from pyorderly.core import ( Parameters, artefact, dependency, diff --git a/src/orderly/core.py b/src/pyorderly/core.py similarity index 97% rename from src/orderly/core.py rename to src/pyorderly/core.py index 4a0f1ce..18afac7 100644 --- a/src/orderly/core.py +++ b/src/pyorderly/core.py @@ -7,11 +7,11 @@ from dataclasses_json import dataclass_json -from orderly.current import get_active_context -from outpack import util -from outpack.copy_files import copy_files -from outpack.search import search_unique -from outpack.util import pl +from pyorderly.current import get_active_context +from pyorderly.outpack import util +from pyorderly.outpack.copy_files import copy_files +from pyorderly.outpack.search import search_unique +from pyorderly.outpack.util import pl @dataclass_json() diff --git a/src/orderly/current.py b/src/pyorderly/current.py similarity index 94% rename from src/orderly/current.py rename to src/pyorderly/current.py index 3a0f586..7729184 100644 --- a/src/orderly/current.py +++ b/src/pyorderly/current.py @@ -3,9 +3,9 @@ from pathlib import Path from typing import Optional -from outpack.packet import Packet -from outpack.root import OutpackRoot, root_open -from outpack.search_options import SearchOptions +from pyorderly.outpack.packet import Packet +from pyorderly.outpack.root import OutpackRoot, root_open +from pyorderly.outpack.search_options import SearchOptions class OrderlyCustomMetadata: diff --git a/src/outpack/__init__.py b/src/pyorderly/outpack/__init__.py similarity index 100% rename from src/outpack/__init__.py rename to src/pyorderly/outpack/__init__.py diff --git a/src/outpack/config.py b/src/pyorderly/outpack/config.py similarity index 94% rename from src/outpack/config.py rename to src/pyorderly/outpack/config.py index 1c58bbc..cc5ce96 100644 --- a/src/outpack/config.py +++ b/src/pyorderly/outpack/config.py @@ -4,9 +4,9 @@ from dataclasses_json import config, dataclass_json -from outpack.schema import outpack_schema_version -from outpack.static import LOCATION_TYPES -from outpack.util import match_value +from pyorderly.outpack.schema import outpack_schema_version +from pyorderly.outpack.static import LOCATION_TYPES +from pyorderly.outpack.util import match_value def read_config(root_path): diff --git a/src/outpack/copy_files.py b/src/pyorderly/outpack/copy_files.py similarity index 91% rename from src/outpack/copy_files.py rename to src/pyorderly/outpack/copy_files.py index 085334b..e076b0c 100644 --- a/src/outpack/copy_files.py +++ b/src/pyorderly/outpack/copy_files.py @@ -2,13 +2,13 @@ from pathlib import Path from typing import Dict -from outpack.location_pull import ( +from pyorderly.outpack.location_pull import ( location_build_pull_plan, location_pull_files, ) -from outpack.metadata import PacketFile -from outpack.root import OutpackRoot -from outpack.search_options import SearchOptions +from pyorderly.outpack.metadata import PacketFile +from pyorderly.outpack.root import OutpackRoot +from pyorderly.outpack.search_options import SearchOptions @dataclass diff --git a/src/outpack/filestore.py b/src/pyorderly/outpack/filestore.py similarity index 95% rename from src/outpack/filestore.py rename to src/pyorderly/outpack/filestore.py index cdf70bb..82174ba 100644 --- a/src/outpack/filestore.py +++ b/src/pyorderly/outpack/filestore.py @@ -6,8 +6,8 @@ from errno import ENOENT from pathlib import Path -from outpack.hash import Hash, hash_parse, hash_validate_file -from outpack.util import openable_temporary_file +from pyorderly.outpack.hash import Hash, hash_parse, hash_validate_file +from pyorderly.outpack.util import openable_temporary_file class FileStore: @@ -79,8 +79,6 @@ def onerror(func, path, _exc_info): if not os.access(path, os.W_OK): os.chmod(path, stat.S_IWUSR) func(path) - else: - raise shutil.rmtree(self._path, onerror=onerror) diff --git a/src/outpack/hash.py b/src/pyorderly/outpack/hash.py similarity index 97% rename from src/outpack/hash.py rename to src/pyorderly/outpack/hash.py index 4802e7d..cb9a757 100644 --- a/src/outpack/hash.py +++ b/src/pyorderly/outpack/hash.py @@ -28,7 +28,7 @@ def hash_string(data, algorithm): def hash_parse(string): - if type(string) == Hash: + if isinstance(string, Hash): return string return Hash(*string.split(":")) diff --git a/src/outpack/ids.py b/src/pyorderly/outpack/ids.py similarity index 91% rename from src/outpack/ids.py rename to src/pyorderly/outpack/ids.py index f1b9460..26afe22 100644 --- a/src/outpack/ids.py +++ b/src/pyorderly/outpack/ids.py @@ -3,7 +3,7 @@ import secrets import time -from outpack.util import iso_time_str +from pyorderly.outpack.util import iso_time_str RE_ID = re.compile("^[0-9]{8}-[0-9]{6}-[0-9a-f]{8}$") diff --git a/src/outpack/index.py b/src/pyorderly/outpack/index.py similarity index 98% rename from src/outpack/index.py rename to src/pyorderly/outpack/index.py index 877c996..83e591e 100644 --- a/src/outpack/index.py +++ b/src/pyorderly/outpack/index.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from typing import Dict, List -from outpack.metadata import ( +from pyorderly.outpack.metadata import ( MetadataCore, PacketLocation, read_metadata_core, diff --git a/src/outpack/init.py b/src/pyorderly/outpack/init.py similarity index 95% rename from src/outpack/init.py rename to src/pyorderly/outpack/init.py index 4dbb673..96abd7b 100644 --- a/src/outpack/init.py +++ b/src/pyorderly/outpack/init.py @@ -1,6 +1,6 @@ from pathlib import Path -from outpack.config import Config, read_config, write_config +from pyorderly.outpack.config import Config, read_config, write_config def outpack_init( diff --git a/src/outpack/location.py b/src/pyorderly/outpack/location.py similarity index 93% rename from src/outpack/location.py rename to src/pyorderly/outpack/location.py index dfbed0a..ca95e09 100644 --- a/src/outpack/location.py +++ b/src/pyorderly/outpack/location.py @@ -2,12 +2,12 @@ import shutil from pathlib import PurePath -from outpack.config import Location, update_config -from outpack.location_driver import LocationDriver -from outpack.location_path import OutpackLocationPath -from outpack.location_ssh import OutpackLocationSSH, parse_ssh_url -from outpack.root import OutpackRoot, root_open -from outpack.static import ( +from pyorderly.outpack.config import Location, update_config +from pyorderly.outpack.location_driver import LocationDriver +from pyorderly.outpack.location_path import OutpackLocationPath +from pyorderly.outpack.location_ssh import OutpackLocationSSH, parse_ssh_url +from pyorderly.outpack.root import OutpackRoot, root_open +from pyorderly.outpack.static import ( LOCATION_LOCAL, LOCATION_ORPHAN, LOCATION_RESERVED_NAME, diff --git a/src/outpack/location_driver.py b/src/pyorderly/outpack/location_driver.py similarity index 88% rename from src/outpack/location_driver.py rename to src/pyorderly/outpack/location_driver.py index 0ffe6ec..8185927 100644 --- a/src/outpack/location_driver.py +++ b/src/pyorderly/outpack/location_driver.py @@ -2,7 +2,7 @@ from contextlib import AbstractContextManager from typing import Dict, List -from outpack.metadata import MetadataCore, PacketFile, PacketLocation +from pyorderly.outpack.metadata import MetadataCore, PacketFile, PacketLocation class LocationDriver(AbstractContextManager): diff --git a/src/outpack/location_path.py b/src/pyorderly/outpack/location_path.py similarity index 83% rename from src/outpack/location_path.py rename to src/pyorderly/outpack/location_path.py index bd03d28..4fa5b25 100644 --- a/src/outpack/location_path.py +++ b/src/pyorderly/outpack/location_path.py @@ -2,11 +2,11 @@ import shutil from typing import Dict, List -from outpack.location_driver import LocationDriver -from outpack.metadata import MetadataCore, PacketFile, PacketLocation -from outpack.root import find_file_by_hash, root_open -from outpack.static import LOCATION_LOCAL -from outpack.util import read_string +from pyorderly.outpack.location_driver import LocationDriver +from pyorderly.outpack.metadata import MetadataCore, PacketFile, PacketLocation +from pyorderly.outpack.root import find_file_by_hash, root_open +from pyorderly.outpack.static import LOCATION_LOCAL +from pyorderly.outpack.util import read_string class OutpackLocationPath(LocationDriver): diff --git a/src/outpack/location_pull.py b/src/pyorderly/outpack/location_pull.py similarity index 97% rename from src/outpack/location_pull.py rename to src/pyorderly/outpack/location_pull.py index 8484dad..0347200 100644 --- a/src/outpack/location_pull.py +++ b/src/pyorderly/outpack/location_pull.py @@ -7,22 +7,27 @@ import humanize -from outpack.filestore import FileStore -from outpack.hash import hash_validate_string -from outpack.location import ( +from pyorderly.outpack.filestore import FileStore +from pyorderly.outpack.hash import hash_validate_string +from pyorderly.outpack.location import ( LocationDriver, _location_driver, location_resolve_valid, ) -from outpack.metadata import ( +from pyorderly.outpack.metadata import ( MetadataCore, PacketFileWithLocation, PacketLocation, ) -from outpack.root import OutpackRoot, find_file_by_hash, mark_known, root_open -from outpack.search_options import SearchOptions -from outpack.static import LOCATION_LOCAL -from outpack.util import format_list, partition, pl +from pyorderly.outpack.root import ( + OutpackRoot, + find_file_by_hash, + mark_known, + root_open, +) +from pyorderly.outpack.search_options import SearchOptions +from pyorderly.outpack.static import LOCATION_LOCAL +from pyorderly.outpack.util import format_list, partition, pl def outpack_location_pull_metadata(location=None, root=None, *, locate=True): diff --git a/src/outpack/location_ssh.py b/src/pyorderly/outpack/location_ssh.py similarity index 93% rename from src/outpack/location_ssh.py rename to src/pyorderly/outpack/location_ssh.py index ea299ec..1512316 100644 --- a/src/outpack/location_ssh.py +++ b/src/pyorderly/outpack/location_ssh.py @@ -7,12 +7,12 @@ import paramiko -from outpack.config import Config -from outpack.hash import hash_parse -from outpack.location_driver import LocationDriver -from outpack.metadata import MetadataCore, PacketFile, PacketLocation -from outpack.static import LOCATION_LOCAL -from outpack.util import removeprefix +from pyorderly.outpack.config import Config +from pyorderly.outpack.hash import hash_parse +from pyorderly.outpack.location_driver import LocationDriver +from pyorderly.outpack.metadata import MetadataCore, PacketFile, PacketLocation +from pyorderly.outpack.static import LOCATION_LOCAL +from pyorderly.outpack.util import removeprefix def parse_ssh_url(url): diff --git a/src/outpack/metadata.py b/src/pyorderly/outpack/metadata.py similarity index 95% rename from src/outpack/metadata.py rename to src/pyorderly/outpack/metadata.py index 169e119..6fb3058 100644 --- a/src/outpack/metadata.py +++ b/src/pyorderly/outpack/metadata.py @@ -4,8 +4,8 @@ from dataclasses_json import dataclass_json -from outpack.hash import hash_file -from outpack.tools import GitInfo +from pyorderly.outpack.hash import hash_file +from pyorderly.outpack.tools import GitInfo @dataclass_json() diff --git a/src/outpack/packet.py b/src/pyorderly/outpack/packet.py similarity index 88% rename from src/outpack/packet.py rename to src/pyorderly/outpack/packet.py index 37cae74..5e5cbce 100644 --- a/src/outpack/packet.py +++ b/src/pyorderly/outpack/packet.py @@ -2,20 +2,25 @@ import time from pathlib import Path -from outpack.copy_files import copy_files -from outpack.hash import hash_file, hash_parse, hash_string, hash_validate_file -from outpack.ids import outpack_id, validate_outpack_id -from outpack.location_pull import outpack_location_pull_packet -from outpack.metadata import ( +from pyorderly.outpack.copy_files import copy_files +from pyorderly.outpack.hash import ( + hash_file, + hash_parse, + hash_string, + hash_validate_file, +) +from pyorderly.outpack.ids import outpack_id, validate_outpack_id +from pyorderly.outpack.location_pull import outpack_location_pull_packet +from pyorderly.outpack.metadata import ( MetadataCore, PacketDepends, PacketFile, ) -from outpack.root import mark_known, root_open -from outpack.schema import outpack_schema_version, validate -from outpack.search import as_query, search_unique -from outpack.tools import git_info -from outpack.util import all_normal_files, as_posix_path +from pyorderly.outpack.root import mark_known, root_open +from pyorderly.outpack.schema import outpack_schema_version, validate +from pyorderly.outpack.search import as_query, search_unique +from pyorderly.outpack.tools import git_info +from pyorderly.outpack.util import all_normal_files, as_posix_path # TODO: most of these fields should be private. diff --git a/src/outpack/root.py b/src/pyorderly/outpack/root.py similarity index 90% rename from src/outpack/root.py rename to src/pyorderly/outpack/root.py index d5393b7..9f78e72 100644 --- a/src/outpack/root.py +++ b/src/pyorderly/outpack/root.py @@ -4,13 +4,13 @@ from pathlib import Path from typing import Optional, Union -from outpack.config import read_config -from outpack.filestore import FileStore -from outpack.hash import hash_file, hash_parse -from outpack.index import Index -from outpack.metadata import PacketLocation -from outpack.schema import validate -from outpack.util import find_file_descend +from pyorderly.outpack.config import read_config +from pyorderly.outpack.filestore import FileStore +from pyorderly.outpack.hash import hash_file, hash_parse +from pyorderly.outpack.index import Index +from pyorderly.outpack.metadata import PacketLocation +from pyorderly.outpack.schema import validate +from pyorderly.outpack.util import find_file_descend class OutpackRoot: diff --git a/src/outpack/sandbox.py b/src/pyorderly/outpack/sandbox.py similarity index 95% rename from src/outpack/sandbox.py rename to src/pyorderly/outpack/sandbox.py index 60be973..9cfd136 100644 --- a/src/outpack/sandbox.py +++ b/src/pyorderly/outpack/sandbox.py @@ -5,7 +5,7 @@ from tblib import pickling_support -from outpack.util import openable_temporary_file +from pyorderly.outpack.util import openable_temporary_file def run_in_sandbox(target, args=(), cwd=None, syspath=None): @@ -37,7 +37,7 @@ def run_in_sandbox(target, args=(), cwd=None, syspath=None): cmd = [ sys.executable, "-m", - "outpack.sandbox", + "pyorderly.outpack.sandbox", input_file.name, output_file.name, ] diff --git a/src/outpack/schema/__init__.py b/src/pyorderly/outpack/schema/__init__.py similarity index 89% rename from src/outpack/schema/__init__.py rename to src/pyorderly/outpack/schema/__init__.py index 802023b..e1af115 100644 --- a/src/outpack/schema/__init__.py +++ b/src/pyorderly/outpack/schema/__init__.py @@ -29,5 +29,7 @@ def outpack_schema_version(): def read_schema(name): - schema = importlib_resources.files("outpack.schema").joinpath(name) + schema = importlib_resources.files("pyorderly.outpack.schema").joinpath( + name + ) return schema.read_text() diff --git a/src/outpack/schema/outpack/README.md b/src/pyorderly/outpack/schema/outpack/README.md similarity index 87% rename from src/outpack/schema/outpack/README.md rename to src/pyorderly/outpack/schema/outpack/README.md index 2f44799..ca03a10 100644 --- a/src/outpack/schema/outpack/README.md +++ b/src/pyorderly/outpack/schema/outpack/README.md @@ -1,4 +1,4 @@ -# Imported from outpack +# Imported from pyorderly.outpack * Schema version 0.1.1 * Imported on 2024-05-10 14:22:08.807105 diff --git a/src/outpack/schema/outpack/config.json b/src/pyorderly/outpack/schema/outpack/config.json similarity index 100% rename from src/outpack/schema/outpack/config.json rename to src/pyorderly/outpack/schema/outpack/config.json diff --git a/src/outpack/schema/outpack/git.json b/src/pyorderly/outpack/schema/outpack/git.json similarity index 100% rename from src/outpack/schema/outpack/git.json rename to src/pyorderly/outpack/schema/outpack/git.json diff --git a/src/outpack/schema/outpack/hash.json b/src/pyorderly/outpack/schema/outpack/hash.json similarity index 100% rename from src/outpack/schema/outpack/hash.json rename to src/pyorderly/outpack/schema/outpack/hash.json diff --git a/src/outpack/schema/outpack/location.json b/src/pyorderly/outpack/schema/outpack/location.json similarity index 100% rename from src/outpack/schema/outpack/location.json rename to src/pyorderly/outpack/schema/outpack/location.json diff --git a/src/outpack/schema/outpack/metadata.json b/src/pyorderly/outpack/schema/outpack/metadata.json similarity index 100% rename from src/outpack/schema/outpack/metadata.json rename to src/pyorderly/outpack/schema/outpack/metadata.json diff --git a/src/outpack/schema/outpack/packet-id.json b/src/pyorderly/outpack/schema/outpack/packet-id.json similarity index 100% rename from src/outpack/schema/outpack/packet-id.json rename to src/pyorderly/outpack/schema/outpack/packet-id.json diff --git a/src/outpack/schema/outpack/relative-path.json b/src/pyorderly/outpack/schema/outpack/relative-path.json similarity index 100% rename from src/outpack/schema/outpack/relative-path.json rename to src/pyorderly/outpack/schema/outpack/relative-path.json diff --git a/src/outpack/search.py b/src/pyorderly/outpack/search.py similarity index 95% rename from src/outpack/search.py rename to src/pyorderly/outpack/search.py index 5d868ab..0788a27 100644 --- a/src/outpack/search.py +++ b/src/pyorderly/outpack/search.py @@ -5,12 +5,12 @@ import outpack_query_parser as parser -from outpack.ids import is_outpack_id -from outpack.location import location_resolve_valid -from outpack.location_pull import outpack_location_pull_metadata -from outpack.metadata import MetadataCore, Parameters -from outpack.root import OutpackRoot, root_open -from outpack.search_options import SearchOptions +from pyorderly.outpack.ids import is_outpack_id +from pyorderly.outpack.location import location_resolve_valid +from pyorderly.outpack.location_pull import outpack_location_pull_metadata +from pyorderly.outpack.metadata import MetadataCore, Parameters +from pyorderly.outpack.root import OutpackRoot, root_open +from pyorderly.outpack.search_options import SearchOptions @dataclass diff --git a/src/outpack/search_options.py b/src/pyorderly/outpack/search_options.py similarity index 100% rename from src/outpack/search_options.py rename to src/pyorderly/outpack/search_options.py diff --git a/src/outpack/static.py b/src/pyorderly/outpack/static.py similarity index 100% rename from src/outpack/static.py rename to src/pyorderly/outpack/static.py diff --git a/src/outpack/tools.py b/src/pyorderly/outpack/tools.py similarity index 100% rename from src/outpack/tools.py rename to src/pyorderly/outpack/tools.py diff --git a/src/outpack/util.py b/src/pyorderly/outpack/util.py similarity index 100% rename from src/outpack/util.py rename to src/pyorderly/outpack/util.py diff --git a/src/orderly/read.py b/src/pyorderly/read.py similarity index 98% rename from src/orderly/read.py rename to src/pyorderly/read.py index af67ca3..c220672 100644 --- a/src/orderly/read.py +++ b/src/pyorderly/read.py @@ -101,7 +101,7 @@ def _match_orderly_call(expr): if not isinstance(expr.func, ast.Attribute): return None - if _is_identifier(expr.func.value, "orderly"): + if _is_identifier(expr.func.value, "pyorderly"): return expr.func.attr diff --git a/src/orderly/run.py b/src/pyorderly/run.py similarity index 91% rename from src/orderly/run.py rename to src/pyorderly/run.py index 37a504f..4efe158 100644 --- a/src/orderly/run.py +++ b/src/pyorderly/run.py @@ -3,15 +3,15 @@ from pathlib import Path from typing import Tuple -from orderly.core import Description -from orderly.current import ActiveOrderlyContext, OrderlyCustomMetadata -from orderly.read import orderly_read -from outpack.ids import outpack_id -from outpack.metadata import MetadataCore -from outpack.packet import Packet, insert_packet -from outpack.root import root_open -from outpack.sandbox import run_in_sandbox -from outpack.util import all_normal_files +from pyorderly.core import Description +from pyorderly.current import ActiveOrderlyContext, OrderlyCustomMetadata +from pyorderly.outpack.ids import outpack_id +from pyorderly.outpack.metadata import MetadataCore +from pyorderly.outpack.packet import Packet, insert_packet +from pyorderly.outpack.root import root_open +from pyorderly.outpack.sandbox import run_in_sandbox +from pyorderly.outpack.util import all_normal_files +from pyorderly.read import orderly_read def orderly_run( diff --git a/tests/helpers/__init__.py b/tests/helpers/__init__.py index 1a50c06..55b071e 100644 --- a/tests/helpers/__init__.py +++ b/tests/helpers/__init__.py @@ -9,15 +9,15 @@ from typing import List, Optional import pytest -from orderly.run import orderly_run - -from outpack.init import outpack_init -from outpack.location import outpack_location_add_path -from outpack.metadata import MetadataCore, PacketDepends -from outpack.packet import Packet, insert_packet -from outpack.root import root_open -from outpack.schema import outpack_schema_version -from outpack.util import openable_temporary_file + +from pyorderly.outpack.init import outpack_init +from pyorderly.outpack.location import outpack_location_add_path +from pyorderly.outpack.metadata import MetadataCore, PacketDepends +from pyorderly.outpack.packet import Packet, insert_packet +from pyorderly.outpack.root import root_open +from pyorderly.outpack.schema import outpack_schema_version +from pyorderly.outpack.util import openable_temporary_file +from pyorderly.run import orderly_run from .ssh_server import SSHServer # noqa: F401 diff --git a/tests/orderly/examples/artefact/artefact.py b/tests/orderly/examples/artefact/artefact.py index 9311a8e..ceca17f 100644 --- a/tests/orderly/examples/artefact/artefact.py +++ b/tests/orderly/examples/artefact/artefact.py @@ -1,8 +1,8 @@ import random -import orderly +import pyorderly d = [random.random() for _ in range(10)] -orderly.artefact("Random numbers", "result.txt") +pyorderly.artefact("Random numbers", "result.txt") with open("result.txt", "w") as f: f.writelines(f"{x}\n" for x in d) diff --git a/tests/orderly/examples/depends/depends.py b/tests/orderly/examples/depends/depends.py index 88de7a8..d26559d 100644 --- a/tests/orderly/examples/depends/depends.py +++ b/tests/orderly/examples/depends/depends.py @@ -1,7 +1,7 @@ -import orderly +import pyorderly -orderly.dependency(None, "latest", {"input.txt": "result.txt"}) -orderly.artefact("Summary", "summary.txt") +pyorderly.dependency(None, "latest", {"input.txt": "result.txt"}) +pyorderly.artefact("Summary", "summary.txt") with open("input.txt") as f: d = [float(x.strip()) for x in f.readlines()] diff --git a/tests/orderly/examples/description/description.py b/tests/orderly/examples/description/description.py index 38ebf15..7f99f27 100644 --- a/tests/orderly/examples/description/description.py +++ b/tests/orderly/examples/description/description.py @@ -1,3 +1,3 @@ -import orderly +import pyorderly -orderly.description(display="Some report") +pyorderly.description(display="Some report") diff --git a/tests/orderly/examples/imports/imports.py b/tests/orderly/examples/imports/imports.py index 2866024..8445b80 100644 --- a/tests/orderly/examples/imports/imports.py +++ b/tests/orderly/examples/imports/imports.py @@ -1,4 +1,5 @@ -import orderly from helpers import get_description # type: ignore -orderly.description(display=get_description()) +import pyorderly + +pyorderly.description(display=get_description()) diff --git a/tests/orderly/examples/mp/mp.py b/tests/orderly/examples/mp/mp.py index 0e07f91..a59f2cb 100644 --- a/tests/orderly/examples/mp/mp.py +++ b/tests/orderly/examples/mp/mp.py @@ -1,7 +1,7 @@ import multiprocessing import random -import orderly +import pyorderly def square(x): @@ -9,8 +9,8 @@ def square(x): if __name__ == "__main__": - params = orderly.parameters(method=None) - orderly.artefact("Squared numbers", "result.txt") + params = pyorderly.parameters(method=None) + pyorderly.artefact("Squared numbers", "result.txt") mp = multiprocessing.get_context(params.method) data = [random.random() for _ in range(10)] diff --git a/tests/orderly/examples/parameters/parameters.py b/tests/orderly/examples/parameters/parameters.py index 09ce783..5375a2e 100644 --- a/tests/orderly/examples/parameters/parameters.py +++ b/tests/orderly/examples/parameters/parameters.py @@ -1,5 +1,5 @@ -import orderly +import pyorderly -parameters = orderly.parameters(a=1, b=None) +parameters = pyorderly.parameters(a=1, b=None) with open("result.txt", "w") as f: f.write(f"a: {parameters.a}\nb: {parameters.b}\n") diff --git a/tests/orderly/examples/resource/resource.py b/tests/orderly/examples/resource/resource.py index b160f54..6fb971c 100644 --- a/tests/orderly/examples/resource/resource.py +++ b/tests/orderly/examples/resource/resource.py @@ -1,6 +1,6 @@ -import orderly +import pyorderly -orderly.resource("numbers.txt") +pyorderly.resource("numbers.txt") with open("numbers.txt") as f: dat = [int(x) for x in f.readlines()] diff --git a/tests/orderly/examples/shared/shared.py b/tests/orderly/examples/shared/shared.py index 39b0ef8..6a28861 100644 --- a/tests/orderly/examples/shared/shared.py +++ b/tests/orderly/examples/shared/shared.py @@ -1,6 +1,6 @@ -import orderly +import pyorderly -orderly.shared_resource({"shared_data.txt": "numbers.txt"}) +pyorderly.shared_resource({"shared_data.txt": "numbers.txt"}) with open("shared_data.txt") as f: dat = [int(x) for x in f.readlines()] diff --git a/tests/orderly/examples/shared_dir/shared_dir.py b/tests/orderly/examples/shared_dir/shared_dir.py index 6daa11a..192cba0 100644 --- a/tests/orderly/examples/shared_dir/shared_dir.py +++ b/tests/orderly/examples/shared_dir/shared_dir.py @@ -1,8 +1,8 @@ from operator import mul -import orderly +import pyorderly -orderly.shared_resource({"shared_data": "data"}) +pyorderly.shared_resource({"shared_data": "data"}) with open("shared_data/numbers.txt") as f: numbers = [float(x) for x in f.readlines()] diff --git a/tests/orderly/test_current.py b/tests/orderly/test_current.py index d57b2a9..fe75256 100644 --- a/tests/orderly/test_current.py +++ b/tests/orderly/test_current.py @@ -1,5 +1,6 @@ import pytest -from orderly.current import detect_orderly_interactive_root + +from pyorderly.current import detect_orderly_interactive_root from .. import helpers diff --git a/tests/orderly/test_read.py b/tests/orderly/test_read.py index bca72c8..d928f66 100644 --- a/tests/orderly/test_read.py +++ b/tests/orderly/test_read.py @@ -3,19 +3,20 @@ from pathlib import Path import pytest -from orderly.read import _read_py, orderly_read + +from pyorderly.read import _read_py, orderly_read def test_read_simple_trivial_parameters(): - assert _read_py("orderly.parameters()") == {"parameters": {}} - a = _read_py("orderly.parameters(a=None)") + assert _read_py("pyorderly.parameters()") == {"parameters": {}} + a = _read_py("pyorderly.parameters(a=None)") assert a == {"parameters": {"a": None}} - ab = _read_py("orderly.parameters(a=None, b=1)") + ab = _read_py("pyorderly.parameters(a=None, b=1)") assert ab == {"parameters": {"a": None, "b": 1}} def test_read_parameters_assignment(): - ab = _read_py("params = orderly.parameters(a=None, b=1)") + ab = _read_py("params = pyorderly.parameters(a=None, b=1)") assert ab == {"parameters": {"a": None, "b": 1}} @@ -35,25 +36,28 @@ def foo(): def test_prevent_complex_types_in_parameters(): msg = "Invalid value for argument 'a' to 'parameters()'" with pytest.raises(Exception, match=re.escape(msg)): - _read_py("orderly.parameters(a=len)") + _read_py("pyorderly.parameters(a=len)") @pytest.mark.skipif(sys.version_info < (3, 9), reason="requires 3.9 or later") def test_prevent_duplicate_arguments(): msg = "Duplicate argument 'a' to 'parameters()'" with pytest.raises(Exception, match=re.escape(msg)): - _read_py("orderly.parameters(a=1, a=2, b=2)") + _read_py("pyorderly.parameters(a=1, a=2, b=2)") def test_require_named_arguments(): msg = "All arguments to 'parameters()' must be named" with pytest.raises(Exception, match=re.escape(msg)): - _read_py("orderly.parameters(1, a=2, b=2)") + _read_py("pyorderly.parameters(1, a=2, b=2)") def test_prevent_multiple_calls_to_parameters(): - code = "orderly.parameters(a=1, b=2)\norderly.parameters(c=3)" - msg = "Duplicate call to 'parameters()' on line 2" + code = """ +pyorderly.parameters(a=1, b=2) +pyorderly.parameters(c=3) +""" + msg = "Duplicate call to 'parameters()'" with pytest.raises(Exception, match=re.escape(msg)): _read_py(code) @@ -69,21 +73,21 @@ def test_can_read_report_with_parameters(): def test_can_read_parameters_inside_name_check(): - code = "if __name__ == '__main__':\n orderly.parameters(a=1)" + code = "if __name__ == '__main__':\n pyorderly.parameters(a=1)" assert _read_py(code) == {"parameters": {"a": 1}} - code = "if '__main__' == __name__:\n orderly.parameters(b=2)" + code = "if '__main__' == __name__:\n pyorderly.parameters(b=2)" assert _read_py(code) == {"parameters": {"b": 2}} def test_ignore_parameters_in_nested_code(): - code = "if True:\n orderly.parameters(a=1)" + code = "if True:\n pyorderly.parameters(a=1)" assert _read_py(code) == {"parameters": {}} - code = "def foo():\n orderly.parameters(a=1)" + code = "def foo():\n pyorderly.parameters(a=1)" assert _read_py(code) == {"parameters": {}} - code = "for x in range(10):\n orderly.parameters(a=1)" + code = "for x in range(10):\n pyorderly.parameters(a=1)" assert _read_py(code) == {"parameters": {}} @@ -93,7 +97,7 @@ def test_throw_nice_error_with_kwargs(): "x": 0, "y": False } -orderly.parameters(**pars) +pyorderly.parameters(**pars) """ msg = re.escape("Passing parameters as **kwargs is not supported") with pytest.raises(Exception, match=msg): diff --git a/tests/orderly/test_run.py b/tests/orderly/test_run.py index b57d8af..27aad92 100644 --- a/tests/orderly/test_run.py +++ b/tests/orderly/test_run.py @@ -2,18 +2,18 @@ import os import pytest -from orderly.run import ( +from pytest_unordered import unordered + +from pyorderly.outpack.location import outpack_location_add_path +from pyorderly.outpack.location_pull import outpack_location_pull_metadata +from pyorderly.outpack.metadata import PacketDepends, PacketDependsPath +from pyorderly.outpack.search_options import SearchOptions +from pyorderly.outpack.util import transient_working_directory +from pyorderly.run import ( _validate_parameters, _validate_src_directory, orderly_run, ) -from pytest_unordered import unordered - -from outpack.location import outpack_location_add_path -from outpack.location_pull import outpack_location_pull_metadata -from outpack.metadata import PacketDepends, PacketDependsPath -from outpack.search_options import SearchOptions -from outpack.util import transient_working_directory from .. import helpers @@ -159,8 +159,8 @@ def test_can_use_explicit_resource_directory(tmp_path): helpers.write_file(report / "data" / "numbers.txt", "1\n2\n3\n") code = """ -import orderly -orderly.resource("data") +import pyorderly +pyorderly.resource("data") with open("data/numbers.txt") as f: return str(sum(map(int, f.readlines()))) """ @@ -194,8 +194,8 @@ def test_error_if_script_is_modified(tmp_path): def test_error_if_resource_is_modified(tmp_path): root = helpers.create_temporary_root(tmp_path) code = """ -import orderly -orderly.resource("data.txt") +import pyorderly +pyorderly.resource("data.txt") with open("data.txt", "w") as f: f.write("new data") """ @@ -242,8 +242,8 @@ def test_can_error_if_artefacts_not_produced(tmp_path): root = helpers.create_temporary_root(tmp_path) code = """ -import orderly -orderly.artefact("something", "a") +import pyorderly +pyorderly.artefact("something", "a") """ with pytest.raises( Exception, match="Script did not produce the expected artefacts: 'a'" @@ -251,9 +251,9 @@ def test_can_error_if_artefacts_not_produced(tmp_path): helpers.run_snippet("report", code, root) code = """ -import orderly -orderly.artefact("something", "a") -orderly.artefact("something", ["c", "b"]) +import pyorderly +pyorderly.artefact("something", "a") +pyorderly.artefact("something", ["c", "b"]) """ with pytest.raises( Exception, diff --git a/tests/orderly/test_run_metadata.py b/tests/orderly/test_run_metadata.py index 68a202e..c223627 100644 --- a/tests/orderly/test_run_metadata.py +++ b/tests/orderly/test_run_metadata.py @@ -1,12 +1,12 @@ import os -import orderly import pytest -from orderly.current import ActiveOrderlyContext -from orderly.run import orderly_run -from outpack.packet import Packet -from outpack.util import transient_working_directory +import pyorderly +from pyorderly.current import ActiveOrderlyContext +from pyorderly.outpack.packet import Packet +from pyorderly.outpack.util import transient_working_directory +from pyorderly.run import orderly_run from .. import helpers @@ -17,18 +17,18 @@ def test_resource_requires_that_files_exist_with_no_packet(tmp_path): src.mkdir(parents=True) with transient_working_directory(src): with pytest.raises(Exception, match="File does not exist:"): - orderly.resource("a") + pyorderly.resource("a") (src / "a").touch() with transient_working_directory(src): - res = orderly.resource("a") + res = pyorderly.resource("a") assert res == ["a"] def test_resource_requires_relative_paths(tmp_path): (tmp_path / "a").touch() with pytest.raises(Exception, match="to be a relative path"): - orderly.resource(str(tmp_path / "a")) + pyorderly.resource(str(tmp_path / "a")) def test_resource_expands_lists_with_no_packet(tmp_path): @@ -37,7 +37,7 @@ def test_resource_expands_lists_with_no_packet(tmp_path): helpers.touch_files(src / "a" / "x", src / "a" / "y") with transient_working_directory(src): - res = orderly.resource("a") + res = pyorderly.resource("a") assert set(res) == {os.path.join("a", "x"), os.path.join("a", "y")} @@ -49,7 +49,7 @@ def test_resource_requires_file_exists_with_packet(tmp_path): p = Packet(root, src, "tmp") with ActiveOrderlyContext(p, src) as active: with transient_working_directory(src): - res = orderly.resource(["a"]) + res = pyorderly.resource(["a"]) assert active.resources == res @@ -61,7 +61,7 @@ def test_shared_resource_can_copy_single_name(tmp_path): src = tmp_path / "src" / "x" src.mkdir(parents=True) with transient_working_directory(src): - res = orderly.shared_resource("numbers.txt") + res = pyorderly.shared_resource("numbers.txt") assert (src / "numbers.txt").exists() assert res == {"numbers.txt": "numbers.txt"} @@ -76,7 +76,7 @@ def test_shared_resource_can_copy_multiple_names(tmp_path): src = tmp_path / "src" / "x" src.mkdir(parents=True) with transient_working_directory(src): - res = orderly.shared_resource(["numbers.txt", "data"]) + res = pyorderly.shared_resource(["numbers.txt", "data"]) assert (src / "numbers.txt").exists() assert (src / "data" / "weights.txt").exists() @@ -95,7 +95,7 @@ def test_shared_resource_can_rename_files_when_copying(tmp_path): src = tmp_path / "src" / "x" src.mkdir(parents=True) with transient_working_directory(src): - res = orderly.shared_resource( + res = pyorderly.shared_resource( { "foo.txt": "numbers.txt", "bar.txt": os.path.join("data", "weights.txt"), @@ -123,7 +123,7 @@ def test_shared_resource_requires_relative_paths(tmp_path): with transient_working_directory(src): with pytest.raises(Exception, match="to be a relative path"): - orderly.shared_resource(str(tmp_path / "shared" / "numbers.txt")) + pyorderly.shared_resource(str(tmp_path / "shared" / "numbers.txt")) def test_artefact_is_allowed_without_packet(tmp_path): @@ -131,7 +131,7 @@ def test_artefact_is_allowed_without_packet(tmp_path): src = tmp_path / "src" / "x" src.mkdir(parents=True) with transient_working_directory(src): - res = orderly.artefact("a", "b") + res = pyorderly.artefact("a", "b") assert res == ["b"] @@ -141,7 +141,7 @@ def test_can_add_description(tmp_path): src.mkdir() p = Packet(root, src, "tmp") with ActiveOrderlyContext(p, src) as active: - orderly.description( + pyorderly.description( long="long description", display="display description", custom={"a": 1, "b": "foo"}, @@ -157,9 +157,9 @@ def test_cant_add_description_twice(tmp_path): src.mkdir(parents=True) p = Packet(root, src, "tmp") with ActiveOrderlyContext(p, src): - orderly.description(long="long description") + pyorderly.description(long="long description") with pytest.raises(Exception, match="Only one call to 'description'"): - orderly.description(display="display description") + pyorderly.description(display="display description") def test_can_run_description_without_packet_with_no_effect(tmp_path): @@ -167,7 +167,7 @@ def test_can_run_description_without_packet_with_no_effect(tmp_path): src = tmp_path / "src" / "x" src.mkdir(parents=True) with transient_working_directory(src): - res = orderly.description( + res = pyorderly.description( long="long description", display="display description", custom={"a": 1, "b": "foo"}, @@ -185,7 +185,7 @@ def test_can_use_dependency(tmp_path): with ActiveOrderlyContext(p, src): with transient_working_directory(src): files = {"input.txt": "result.txt"} - result = orderly.dependency(None, "latest", files) + result = pyorderly.dependency(None, "latest", files) assert result.id == id1 assert result.name == "data" @@ -203,7 +203,7 @@ def test_dependency_must_have_empty_name(tmp_path): with ActiveOrderlyContext(p, src): with transient_working_directory(src): with pytest.raises(Exception, match="'name' must be None"): - orderly.dependency("data", "latest", {}) + pyorderly.dependency("data", "latest", {}) def test_can_use_dependency_without_packet(tmp_path): @@ -213,7 +213,7 @@ def test_can_use_dependency_without_packet(tmp_path): src = tmp_path / "src" / "depends" with transient_working_directory(src): files = {"input.txt": "result.txt"} - result = orderly.dependency(None, "latest", files) + result = pyorderly.dependency(None, "latest", files) assert result.id == id1 assert result.name == "data" @@ -230,8 +230,8 @@ def test_can_use_parameters(tmp_path): p = Packet(root, src, "tmp", parameters={"x": 1, "y": "foo"}) with ActiveOrderlyContext(p, src): with transient_working_directory(src): - params = orderly.parameters(x=None, y=None) - assert params == orderly.Parameters(x=1, y="foo") + params = pyorderly.parameters(x=None, y=None) + assert params == pyorderly.Parameters(x=1, y="foo") def test_can_use_parameters_without_packet(tmp_path): @@ -240,15 +240,15 @@ def test_can_use_parameters_without_packet(tmp_path): src.mkdir(parents=True) with transient_working_directory(src): - p = orderly.parameters(x=1, y="foo") - assert p == orderly.Parameters(x=1, y="foo") + p = pyorderly.parameters(x=1, y="foo") + assert p == pyorderly.Parameters(x=1, y="foo") with pytest.raises( Exception, match="No value was specified for parameter x." ): - orderly.parameters(x=None, y="foo") + pyorderly.parameters(x=None, y="foo") with pytest.raises( Exception, match="No value was specified for parameters x, y." ): - orderly.parameters(x=None, y=None) + pyorderly.parameters(x=None, y=None) diff --git a/tests/outpack/__init__.py b/tests/outpack/__init__.py new file mode 100644 index 0000000..609df98 --- /dev/null +++ b/tests/outpack/__init__.py @@ -0,0 +1,3 @@ +# SPDX-FileCopyrightText: 2023-present Rich FitzJohn +# +# SPDX-License-Identifier: MIT diff --git a/tests/test_config.py b/tests/outpack/test_config.py similarity index 94% rename from tests/test_config.py rename to tests/outpack/test_config.py index 65e3f9f..133ab5c 100644 --- a/tests/test_config.py +++ b/tests/outpack/test_config.py @@ -1,6 +1,6 @@ import pytest -from outpack.config import Config, Location, read_config, write_config +from pyorderly.outpack.config import Config, Location, read_config, write_config def test_can_read_config(): diff --git a/tests/test_copy_files.py b/tests/outpack/test_copy_files.py similarity index 88% rename from tests/test_copy_files.py rename to tests/outpack/test_copy_files.py index 8ad3df4..4475a77 100644 --- a/tests/test_copy_files.py +++ b/tests/outpack/test_copy_files.py @@ -2,11 +2,15 @@ import pytest -from outpack.copy_files import _plan_copy_files, _validate_files, copy_files -from outpack.location_pull import outpack_location_pull_metadata -from outpack.search_options import SearchOptions +from pyorderly.outpack.copy_files import ( + _plan_copy_files, + _validate_files, + copy_files, +) +from pyorderly.outpack.location_pull import outpack_location_pull_metadata +from pyorderly.outpack.search_options import SearchOptions -from . import helpers +from .. import helpers def test_can_clean_file_input(): diff --git a/tests/test_filestore.py b/tests/outpack/test_filestore.py similarity index 97% rename from tests/test_filestore.py rename to tests/outpack/test_filestore.py index 2423ae3..4596205 100644 --- a/tests/test_filestore.py +++ b/tests/outpack/test_filestore.py @@ -4,8 +4,8 @@ import pytest -from outpack.filestore import FileStore -from outpack.hash import Hash, hash_file +from pyorderly.outpack.filestore import FileStore +from pyorderly.outpack.hash import Hash, hash_file def randstr(n): diff --git a/tests/test_hash.py b/tests/outpack/test_hash.py similarity index 97% rename from tests/test_hash.py rename to tests/outpack/test_hash.py index 3773ea4..bdbd269 100644 --- a/tests/test_hash.py +++ b/tests/outpack/test_hash.py @@ -1,6 +1,6 @@ import pytest -from outpack.hash import ( +from pyorderly.outpack.hash import ( Hash, hash_file, hash_parse, diff --git a/tests/test_ids.py b/tests/outpack/test_ids.py similarity index 96% rename from tests/test_ids.py rename to tests/outpack/test_ids.py index ff5a2ab..8335a47 100644 --- a/tests/test_ids.py +++ b/tests/outpack/test_ids.py @@ -1,6 +1,6 @@ import pytest -from outpack.ids import ( +from pyorderly.outpack.ids import ( fractional_to_bytes, is_outpack_id, outpack_id, diff --git a/tests/test_index.py b/tests/outpack/test_index.py similarity index 92% rename from tests/test_index.py rename to tests/outpack/test_index.py index 7ffedc0..2ae8a01 100644 --- a/tests/test_index.py +++ b/tests/outpack/test_index.py @@ -3,8 +3,8 @@ import pytest -from outpack.index import Index -from outpack.metadata import read_metadata_core +from pyorderly.outpack.index import Index +from pyorderly.outpack.metadata import read_metadata_core def test_can_create_index(): diff --git a/tests/test_init.py b/tests/outpack/test_init.py similarity index 94% rename from tests/test_init.py rename to tests/outpack/test_init.py index c7a70b9..f54a51a 100644 --- a/tests/test_init.py +++ b/tests/outpack/test_init.py @@ -1,7 +1,7 @@ import pytest -from outpack.config import read_config -from outpack.init import outpack_init +from pyorderly.outpack.config import read_config +from pyorderly.outpack.init import outpack_init def test_can_create_new_repo(tmp_path): diff --git a/tests/test_location.py b/tests/outpack/test_location.py similarity index 98% rename from tests/test_location.py rename to tests/outpack/test_location.py index aadce8c..1a0e6fc 100644 --- a/tests/test_location.py +++ b/tests/outpack/test_location.py @@ -1,6 +1,6 @@ import pytest -from outpack.location import ( +from pyorderly.outpack.location import ( location_resolve_valid, outpack_location_add, outpack_location_add_path, @@ -9,7 +9,7 @@ outpack_location_rename, ) -from .helpers import create_temporary_root, create_temporary_roots +from ..helpers import create_temporary_root, create_temporary_roots def test_no_locations_except_local_by_default(tmp_path): diff --git a/tests/test_location_path.py b/tests/outpack/test_location_path.py similarity index 93% rename from tests/test_location_path.py rename to tests/outpack/test_location_path.py index 0d06ec5..5f2ed70 100644 --- a/tests/test_location_path.py +++ b/tests/outpack/test_location_path.py @@ -2,12 +2,12 @@ import pytest -from outpack.hash import hash_file -from outpack.location_path import OutpackLocationPath -from outpack.metadata import PacketFile -from outpack.util import read_string +from pyorderly.outpack.hash import hash_file +from pyorderly.outpack.location_path import OutpackLocationPath +from pyorderly.outpack.metadata import PacketFile +from pyorderly.outpack.util import read_string -from .helpers import create_random_packet, create_temporary_root +from ..helpers import create_random_packet, create_temporary_root def test_can_construct_location_path_object(tmp_path): diff --git a/tests/test_location_pull.py b/tests/outpack/test_location_pull.py similarity index 98% rename from tests/test_location_pull.py rename to tests/outpack/test_location_pull.py index f89500a..ba3d97d 100644 --- a/tests/test_location_pull.py +++ b/tests/outpack/test_location_pull.py @@ -7,14 +7,14 @@ import pytest -from outpack.hash import hash_file -from outpack.ids import outpack_id -from outpack.location import ( +from pyorderly.outpack.hash import hash_file +from pyorderly.outpack.ids import outpack_id +from pyorderly.outpack.location import ( location_resolve_valid, outpack_location_add_path, outpack_location_list, ) -from outpack.location_pull import ( +from pyorderly.outpack.location_pull import ( PullPlanInfo, _find_all_dependencies, location_build_pull_plan, @@ -22,10 +22,10 @@ outpack_location_pull_metadata, outpack_location_pull_packet, ) -from outpack.search_options import SearchOptions -from outpack.util import read_string +from pyorderly.outpack.search_options import SearchOptions +from pyorderly.outpack.util import read_string -from .helpers import ( +from ..helpers import ( create_metadata_depends, create_packet, create_random_packet, diff --git a/tests/test_location_ssh.py b/tests/outpack/test_location_ssh.py similarity index 95% rename from tests/test_location_ssh.py rename to tests/outpack/test_location_ssh.py index 2a5d5f8..164e655 100644 --- a/tests/test_location_ssh.py +++ b/tests/outpack/test_location_ssh.py @@ -4,18 +4,18 @@ import paramiko import pytest -from outpack.hash import hash_file -from outpack.location import outpack_location_add -from outpack.location_pull import ( +from pyorderly.outpack.hash import hash_file +from pyorderly.outpack.location import outpack_location_add +from pyorderly.outpack.location_pull import ( outpack_location_pull_metadata, outpack_location_pull_packet, ) -from outpack.location_ssh import OutpackLocationSSH, parse_ssh_url -from outpack.metadata import PacketFile -from outpack.static import LOCATION_LOCAL -from outpack.util import read_string +from pyorderly.outpack.location_ssh import OutpackLocationSSH, parse_ssh_url +from pyorderly.outpack.metadata import PacketFile +from pyorderly.outpack.static import LOCATION_LOCAL +from pyorderly.outpack.util import read_string -from .helpers import ( +from ..helpers import ( SSHServer, create_random_packet, create_temporary_root, diff --git a/tests/test_metadata.py b/tests/outpack/test_metadata.py similarity index 98% rename from tests/test_metadata.py rename to tests/outpack/test_metadata.py index 6c9a3a5..72b2b5b 100644 --- a/tests/test_metadata.py +++ b/tests/outpack/test_metadata.py @@ -2,7 +2,7 @@ import pytest -from outpack.metadata import ( +from pyorderly.outpack.metadata import ( PacketDependsPath, PacketFile, read_metadata_core, diff --git a/tests/test_packet.py b/tests/outpack/test_packet.py similarity index 97% rename from tests/test_packet.py rename to tests/outpack/test_packet.py index ea81766..cb7f256 100644 --- a/tests/test_packet.py +++ b/tests/outpack/test_packet.py @@ -3,12 +3,12 @@ import pytest from jsonschema.exceptions import ValidationError -from outpack.init import outpack_init -from outpack.metadata import PacketDependsPath -from outpack.packet import Packet -from outpack.root import root_open +from pyorderly.outpack.init import outpack_init +from pyorderly.outpack.metadata import PacketDependsPath +from pyorderly.outpack.packet import Packet +from pyorderly.outpack.root import root_open -from .helpers import create_packet, create_random_packet, create_temporary_root +from ..helpers import create_packet, create_random_packet, create_temporary_root def test_can_add_simple_packet(tmp_path): diff --git a/tests/test_root.py b/tests/outpack/test_root.py similarity index 92% rename from tests/test_root.py rename to tests/outpack/test_root.py index d729916..b075d0a 100644 --- a/tests/test_root.py +++ b/tests/outpack/test_root.py @@ -2,14 +2,14 @@ import pytest -from outpack.config import read_config -from outpack.filestore import FileStore -from outpack.index import Index -from outpack.init import outpack_init -from outpack.root import find_file_by_hash, root_open -from outpack.util import transient_working_directory - -from . import helpers +from pyorderly.outpack.config import read_config +from pyorderly.outpack.filestore import FileStore +from pyorderly.outpack.index import Index +from pyorderly.outpack.init import outpack_init +from pyorderly.outpack.root import find_file_by_hash, root_open +from pyorderly.outpack.util import transient_working_directory + +from .. import helpers def test_can_open_existing_root(): diff --git a/tests/test_sandbox.py b/tests/outpack/test_sandbox.py similarity index 98% rename from tests/test_sandbox.py rename to tests/outpack/test_sandbox.py index ab0d1bf..b483001 100644 --- a/tests/test_sandbox.py +++ b/tests/outpack/test_sandbox.py @@ -5,7 +5,7 @@ import pytest -from outpack.sandbox import run_in_sandbox +from pyorderly.outpack.sandbox import run_in_sandbox def sandbox_returns_value(): diff --git a/tests/test_schema.py b/tests/outpack/test_schema.py similarity index 88% rename from tests/test_schema.py rename to tests/outpack/test_schema.py index 5326153..15dbbc9 100644 --- a/tests/test_schema.py +++ b/tests/outpack/test_schema.py @@ -3,7 +3,11 @@ import pytest from jsonschema.exceptions import ValidationError -from outpack.schema import outpack_schema_version, read_schema, validate +from pyorderly.outpack.schema import ( + outpack_schema_version, + read_schema, + validate, +) def test_can_read_schema(): diff --git a/tests/test_search.py b/tests/outpack/test_search.py similarity index 97% rename from tests/test_search.py rename to tests/outpack/test_search.py index 001a103..f11e486 100644 --- a/tests/test_search.py +++ b/tests/outpack/test_search.py @@ -2,12 +2,12 @@ import pytest -from outpack.location import outpack_location_add_path -from outpack.location_pull import outpack_location_pull_metadata -from outpack.search import Query, search, search_unique -from outpack.search_options import SearchOptions +from pyorderly.outpack.location import outpack_location_add_path +from pyorderly.outpack.location_pull import outpack_location_pull_metadata +from pyorderly.outpack.search import Query, search, search_unique +from pyorderly.outpack.search_options import SearchOptions -from .helpers import ( +from ..helpers import ( create_random_packet, create_temporary_root, create_temporary_roots, diff --git a/tests/test_search_options.py b/tests/outpack/test_search_options.py similarity index 94% rename from tests/test_search_options.py rename to tests/outpack/test_search_options.py index 7d31ef3..3598aa1 100644 --- a/tests/test_search_options.py +++ b/tests/outpack/test_search_options.py @@ -1,6 +1,6 @@ import pytest -from outpack.search_options import SearchOptions +from pyorderly.outpack.search_options import SearchOptions def test_defaults_are_reasonable(): diff --git a/tests/test_tools.py b/tests/outpack/test_tools.py similarity index 96% rename from tests/test_tools.py rename to tests/outpack/test_tools.py index 87c6885..c07b916 100644 --- a/tests/test_tools.py +++ b/tests/outpack/test_tools.py @@ -1,6 +1,6 @@ import pygit2 -from outpack.tools import GitInfo, git_info +from pyorderly.outpack.tools import GitInfo, git_info def simple_git_example(path, remote=None): diff --git a/tests/test_util.py b/tests/outpack/test_util.py similarity index 99% rename from tests/test_util.py rename to tests/outpack/test_util.py index 4aa3664..7714b98 100644 --- a/tests/test_util.py +++ b/tests/outpack/test_util.py @@ -4,7 +4,7 @@ import pytest -from outpack.util import ( +from pyorderly.outpack.util import ( all_normal_files, as_posix_path, assert_file_exists, @@ -23,7 +23,7 @@ time_to_num, ) -from . import helpers +from .. import helpers def test_find_descend(tmp_path):