diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 72bf568c..23cb4fd8 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -4,4 +4,4 @@ commit = True message = [skip ci] Bump version: {current_version} → {new_version} tag = False -[bumpversion:file:src/duct.py] +[bumpversion:file:src/duct/__init__.py] diff --git a/setup.cfg b/setup.cfg index 2e68507d..07ae89c8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -46,15 +46,18 @@ project_urls = Bug Tracker = https://github.com/con/duct/issues [options] -py_modules = duct +packages = find_namespace: package_dir = =src include_package_data = True python_requires = >= 3.8 +[options.packages.find] +where = src + [options.entry_points] console_scripts = - duct = duct:main + duct = duct.__main__:main [mypy] allow_incomplete_defs = False diff --git a/src/duct/__init__.py b/src/duct/__init__.py new file mode 100644 index 00000000..f102a9ca --- /dev/null +++ b/src/duct/__init__.py @@ -0,0 +1 @@ +__version__ = "0.0.1" diff --git a/src/duct.py b/src/duct/__main__.py old mode 100755 new mode 100644 similarity index 99% rename from src/duct.py rename to src/duct/__main__.py index 80c28d28..abd038d7 --- a/src/duct.py +++ b/src/duct/__main__.py @@ -14,8 +14,8 @@ import threading import time from typing import IO, Any, TextIO +from . import __version__ -__version__ = "0.0.1" ENV_PREFIXES = ("PBS_", "SLURM_", "OSG") diff --git a/src/duct/py.typed b/src/duct/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/test/test_execution.py b/test/test_execution.py index 7b67d65d..60a3758e 100644 --- a/test/test_execution.py +++ b/test/test_execution.py @@ -4,7 +4,7 @@ from unittest import mock import pytest from utils import assert_files -from duct import Arguments, Outputs, RecordTypes, execute +from duct.__main__ import Arguments, Outputs, RecordTypes, execute TEST_SCRIPT = str(Path(__file__).with_name("data") / "test_script.py") diff --git a/test/test_helpers.py b/test/test_helpers.py index 38a9c511..cd23487f 100644 --- a/test/test_helpers.py +++ b/test/test_helpers.py @@ -1,7 +1,7 @@ from __future__ import annotations from unittest import mock import pytest -from duct import ensure_directories +from duct.__main__ import ensure_directories @pytest.mark.parametrize( @@ -12,19 +12,19 @@ "/abs/path/", ], ) -@mock.patch("duct.os.makedirs") +@mock.patch("duct.__main__.os.makedirs") def test_ensure_directories_with_dirs(mock_mkdir: mock.MagicMock, path: str) -> None: ensure_directories(path) mock_mkdir.assert_called_once_with(path, exist_ok=True) -@mock.patch("duct.os.makedirs") +@mock.patch("duct.__main__.os.makedirs") def test_ensure_directories_with_file(mock_mkdir: mock.MagicMock) -> None: ensure_directories("just_a_file_name") mock_mkdir.assert_not_called() -@mock.patch("duct.os.makedirs") +@mock.patch("duct.__main__.os.makedirs") def test_ensure_directories_with_filepart_and_directory_part( mock_mkdir: mock.MagicMock, ) -> None: diff --git a/test/test_prepare_outputs.py b/test/test_prepare_outputs.py index 24fdbe8c..1a602fa8 100644 --- a/test/test_prepare_outputs.py +++ b/test/test_prepare_outputs.py @@ -2,13 +2,13 @@ import subprocess from unittest.mock import MagicMock, call, patch from utils import MockStream -from duct import Outputs, prepare_outputs +from duct.__main__ import Outputs, prepare_outputs @patch("sys.stdout", new_callable=MockStream) def test_prepare_outputs_all_stdout(mock_stdout: MockStream) -> None: output_prefix = "test_outputs_" - with patch("duct.TailPipe") as mock_tee_stream, patch( + with patch("duct.__main__.TailPipe") as mock_tee_stream, patch( "builtins.open", new_callable=MagicMock ) as mock_open: mock_tee_stream.return_value.start = MagicMock() @@ -23,7 +23,7 @@ def test_prepare_outputs_all_stdout(mock_stdout: MockStream) -> None: @patch("sys.stderr", new_callable=MockStream) def test_prepare_outputs_all_stderr(mock_stderr: MockStream) -> None: output_prefix = "test_outputs_" - with patch("duct.TailPipe") as mock_tee_stream, patch( + with patch("duct.__main__.TailPipe") as mock_tee_stream, patch( "builtins.open", new_callable=MagicMock ) as mock_open: mock_tee_stream.return_value.start = MagicMock() @@ -68,7 +68,7 @@ def test_prepare_outputs_all_all( mock_stdout: MockStream, mock_stderr: MockStream ) -> None: output_prefix = "test_outputs_" - with patch("duct.TailPipe") as mock_tee_stream: + with patch("duct.__main__.TailPipe") as mock_tee_stream: mock_tee_stream.return_value.start = MagicMock() stdout, stderr = prepare_outputs(Outputs.ALL, Outputs.ALL, output_prefix) assert stdout == mock_tee_stream.return_value diff --git a/test/test_report.py b/test/test_report.py index 0846e9da..7f6e6df6 100644 --- a/test/test_report.py +++ b/test/test_report.py @@ -1,5 +1,5 @@ from __future__ import annotations -from duct import ProcessStats, Sample +from duct.__main__ import ProcessStats, Sample stat0 = ProcessStats( pcpu=0.0, pmem=0, rss=0, vsz=0, timestamp="2024-06-11T10:09:37-04:00" diff --git a/test/test_tailpipe.py b/test/test_tailpipe.py index f2a29659..5ac7598b 100644 --- a/test/test_tailpipe.py +++ b/test/test_tailpipe.py @@ -5,7 +5,7 @@ from unittest.mock import patch import pytest from utils import MockStream -from duct import TailPipe +from duct.__main__ import TailPipe # 10^7 line fixture is about 70MB FIXTURE_LIST = [f"ten_{i}" for i in range(1, 8)]