- Created integration tests for complex scenarios in `tests/integration/test_complex_scenarios.py`.
- Added unit tests for core functionality, convenience functions, security features, and error handling in `tests/unit/test_archive_basics.py`, `tests/unit/test_convenience_functions.py`, `tests/unit/test_security_and_errors.py`.
- Implemented tests for temporary file exclusion, large file operations, and complex directory structures.
- Included tests for atomic operations and compression level validation.
- Established a structure for integration and unit tests with appropriate docstrings and assertions.
Introduced a `cmd_version` function to handle the `--version` flag, replacing the previous implementation that used `argparse`'s `action='version'`. Updated the argument parser and command execution logic to support the new version handling.
Modified the CI/CD workflow to ignore changes to markdown files, LICENSE, documentation, and .gitignore files for push and pull request events. This helps optimize the workflow by skipping unnecessary builds.
Improved phrasing and formatting in the README to enhance clarity and consistency. Removed redundant sections, streamlined explanations, and updated examples for better readability and usability.
- Created detailed YAML templates for various issue types to streamline user submissions and improve issue tracking.
- Added a comprehensive pull request template to guide contributors in providing necessary information.
- Developed a contributing guide to outline project setup, contribution types, testing procedures, and code style guidelines.
Revised the README to include a more detailed and professional description of the **tzst** library, highlighting its features, performance, and compatibility with Python 3.12+.
Updated `_create_archive_impl` to handle current directory archiving more robustly, including resolving paths, excluding temporary files, and ensuring the archive file itself is excluded. Added comprehensive tests to verify behavior for edge cases and temporary file exclusion patterns.
Introduced a .codecov.yml file to configure Codecov settings, updated the CI workflow to include Codecov token and slug, added a Codecov badge to README.md, and adjusted coverage options in pyproject.toml for improved reporting.
Updated the test to correctly reference the extracted file path in the 'test_no_atomic_extracted' scenario, ensuring the test checks the correct file location.
Introduced a new test case to verify that invalid compression levels return proper error codes. Minor formatting adjustments were also made to improve code readability.
Introduced a '--version' argument in the CLI to display version information. Updated test cases to reflect changes in compression level validation and error codes. Adjusted special character handling in test_core.py and added integration test markers in pyproject.toml.
Refactored the archive creation workflow in `cli.py` to improve modularity and error handling. Added helper functions for file validation, argument parsing, and exception handling. Removed `test_fixes.py` as it is no longer relevant to the updated CLI structure.
Enhanced error handling in `cli.py` for invalid compression levels, filters, and file path issues. Added `test_fixes.py` to verify CLI behavior, including tests for help output, invalid arguments, and edge cases.
Updated the `validate_compression_level` function to suppress exception chaining when raising `argparse.ArgumentTypeError`. This improves error clarity by removing unnecessary context from the original `ValueError`.
Introduced a `validate_compression_level` function to ensure compression levels are within the valid range (1-22). Updated CLI argument parsing to use this validation and added tests to verify valid, invalid, and non-numeric compression levels.
Updated test cases in `test_cli.py` and `test_platform_specific.py` to use argument unpacking (`*files`) for file lists passed to the `main` function. This improves readability and consistency across test cases.
Resolves a critical bug in non-atomic archive creation where relative
archive paths failed when the working directory changed during operation.
The fix converts archive paths to absolute before changing directories.
Consolidates duplicate CLI and security tests into comprehensive test
suites to eliminate redundancy and improve maintainability. Adds
extensive edge case coverage including platform-specific features,
Unicode handling, and performance scenarios.
Updates version to 1.0.1 and ensures proper exit code propagation
in the main entry point for better script integration.
Updated `_create_archive_impl` to handle the current directory (".") more effectively by adding its contents without the "./" prefix. Also normalized path separators and improved handling of relative paths in the archive.
Updated the CLI help text in `cli.py` to remove unnecessary line breaks for better readability and consistency in the command reference and argument descriptions.
Added documentation for the '--no-atomic' option in the 'create' command, including its usage and a note that it is not recommended. This improves clarity for users regarding atomic file operations.
Modified the CI workflow to write the version output to the GITHUB_OUTPUT file instead of using the deprecated 'set-output' command. Added 'os' module import to support this change.
Extracted verbose and simple archive listing logic into separate helper functions `_print_verbose_listing` and `_print_simple_listing` to improve code readability and maintainability in `cmd_list`.
Updated test cases to use unpacking syntax (*file_paths) for passing file paths to CLI commands. This improves readability and ensures consistent argument handling across all test scenarios.
Updated `pyproject.toml` to include additional Ruff configuration options and improved linting rules. Enhanced docstrings in `cli.py` and `core.py` with `See Also` references for better code navigation and understanding.
Updated the CI workflow to use 'ruff format' instead of 'black' for format checks. Enhanced docstrings across CLI commands and exception classes for better clarity and documentation. Adjusted pyproject.toml to remove 'black' from dev dependencies and added new files to sdist include list.
Updated error messages in `cli.py` for consistency and clarity by replacing colons with dashes. Removed compatibility fix for Python 3.14 in `core.py` as it is no longer needed.
Removed support for Python 3.14 pre-release across CI workflows, README, and pyproject.toml. Updated zstandard dependency version in README and adjusted Ruff target version to Python 3.12.
Updated the zstandard dependency version in pyproject.toml to allow versions starting from 0.23.0. Removed a compatibility fix for Python 3.14 in src/tzst/__init__.py as it is no longer needed.
Updated the zstandard dependency to version 0.23.1 in README.md and pyproject.toml. Added a compatibility fix in src/tzst/core.py for Python 3.14 due to the removal of ByteString from the typing module.
Removed unnecessary version check and simplified compatibility fix for Python 3.14 by directly importing ByteString from collections.abc and assigning it to typing.ByteString.
Updated the zstandard dependency to version 0.23.0 in README.md and pyproject.toml. Added a compatibility fix in src/tzst/__init__.py for Python 3.14 due to the removal of ByteString from typing.
Updated CI workflows to include Python 3.14 with pre-release support. Modified README and pyproject.toml to reflect compatibility with Python 3.14. Adjusted ruff target version to Python 3.14.
Updated tests in `test_core.py` to use the `strict=True` parameter in `zip` for better error handling when iterating over buffered and streaming contents. This ensures mismatched lengths are caught during testing.
This commit updates the CI configuration, pyproject.toml, and codebase to drop support for Python versions below 3.12 and add support for Python 3.13. Type hints are updated to use modern syntax, and redundant checks for extraction filter support are removed as Python 3.12+ always supports filters.
Dropped custom extraction filter implementations and related exception classes for older Python versions in `core.py`. Updated README to reflect the new minimum Python version requirement (3.12) and removed outdated support section.
Reordered arguments in the test_filter_with_other_options method for better readability and consistency. This change improves clarity in the test setup.
Introduced security filters for extracting `.tzst` archives, including backward compatibility for Python < 3.12. Updated README with documentation on filter usage and added implementation for 'data', 'tar', and 'fully_trusted' filters in `core.py`. Bumped version to 0.4.0 in `__init__.py`.