Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-humanreadable for
openSUSE:Factory checked in at 2026-05-10 16:48:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-humanreadable (Old)
and /work/SRC/openSUSE:Factory/.python-humanreadable.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-humanreadable"
Sun May 10 16:48:19 2026 rev:6 rq:1352260 version:0.4.3
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-humanreadable/python-humanreadable.changes
2025-06-10 09:09:35.226104428 +0200
+++
/work/SRC/openSUSE:Factory/.python-humanreadable.new.1966/python-humanreadable.changes
2026-05-10 16:49:03.962600567 +0200
@@ -1,0 +2,11 @@
+Sun May 10 10:00:54 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.4.3:
+ * Improve error handling
+- update to 0.4.2:
+ * Bump the actions-dependencies group across 1 directory with 6
+ updates
+ * Drop support for Python 3.9 and add support for Python 3.14
+ * Update typepy version constraint to <3
+
+-------------------------------------------------------------------
Old:
----
humanreadable-0.4.1.tar.gz
New:
----
humanreadable-0.4.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-humanreadable.spec ++++++
--- /var/tmp/diff_new_pack.GI5tfl/_old 2026-05-10 16:49:04.894638710 +0200
+++ /var/tmp/diff_new_pack.GI5tfl/_new 2026-05-10 16:49:04.902639038 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-humanreadable
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-humanreadable
-Version: 0.4.1
+Version: 0.4.3
Release: 0
Summary: A Python library to convert from human-readable values to
Python values
License: MIT
++++++ humanreadable-0.4.1.tar.gz -> humanreadable-0.4.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/.github/workflows/ci.yml
new/humanreadable-0.4.3/.github/workflows/ci.yml
--- old/humanreadable-0.4.1/.github/workflows/ci.yml 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/.github/workflows/ci.yml 2026-05-09
16:45:10.000000000 +0200
@@ -26,12 +26,12 @@
timeout-minutes: 20
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- - uses: actions/setup-python@v5
+ - uses: actions/setup-python@v6
with:
python-version: "3.13"
cache: pip
@@ -44,7 +44,7 @@
- run: make build
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@v7
with:
name: dist
path: ./dist/*
@@ -57,12 +57,12 @@
timeout-minutes: 20
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- - uses: actions/setup-python@v5
+ - uses: actions/setup-python@v6
with:
python-version: "3.13"
cache: pip
@@ -80,7 +80,7 @@
strategy:
fail-fast: false
matrix:
- python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "pypy-3.10"]
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "pypy-3.10"]
os: [ubuntu-latest, macos-latest, windows-latest]
exclude:
- os: windows-latest
@@ -96,10 +96,10 @@
config: ${{ vars.PERMISSIONS_CONFIG }}
if: ${{ matrix.os == 'ubuntu-latest' }}
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Setup Python ${{ matrix.python-version }}
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/.github/workflows/publish.yml
new/humanreadable-0.4.3/.github/workflows/publish.yml
--- old/humanreadable-0.4.1/.github/workflows/publish.yml 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/.github/workflows/publish.yml 2026-05-09
16:45:10.000000000 +0200
@@ -14,12 +14,12 @@
timeout-minutes: 20
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- - uses: actions/setup-python@v5
+ - uses: actions/setup-python@v6
with:
python-version: "3.13"
cache: pip
@@ -32,7 +32,7 @@
- run: make build
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@v7
with:
name: dist
path: ./dist/*
@@ -48,7 +48,7 @@
id-token: write # IMPORTANT: this permission is mandatory for trusted
publishing
steps:
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@v8
with:
name: dist
path: ./dist
@@ -65,20 +65,20 @@
contents: write
steps:
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@v8
with:
name: dist
path: ./dist
- name: Sign the dists with Sigstore
- uses: sigstore/[email protected]
+ uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Generate a GitHub release
- uses: softprops/action-gh-release@v2
+ uses: softprops/action-gh-release@v3
with:
generate_release_notes: true
files: dist/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/LICENSE
new/humanreadable-0.4.3/LICENSE
--- old/humanreadable-0.4.1/LICENSE 2025-05-04 07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/LICENSE 2026-05-09 16:45:10.000000000 +0200
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2019 Tsuyoshi Hombashi
+Copyright (c) 2019-2026 Tsuyoshi Hombashi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/Makefile
new/humanreadable-0.4.3/Makefile
--- old/humanreadable-0.4.1/Makefile 2025-05-04 07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/Makefile 2026-05-09 16:45:10.000000000 +0200
@@ -4,7 +4,7 @@
PYTHON := python3
-AUTHOR := thombashi
+AUTHOR := Tsuyoshi Hombashi
FIRST_RELEASE_YEAR := 2019
LAST_UPDATE_YEAR := $(shell git log -1 --format=%cd --date=format:%Y)
@@ -13,7 +13,7 @@
build-remote: clean
@mkdir -p $(BUILD_WORK_DIR)
@cd $(BUILD_WORK_DIR) && \
- git clone https://github.com/$(AUTHOR)/$(PACKAGE).git --depth 1
&& \
+ git clone https://github.com/thombashi/$(PACKAGE).git --depth 1
&& \
cd $(PACKAGE) && \
$(PYTHON) -m tox -e build
ls -lh $(PKG_BUILD_DIR)/dist/*
@@ -51,6 +51,10 @@
@$(PYTHON) -m pip install -q --disable-pip-version-check --upgrade -e
.[test]
@$(PYTHON) -m pip check
+.PHONY: test
+test:
+ $(PYTHON) -m tox -e py
+
.PHONY: update-copyright
update-copyright:
sed -i "s/f\"Copyright .*/f\"Copyright
$(FIRST_RELEASE_YEAR)-$(LAST_UPDATE_YEAR), {__author__}\"/"
$(PACKAGE)/__version__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/PKG-INFO
new/humanreadable-0.4.3/PKG-INFO
--- old/humanreadable-0.4.1/PKG-INFO 2025-05-04 07:34:41.393539700 +0200
+++ new/humanreadable-0.4.3/PKG-INFO 2026-05-09 16:45:37.694397400 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: humanreadable
-Version: 0.4.1
+Version: 0.4.3
Summary: humanreadable is a Python library to convert human-readable values to
other units.
Home-page: https://github.com/thombashi/humanreadable
Author: Tsuyoshi Hombashi
@@ -16,11 +16,11 @@
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -28,10 +28,10 @@
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing
Classifier: Typing :: Typed
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
-Requires-Dist: typepy<2,>=1.2.0
+Requires-Dist: typepy<3,>=1.2.0
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-md-report>=0.6.2; extra == "test"
@@ -223,5 +223,5 @@
Dependencies
============================================
-- Python 3.9+
+- Python 3.10+
- `Python package dependencies (automatically installed)
<https://github.com/thombashi/humanreadable/network/dependencies>`__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/README.rst
new/humanreadable-0.4.3/README.rst
--- old/humanreadable-0.4.1/README.rst 2025-05-04 07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/README.rst 2026-05-09 16:45:10.000000000 +0200
@@ -171,5 +171,5 @@
Dependencies
============================================
-- Python 3.9+
+- Python 3.10+
- `Python package dependencies (automatically installed)
<https://github.com/thombashi/humanreadable/network/dependencies>`__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/humanreadable/__version__.py
new/humanreadable-0.4.3/humanreadable/__version__.py
--- old/humanreadable-0.4.1/humanreadable/__version__.py 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/humanreadable/__version__.py 2026-05-09
16:45:10.000000000 +0200
@@ -1,6 +1,6 @@
__author__ = "Tsuyoshi Hombashi"
-__copyright__ = f"Copyright 2019-2025, {__author__}"
+__copyright__ = f"Copyright 2019-2026, {__author__}"
__license__ = "MIT License"
-__version__ = "0.4.1"
+__version__ = "0.4.3"
__maintainer__ = __author__
__email__ = "[email protected]"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/humanreadable/_base.py
new/humanreadable-0.4.3/humanreadable/_base.py
--- old/humanreadable-0.4.1/humanreadable/_base.py 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/humanreadable/_base.py 2026-05-09
16:45:10.000000000 +0200
@@ -6,7 +6,7 @@
import re
from decimal import Decimal
from re import Pattern
-from typing import Final, Optional, Union, cast
+from typing import Final, cast
from typepy import RealNumber, String
@@ -33,12 +33,10 @@
pass
@abc.abstractmethod
- def get_as(self, unit: Union[str, SupportsUnit]) -> float: # pragma: no
cover
+ def get_as(self, unit: str | SupportsUnit) -> float: # pragma: no cover
pass
- def __init__(
- self, readable_value: str, default_unit: Union[str, SupportsUnit,
None] = None
- ) -> None:
+ def __init__(self, readable_value: str, default_unit: str | SupportsUnit |
None = None) -> None:
self._default_unit = self._normalize_unit(default_unit)
self._number, self._from_unit = self.__preprocess(readable_value)
@@ -49,7 +47,7 @@
return " ".join(items)
- def _normalize_unit(self, unit: Union[str, SupportsUnit, None]) ->
Optional[SupportsUnit]:
+ def _normalize_unit(self, unit: str | SupportsUnit | None) -> SupportsUnit
| None:
if unit is None:
return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/humanreadable/_common.py
new/humanreadable-0.4.3/humanreadable/_common.py
--- old/humanreadable-0.4.1/humanreadable/_common.py 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/humanreadable/_common.py 2026-05-09
16:45:10.000000000 +0200
@@ -1,9 +1,9 @@
import re
from re import Pattern
-from ._const import PATTERN_TEMPLETE
+from ._const import PATTERN_TEMPLATE
from ._types import Units
def compile_units_regex_pattern(units: Units, flags: int = 0) -> Pattern[str]:
- return re.compile("|".join([PATTERN_TEMPLETE.format(unit) for unit in
units]), flags)
+ return re.compile("|".join([PATTERN_TEMPLATE.format(unit) for unit in
units]), flags)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/humanreadable/_const.py
new/humanreadable-0.4.3/humanreadable/_const.py
--- old/humanreadable-0.4.1/humanreadable/_const.py 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/humanreadable/_const.py 2026-05-09
16:45:10.000000000 +0200
@@ -1,4 +1,4 @@
from typing import Final
-PATTERN_TEMPLETE: Final[str] = r"\s?{}$"
+PATTERN_TEMPLATE: Final[str] = r"\s?{}$"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/humanreadable/_persec.py
new/humanreadable-0.4.3/humanreadable/_persec.py
--- old/humanreadable-0.4.1/humanreadable/_persec.py 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/humanreadable/_persec.py 2026-05-09
16:45:10.000000000 +0200
@@ -6,11 +6,12 @@
from dataclasses import dataclass
from decimal import Decimal
from re import Pattern
-from typing import Final, NamedTuple, Optional, Union, cast
+from typing import Final, NamedTuple, cast
from ._base import HumanReadableValue
from ._common import compile_units_regex_pattern
from ._types import HumanReadableStyle, SupportsUnit, TextUnitsMap, Units
+from .error import ParameterError
_BPS_PATTERN: Final[str] = r"bits?(/|\s?per\s?)(s|sec|second)"
@@ -127,6 +128,14 @@
def get_text_units(cls) -> TextUnitsMap:
return cls._TEXT_UNITS
+ def __init__(self, readable_value: str, default_unit: str | SupportsUnit |
None = None) -> None:
+ super().__init__(readable_value, default_unit)
+ if self._number < 0:
+ raise ParameterError(
+ "bps value must be non-negative",
+ value=readable_value,
+ )
+
@property
def _text_units(self) -> TextUnitsMap:
return self._TEXT_UNITS
@@ -239,7 +248,7 @@
number = self._number + Decimal(other.get_as(self._from_unit))
return BitsPerSecond(str(number), default_unit=self._from_unit)
- def get_as(self, unit: Union[str, SupportsUnit]) -> float:
+ def get_as(self, unit: str | SupportsUnit) -> float:
unit_maps: dict[SupportsUnit, str] = {
self.Unit.BPS: "bps",
self.Unit.KBPS: "kilo_bps",
@@ -256,7 +265,7 @@
return getattr(self, unit_maps[norm_unit])
- def _normalize_unit(self, unit: Union[str, SupportsUnit, None]) ->
Optional[SupportsUnit]:
+ def _normalize_unit(self, unit: str | SupportsUnit | None) -> SupportsUnit
| None:
if isinstance(unit, ByteUnit):
return unit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/humanreadable/_time.py
new/humanreadable-0.4.3/humanreadable/_time.py
--- old/humanreadable-0.4.1/humanreadable/_time.py 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/humanreadable/_time.py 2026-05-09
16:45:10.000000000 +0200
@@ -7,7 +7,7 @@
from dataclasses import dataclass
from decimal import Decimal
from re import Pattern
-from typing import Final, NamedTuple, Optional, Union, cast
+from typing import Final, NamedTuple, cast
from ._base import HumanReadableValue
from ._common import compile_units_regex_pattern
@@ -131,9 +131,7 @@
self.Unit.MICROSECOND,
]
- def __init__(
- self, readable_value: str, default_unit: Union[str, SupportsUnit,
None] = None
- ) -> None:
+ def __init__(self, readable_value: str, default_unit: str | SupportsUnit |
None = None) -> None:
values = re.findall(r"\d+\s*[a-zA-Z]+", readable_value)
if len(values) <= 1:
super().__init__(readable_value, default_unit)
@@ -191,7 +189,7 @@
value=self,
)
- def get_as(self, unit: Union[str, SupportsUnit]) -> float:
+ def get_as(self, unit: str | SupportsUnit) -> float:
unit_maps: dict[SupportsUnit, str] = {
self.Unit.DAY: "days",
self.Unit.HOUR: "hours",
@@ -235,12 +233,12 @@
)
if not items:
- assert self._default_unit
- return f"0 {self._default_unit.name}"
+ unit = self._default_unit or self._from_unit
+ return f"0{_to_unit_str(unit, style)}"
return " ".join(items)
- def _normalize_unit(self, unit: Union[str, SupportsUnit, None]) ->
Optional[SupportsUnit]:
+ def _normalize_unit(self, unit: str | SupportsUnit | None) -> SupportsUnit
| None:
if isinstance(unit, TimeUnit):
return unit
@@ -255,11 +253,11 @@
return day_coef * sixty_coef * thousand_coef
-def _parse(value: Union[str, Time], default_unit: Union[str, SupportsUnit,
None] = None) -> Time:
+def _parse(value: str | Time, default_unit: str | SupportsUnit | None = None)
-> Time:
if isinstance(value, Time):
return value
- sum: Optional[Time] = None
+ sum: Time | None = None
for item in reversed(re.findall(r"\d+\s*[a-zA-Z]+", value)):
t = Time(item, default_unit=default_unit)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/humanreadable.egg-info/PKG-INFO
new/humanreadable-0.4.3/humanreadable.egg-info/PKG-INFO
--- old/humanreadable-0.4.1/humanreadable.egg-info/PKG-INFO 2025-05-04
07:34:41.000000000 +0200
+++ new/humanreadable-0.4.3/humanreadable.egg-info/PKG-INFO 2026-05-09
16:45:37.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: humanreadable
-Version: 0.4.1
+Version: 0.4.3
Summary: humanreadable is a Python library to convert human-readable values to
other units.
Home-page: https://github.com/thombashi/humanreadable
Author: Tsuyoshi Hombashi
@@ -16,11 +16,11 @@
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -28,10 +28,10 @@
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing
Classifier: Typing :: Typed
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
-Requires-Dist: typepy<2,>=1.2.0
+Requires-Dist: typepy<3,>=1.2.0
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-md-report>=0.6.2; extra == "test"
@@ -223,5 +223,5 @@
Dependencies
============================================
-- Python 3.9+
+- Python 3.10+
- `Python package dependencies (automatically installed)
<https://github.com/thombashi/humanreadable/network/dependencies>`__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/humanreadable-0.4.1/humanreadable.egg-info/requires.txt
new/humanreadable-0.4.3/humanreadable.egg-info/requires.txt
--- old/humanreadable-0.4.1/humanreadable.egg-info/requires.txt 2025-05-04
07:34:41.000000000 +0200
+++ new/humanreadable-0.4.3/humanreadable.egg-info/requires.txt 2026-05-09
16:45:37.000000000 +0200
@@ -1,4 +1,4 @@
-typepy<2,>=1.2.0
+typepy<3,>=1.2.0
[test]
pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/pyproject.toml
new/humanreadable-0.4.3/pyproject.toml
--- old/humanreadable-0.4.1/pyproject.toml 2025-05-04 07:34:19.000000000
+0200
+++ new/humanreadable-0.4.3/pyproject.toml 2026-05-09 16:45:10.000000000
+0200
@@ -52,7 +52,7 @@
"build",
"dist"
]
-pythonVersion = "3.9"
+pythonVersion = "3.10"
[tool.pytest.ini_options]
md_report = true
@@ -61,7 +61,7 @@
[tool.ruff]
line-length = 100
-target-version = "py39"
+target-version = "py310"
exclude = [
".eggs/",
".tox/",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/requirements/requirements.txt
new/humanreadable-0.4.3/requirements/requirements.txt
--- old/humanreadable-0.4.1/requirements/requirements.txt 2025-05-04
07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/requirements/requirements.txt 2026-05-09
16:45:10.000000000 +0200
@@ -1 +1 @@
-typepy>=1.2.0,<2
+typepy>=1.2.0,<3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/setup.py
new/humanreadable-0.4.3/setup.py
--- old/humanreadable-0.4.1/setup.py 2025-05-04 07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/setup.py 2026-05-09 16:45:10.000000000 +0200
@@ -53,7 +53,7 @@
"Source": REPOSITORY_URL,
"Tracker": f"{REPOSITORY_URL:s}/issues",
},
- python_requires=">=3.9",
+ python_requires=">=3.10",
install_requires=INSTALL_REQUIRES,
extras_require={"test": TESTS_REQUIRES},
classifiers=[
@@ -63,11 +63,11 @@
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/test/test_persec.py
new/humanreadable-0.4.3/test/test_persec.py
--- old/humanreadable-0.4.1/test/test_persec.py 2025-05-04 07:34:19.000000000
+0200
+++ new/humanreadable-0.4.3/test/test_persec.py 2026-05-09 16:45:10.000000000
+0200
@@ -36,6 +36,9 @@
["2m", ParameterError],
["2ms", ParameterError],
["two Gbps", ParameterError],
+ ["-1bps", ParameterError],
+ ["-100Mbps", ParameterError],
+ ["-2.5 Gbit/s", ParameterError],
],
)
def test_exception(self, value, exception):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/test/test_time.py
new/humanreadable-0.4.3/test/test_time.py
--- old/humanreadable-0.4.1/test/test_time.py 2025-05-04 07:34:19.000000000
+0200
+++ new/humanreadable-0.4.3/test/test_time.py 2026-05-09 16:45:10.000000000
+0200
@@ -236,3 +236,14 @@
)
def test_normal_default_unit(self, value, default_unit, style, expected):
assert Time(value,
default_unit=default_unit).to_humanreadable(style=style) == expected
+
+ @pytest.mark.parametrize(
+ ["value", "style", "expected"],
+ [
+ ["0s", "full", "0 seconds"],
+ ["0ms", "full", "0 milliseconds"],
+ ["0min", "short", "0m"],
+ ],
+ )
+ def test_normal_zero_without_default_unit(self, value, style, expected):
+ assert Time(value).to_humanreadable(style=style) == expected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/humanreadable-0.4.1/tox.ini
new/humanreadable-0.4.3/tox.ini
--- old/humanreadable-0.4.1/tox.ini 2025-05-04 07:34:19.000000000 +0200
+++ new/humanreadable-0.4.3/tox.ini 2026-05-09 16:45:10.000000000 +0200
@@ -1,6 +1,6 @@
[tox]
envlist =
- py{39,310,311,312,313}
+ py{310,311,312,313,314}
pypy3
build
cov