Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pathvalidate for 
openSUSE:Factory checked in at 2026-03-05 17:29:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pathvalidate (Old)
 and      /work/SRC/openSUSE:Factory/.python-pathvalidate.new.561 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pathvalidate"

Thu Mar  5 17:29:46 2026 rev:12 rq:1336663 version:3.3.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pathvalidate/python-pathvalidate.changes  
2025-06-11 16:27:26.518766091 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pathvalidate.new.561/python-pathvalidate.changes
 2026-03-05 17:31:38.015650915 +0100
@@ -1,0 +2,7 @@
+Tue Mar  3 17:02:59 UTC 2026 - Andreas Schneider <[email protected]>
+
+- Update to version 3.3.1
+  * Add value to the INVALID_LENGTH validation error
+  * Ensure that the invalids value of INVALID_CHARACTER is unique
+
+-------------------------------------------------------------------

Old:
----
  pathvalidate-3.2.3.tar.gz

New:
----
  pathvalidate-3.3.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pathvalidate.spec ++++++
--- /var/tmp/diff_new_pack.MR3qFj/_old  2026-03-05 17:31:39.331705651 +0100
+++ /var/tmp/diff_new_pack.MR3qFj/_new  2026-03-05 17:31:39.335705818 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pathvalidate
 #
-# 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,14 +18,14 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-pathvalidate
-Version:        3.2.3
+Version:        3.3.1
 Release:        0
 Summary:        Python library to sanitize/validate a string such as filenames
 License:        MIT
 URL:            https://github.com/thombashi/pathvalidate
 Source:         
https://files.pythonhosted.org/packages/source/p/pathvalidate/pathvalidate-%{version}.tar.gz
 BuildRequires:  %{python_module pip}
-BuildRequires:  %{python_module setuptools >= 38.3.0}
+BuildRequires:  %{python_module setuptools >= 64}
 BuildRequires:  %{python_module setuptools_scm >= 8}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
@@ -45,7 +45,7 @@
 filenames/file-paths/etc.
 
 %prep
-%setup -q -n pathvalidate-%{version}
+%autosetup -p1 -n pathvalidate-%{version}
 
 %build
 %pyproject_wheel

++++++ pathvalidate-3.2.3.tar.gz -> pathvalidate-3.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pathvalidate-3.2.3/.github/ISSUE_TEMPLATE/bug_report.yml 
new/pathvalidate-3.3.1/.github/ISSUE_TEMPLATE/bug_report.yml
--- old/pathvalidate-3.2.3/.github/ISSUE_TEMPLATE/bug_report.yml        
1970-01-01 01:00:00.000000000 +0100
+++ new/pathvalidate-3.3.1/.github/ISSUE_TEMPLATE/bug_report.yml        
2025-06-15 11:06:34.000000000 +0200
@@ -0,0 +1,71 @@
+name: Bug Report
+description: Report a bug
+title: "[Bug]: "
+labels: ["needs-triage"]
+body:
+  - type: input
+    id: title
+    attributes:
+      label: Summary
+      description: "A brief summary of the bug"
+      placeholder: "e.g., xxx method raises an exception when yyy"
+    validations:
+      required: true
+
+  - type: textarea
+    id: description
+    attributes:
+      label: Description
+      description: "Detailed description of the bug"
+      placeholder: "A clear and concise description of what the bug is in 
detail..."
+    validations:
+      required: true
+
+  - type: textarea
+    id: expected-behavior
+    attributes:
+      label: Expected Behavior
+      description: "What you expected to happen"
+      placeholder: "A clear and concise description of what you expected to 
happen."
+    validations:
+      required: true
+
+  - type: textarea
+    id: context
+    attributes:
+      label: Context
+      description: "How has this issue affected you? What are you trying to 
accomplish?"
+      placeholder: "Providing context helps us come up with a solution that is 
most useful in the real world"
+    validations:
+      required: false
+
+  - type: textarea
+    id: possible-solution
+    attributes:
+      label: Possible Solution
+      description: "Optional: suggest a fix/reason for the bug or ideas on how 
to implement the addition or change"
+    validations:
+      required: false
+
+  - type: textarea
+    id: code-to-reproduce
+    attributes:
+      label: Code to reproduce
+      description: "How to reproduce the bug with code"
+      placeholder: Paste the code that reproduces the bug
+      render: python
+    validations:
+      required: true
+
+  - type: textarea
+    id: environment
+    attributes:
+      label: Your Environment
+      description: "Include as many relevant details about the environment you 
experienced the bug in"
+      placeholder: |
+        Please execute the following commands and past the output here:
+
+        pip install envinfopy[markdown]
+        python -m envinfopy --format=markdown pathvalidate
+    validations:
+      required: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/.github/ISSUE_TEMPLATE/config.yml 
new/pathvalidate-3.3.1/.github/ISSUE_TEMPLATE/config.yml
--- old/pathvalidate-3.2.3/.github/ISSUE_TEMPLATE/config.yml    1970-01-01 
01:00:00.000000000 +0100
+++ new/pathvalidate-3.3.1/.github/ISSUE_TEMPLATE/config.yml    2025-06-15 
11:06:34.000000000 +0200
@@ -0,0 +1,7 @@
+contact_links:
+  - name: GitHub Discussions
+    url: https://github.com/thombashi/pathvalidate/discussions
+    about: Please ask and answer questions here.
+  - name: Documentation
+    url: https://pathvalidate.rtfd.io/
+    about: Please check the documentation before creating an issue.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pathvalidate-3.2.3/.github/ISSUE_TEMPLATE/feature_request.yml 
new/pathvalidate-3.3.1/.github/ISSUE_TEMPLATE/feature_request.yml
--- old/pathvalidate-3.2.3/.github/ISSUE_TEMPLATE/feature_request.yml   
1970-01-01 01:00:00.000000000 +0100
+++ new/pathvalidate-3.3.1/.github/ISSUE_TEMPLATE/feature_request.yml   
2025-06-15 11:06:34.000000000 +0200
@@ -0,0 +1,42 @@
+name: Feature Request
+description: Suggest an idea for this project
+title: "[Feature Request]: "
+labels: ["needs-triage"]
+body:
+  - type: textarea
+    id: feature-description
+    attributes:
+      label: Feature Description
+      description: "Is your feature request related to a problem? Please 
describe."
+      placeholder: "A clear and concise description of what the problem is. 
Ex. I'm always frustrated when [...]"
+    validations:
+      required: true
+
+  - type: textarea
+    id: solution-description
+    attributes:
+      label: Solution Description
+      description: "Describe the solution you'd like"
+      placeholder: "A clear and concise description of what you want to 
happen."
+    validations:
+      required: true
+
+  - type: textarea
+    id: alternatives
+    attributes:
+      label: Alternatives
+      description: "Describe alternatives you've considered"
+      placeholder: "A clear and concise description of any alternative 
solutions or features you've considered."
+    validations:
+      required: false
+
+  - type: textarea
+    id: additional-context
+    attributes:
+      label: Additional Context
+      description: "Add any other context or screenshots about the feature 
request here"
+      placeholder: |
+        How has this issue affected you? What are you trying to accomplish?
+        Providing context helps us come up with a solution that is most useful 
in the real world
+    validations:
+      required: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/CHANGELOG.md 
new/pathvalidate-3.3.1/CHANGELOG.md
--- old/pathvalidate-3.2.3/CHANGELOG.md 2025-01-03 15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/CHANGELOG.md 2025-06-15 11:06:34.000000000 +0200
@@ -1,3 +1,14 @@
+<a id="v3.2.3"></a>
+# [v3.2.3](https://github.com/thombashi/pathvalidate/releases/tag/v3.2.3) - 
2025-01-03
+
+## What's Changed
+* Fix dot-files validation by [@thombashi](https://github.com/thombashi) in 
[#60](https://github.com/thombashi/pathvalidate/pull/60) (Thanks to 
[@slingshotvfx](https://github.com/slingshotvfx))
+
+**Full Changelog**: 
https://github.com/thombashi/pathvalidate/compare/v3.2.2...v3.2.3
+
+[Changes][v3.2.3]
+
+
 <a id="v3.2.2"></a>
 # [v3.2.2](https://github.com/thombashi/pathvalidate/releases/tag/v3.2.2) - 
2025-01-01
 
@@ -574,6 +585,7 @@
 [Changes][v0.1.0]
 
 
+[v3.2.3]: https://github.com/thombashi/pathvalidate/compare/v3.2.2...v3.2.3
 [v3.2.2]: https://github.com/thombashi/pathvalidate/compare/v3.2.1...v3.2.2
 [v3.2.1]: https://github.com/thombashi/pathvalidate/compare/v3.2.0...v3.2.1
 [v3.2.0]: https://github.com/thombashi/pathvalidate/compare/v3.1.0...v3.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/PKG-INFO 
new/pathvalidate-3.3.1/PKG-INFO
--- old/pathvalidate-3.2.3/PKG-INFO     2025-01-03 15:06:11.406637200 +0100
+++ new/pathvalidate-3.3.1/PKG-INFO     2025-06-15 11:06:58.890236600 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: pathvalidate
-Version: 3.2.3
+Version: 3.3.1
 Summary: pathvalidate is a Python library to sanitize/validate a string such 
as filenames/file-paths/etc.
 Home-page: https://github.com/thombashi/pathvalidate
 Author: Tsuyoshi Hombashi
@@ -46,6 +46,19 @@
 Requires-Dist: Faker>=1.0.8; extra == "test"
 Requires-Dist: pytest>=6.0.1; extra == "test"
 Requires-Dist: pytest-md-report>=0.6.2; extra == "test"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: description-content-type
+Dynamic: home-page
+Dynamic: keywords
+Dynamic: license
+Dynamic: license-file
+Dynamic: project-url
+Dynamic: provides-extra
+Dynamic: requires-python
+Dynamic: summary
 
 .. contents:: **pathvalidate**
    :backlinks: top
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/docs/pages/CHANGELOG.md 
new/pathvalidate-3.3.1/docs/pages/CHANGELOG.md
--- old/pathvalidate-3.2.3/docs/pages/CHANGELOG.md      2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/docs/pages/CHANGELOG.md      2025-06-15 
11:06:34.000000000 +0200
@@ -1,3 +1,14 @@
+<a id="v3.2.3"></a>
+# [v3.2.3](https://github.com/thombashi/pathvalidate/releases/tag/v3.2.3) - 
2025-01-03
+
+## What's Changed
+* Fix dot-files validation by [@thombashi](https://github.com/thombashi) in 
[#60](https://github.com/thombashi/pathvalidate/pull/60) (Thanks to 
[@slingshotvfx](https://github.com/slingshotvfx))
+
+**Full Changelog**: 
https://github.com/thombashi/pathvalidate/compare/v3.2.2...v3.2.3
+
+[Changes][v3.2.3]
+
+
 <a id="v3.2.2"></a>
 # [v3.2.2](https://github.com/thombashi/pathvalidate/releases/tag/v3.2.2) - 
2025-01-01
 
@@ -574,6 +585,7 @@
 [Changes][v0.1.0]
 
 
+[v3.2.3]: https://github.com/thombashi/pathvalidate/compare/v3.2.2...v3.2.3
 [v3.2.2]: https://github.com/thombashi/pathvalidate/compare/v3.2.1...v3.2.2
 [v3.2.1]: https://github.com/thombashi/pathvalidate/compare/v3.2.0...v3.2.1
 [v3.2.0]: https://github.com/thombashi/pathvalidate/compare/v3.1.0...v3.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pathvalidate-3.2.3/examples/pathvalidate_examples.ipynb 
new/pathvalidate-3.3.1/examples/pathvalidate_examples.ipynb
--- old/pathvalidate-3.2.3/examples/pathvalidate_examples.ipynb 2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/examples/pathvalidate_examples.ipynb 2025-06-15 
11:06:34.000000000 +0200
@@ -42,7 +42,31 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "[PV1101] found an invalid string length: filename is too long: 
expected<=1 bytes, actual=11 bytes, platform=universal, fs_encoding=utf-8, 
byte_count=11, value='aaaaaa\\naaaa'\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "import sys\n",
+    "from pathvalidate import ValidationError, validate_filename\n",
+    "\n",
+    "try:\n",
+    "    validate_filename(\"aaaaaa\\naaaa\", max_len=1)\n",
+    "except ValidationError as e:\n",
+    "    print(f\"{e}\\n\", file=sys.stderr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
    "metadata": {},
    "outputs": [
     {
@@ -65,14 +89,14 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [
     {
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "[PV1100] invalid characters found: invalids=(':', '*', '\"', '?', '>', 
'|', '<'), value='fi:l*e/p\"a?t>h|.t<xt', platform=Windows\n"
+      "[PV1100] invalid characters found: invalids=('*', ':'), value='fi:l*e', 
platform=Windows\n"
      ]
     }
    ],
@@ -88,7 +112,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [
     {
@@ -114,7 +138,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 7,
    "metadata": {},
    "outputs": [
     {
@@ -140,7 +164,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 8,
    "metadata": {},
    "outputs": [
     {
@@ -160,7 +184,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": 9,
    "metadata": {},
    "outputs": [
     {
@@ -186,7 +210,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 10,
    "metadata": {},
    "outputs": [
     {
@@ -212,7 +236,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 11,
    "metadata": {},
    "outputs": [
     {
@@ -221,7 +245,7 @@
        "'._'"
       ]
      },
-     "execution_count": 4,
+     "execution_count": 11,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -245,7 +269,7 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python 3.8.12 64-bit ('3.8.12')",
+   "display_name": "Python 3",
    "language": "python",
    "name": "python3"
   },
@@ -259,12 +283,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.11.4"
-  },
-  "vscode": {
-   "interpreter": {
-    "hash": "c07eda5d3696c8b68c933d32ea433f84251ada7607722ea42bf003255d06d542"
-   }
+   "version": "3.13.1"
   }
  },
  "nbformat": 4,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/pathvalidate/__version__.py 
new/pathvalidate-3.3.1/pathvalidate/__version__.py
--- old/pathvalidate-3.2.3/pathvalidate/__version__.py  2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/pathvalidate/__version__.py  2025-06-15 
11:06:34.000000000 +0200
@@ -4,6 +4,6 @@
 __author__: Final = "Tsuyoshi Hombashi"
 __copyright__: Final = f"Copyright 2016-2025, {__author__}"
 __license__: Final = "MIT License"
-__version__ = "3.2.3"
+__version__ = "3.3.1"
 __maintainer__: Final = __author__
 __email__: Final = "[email protected]"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/pathvalidate/_common.py 
new/pathvalidate-3.3.1/pathvalidate/_common.py
--- old/pathvalidate-3.2.3/pathvalidate/_common.py      2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/pathvalidate/_common.py      2025-06-15 
11:06:34.000000000 +0200
@@ -152,7 +152,8 @@
 
 
 def findall_to_str(match: list[Any]) -> str:
-    return ", ".join([repr(text) for text in match])
+    uniq_list = {repr(text) for text in match}
+    return ", ".join(uniq_list)
 
 
 def truncate_str(text: str, encoding: str, max_bytes: int) -> str:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/pathvalidate/_const.py 
new/pathvalidate-3.3.1/pathvalidate/_const.py
--- old/pathvalidate-3.2.3/pathvalidate/_const.py       2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/pathvalidate/_const.py       2025-06-15 
11:06:34.000000000 +0200
@@ -3,7 +3,7 @@
 
 
 DEFAULT_MIN_LEN: Final = 1
-INVALID_CHAR_ERR_MSG_TMPL: Final = "invalids=({invalid}), value={value}"
+INVALID_CHAR_ERR_MSG_TMPL: Final = "invalids=({invalid})"
 
 
 _NTFS_RESERVED_FILE_NAMES: Final = (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/pathvalidate/_filename.py 
new/pathvalidate-3.3.1/pathvalidate/_filename.py
--- old/pathvalidate-3.2.3/pathvalidate/_filename.py    2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/pathvalidate/_filename.py    2025-06-15 
11:06:34.000000000 +0200
@@ -187,6 +187,7 @@
             ErrorAttrKey.PLATFORM: self.platform,
             ErrorAttrKey.FS_ENCODING: self._fs_encoding,
             ErrorAttrKey.BYTE_COUNT: byte_ct,
+            ErrorAttrKey.VALUE: unicode_filename,
         }
         if byte_ct > self.max_len:
             raise ValidationError(
@@ -211,7 +212,7 @@
 
     def validate_abspath(self, value: str) -> None:
         err = ValidationError(
-            description=f"found an absolute path ({value}), expected a 
filename",
+            description=f"found an absolute path ({value!r}), expected a 
filename",
             platform=self.platform,
             reason=ErrorReason.FOUND_ABS_PATH,
         )
@@ -228,9 +229,10 @@
         if match:
             raise InvalidCharError(
                 INVALID_CHAR_ERR_MSG_TMPL.format(
-                    invalid=findall_to_str(match), value=repr(unicode_filename)
+                    invalid=findall_to_str(match),
                 ),
                 platform=Platform.UNIVERSAL,
+                value=unicode_filename,
             )
 
     def __validate_win_filename(self, unicode_filename: str) -> None:
@@ -238,36 +240,37 @@
         if match:
             raise InvalidCharError(
                 INVALID_CHAR_ERR_MSG_TMPL.format(
-                    invalid=findall_to_str(match), value=repr(unicode_filename)
+                    invalid=findall_to_str(match),
                 ),
                 platform=Platform.WINDOWS,
+                value=unicode_filename,
             )
 
         if unicode_filename in (".", ".."):
             return
 
         KB2829981_err_tmpl = "{}. Refer: 
https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/file-folder-name-whitespace-characters";
  # noqa: E501
+        err_kwargs = {
+            ErrorAttrKey.PLATFORM: Platform.WINDOWS,
+            ErrorAttrKey.VALUE: unicode_filename,
+        }
 
         if unicode_filename[-1] in (" ", "."):
             raise InvalidCharError(
-                INVALID_CHAR_ERR_MSG_TMPL.format(
-                    invalid=re.escape(unicode_filename[-1]), 
value=repr(unicode_filename)
-                ),
-                platform=Platform.WINDOWS,
+                
INVALID_CHAR_ERR_MSG_TMPL.format(invalid=re.escape(unicode_filename[-1])),
                 description=KB2829981_err_tmpl.format(
                     "Do not end a file or directory name with a space or a 
period"
                 ),
+                **err_kwargs,
             )
 
         if unicode_filename[0] in (" "):
             raise InvalidCharError(
-                INVALID_CHAR_ERR_MSG_TMPL.format(
-                    invalid=re.escape(unicode_filename[0]), 
value=repr(unicode_filename)
-                ),
-                platform=Platform.WINDOWS,
+                
INVALID_CHAR_ERR_MSG_TMPL.format(invalid=re.escape(unicode_filename[0])),
                 description=KB2829981_err_tmpl.format(
                     "Do not start a file or directory name with a space"
                 ),
+                **err_kwargs,
             )
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/pathvalidate/_filepath.py 
new/pathvalidate-3.3.1/pathvalidate/_filepath.py
--- old/pathvalidate-3.2.3/pathvalidate/_filepath.py    2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/pathvalidate/_filepath.py    2025-06-15 
11:06:34.000000000 +0200
@@ -209,6 +209,7 @@
             ErrorAttrKey.PLATFORM: self.platform,
             ErrorAttrKey.FS_ENCODING: self._fs_encoding,
             ErrorAttrKey.BYTE_COUNT: byte_ct,
+            ErrorAttrKey.VALUE: unicode_filepath,
         }
 
         if byte_ct > self.max_len:
@@ -257,9 +258,7 @@
 
         err_object = ValidationError(
             description=(
-                "an invalid absolute file path ({}) for the platform 
({}).".format(
-                    value, self.platform.value
-                )
+                f"an invalid absolute file path ({value!r}) for the platform 
({self.platform.value})."
                 + " to avoid the error, specify an appropriate platform 
corresponding to"
                 + " the path format or 'auto'."
             ),
@@ -279,19 +278,17 @@
         match = _RE_INVALID_PATH.findall(unicode_filepath)
         if match:
             raise InvalidCharError(
-                INVALID_CHAR_ERR_MSG_TMPL.format(
-                    invalid=findall_to_str(match), value=repr(unicode_filepath)
-                )
+                
INVALID_CHAR_ERR_MSG_TMPL.format(invalid=findall_to_str(match)),
+                value=unicode_filepath,
             )
 
     def __validate_win_filepath(self, unicode_filepath: str) -> None:
         match = _RE_INVALID_WIN_PATH.findall(unicode_filepath)
         if match:
             raise InvalidCharError(
-                INVALID_CHAR_ERR_MSG_TMPL.format(
-                    invalid=findall_to_str(match), value=repr(unicode_filepath)
-                ),
+                
INVALID_CHAR_ERR_MSG_TMPL.format(invalid=findall_to_str(match)),
                 platform=Platform.WINDOWS,
+                value=unicode_filepath,
             )
 
         _drive, value = self.__split_drive(unicode_filepath)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/pathvalidate/error.py 
new/pathvalidate-3.3.1/pathvalidate/error.py
--- old/pathvalidate-3.2.3/pathvalidate/error.py        2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/pathvalidate/error.py        2025-06-15 
11:06:34.000000000 +0200
@@ -20,6 +20,7 @@
     REASON: Final = "reason"
     RESERVED_NAME: Final = "reserved_name"
     REUSABLE_NAME: Final = "reusable_name"
+    VALUE: Final = "value"
 
 
 @enum.unique
@@ -139,6 +140,7 @@
         self.__reserved_name: str = kwargs.pop(ErrorAttrKey.RESERVED_NAME, "")
         self.__reusable_name: Optional[bool] = 
kwargs.pop(ErrorAttrKey.REUSABLE_NAME, None)
         self.__fs_encoding: Optional[str] = 
kwargs.pop(ErrorAttrKey.FS_ENCODING, None)
+        self.__value: Optional[str] = kwargs.pop(ErrorAttrKey.VALUE, None)
 
         try:
             super().__init__(*args[0], **kwargs)
@@ -166,6 +168,8 @@
             slog[ErrorAttrKey.FS_ENCODING] = self.__fs_encoding
         if self.__byte_count:
             slog[ErrorAttrKey.BYTE_COUNT] = str(self.__byte_count)
+        if self.__value:
+            slog[ErrorAttrKey.VALUE] = self.__value
 
         return slog
 
@@ -186,6 +190,8 @@
             
item_list.append(f"{ErrorAttrKey.FS_ENCODING}={self.__fs_encoding}")
         if self.__byte_count is not None:
             
item_list.append(f"{ErrorAttrKey.BYTE_COUNT}={self.__byte_count:,d}")
+        if self.__value:
+            item_list.append(f"{ErrorAttrKey.VALUE}={self.__value!r}")
 
         if item_list:
             header += ": "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/pathvalidate.egg-info/PKG-INFO 
new/pathvalidate-3.3.1/pathvalidate.egg-info/PKG-INFO
--- old/pathvalidate-3.2.3/pathvalidate.egg-info/PKG-INFO       2025-01-03 
15:06:11.000000000 +0100
+++ new/pathvalidate-3.3.1/pathvalidate.egg-info/PKG-INFO       2025-06-15 
11:06:58.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: pathvalidate
-Version: 3.2.3
+Version: 3.3.1
 Summary: pathvalidate is a Python library to sanitize/validate a string such 
as filenames/file-paths/etc.
 Home-page: https://github.com/thombashi/pathvalidate
 Author: Tsuyoshi Hombashi
@@ -46,6 +46,19 @@
 Requires-Dist: Faker>=1.0.8; extra == "test"
 Requires-Dist: pytest>=6.0.1; extra == "test"
 Requires-Dist: pytest-md-report>=0.6.2; extra == "test"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: description-content-type
+Dynamic: home-page
+Dynamic: keywords
+Dynamic: license
+Dynamic: license-file
+Dynamic: project-url
+Dynamic: provides-extra
+Dynamic: requires-python
+Dynamic: summary
 
 .. contents:: **pathvalidate**
    :backlinks: top
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/pathvalidate.egg-info/SOURCES.txt 
new/pathvalidate-3.3.1/pathvalidate.egg-info/SOURCES.txt
--- old/pathvalidate-3.2.3/pathvalidate.egg-info/SOURCES.txt    2025-01-03 
15:06:11.000000000 +0100
+++ new/pathvalidate-3.3.1/pathvalidate.egg-info/SOURCES.txt    2025-06-15 
11:06:58.000000000 +0200
@@ -10,6 +10,9 @@
 tox.ini
 .github/FUNDING.yml
 .github/dependabot.yml
+.github/ISSUE_TEMPLATE/bug_report.yml
+.github/ISSUE_TEMPLATE/config.yml
+.github/ISSUE_TEMPLATE/feature_request.yml
 .github/workflows/ci.yml
 .github/workflows/on_push_default_branch.yml
 .github/workflows/permissions_advisor.yml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/test/test_filename.py 
new/pathvalidate-3.3.1/test/test_filename.py
--- old/pathvalidate-3.2.3/test/test_filename.py        2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/test/test_filename.py        2025-06-15 
11:06:34.000000000 +0200
@@ -467,10 +467,10 @@
             print(platform, repr(value))
             validate_filename(value, platform=platform)
 
-        assert e.value.reason == ErrorReason.INVALID_CHARACTER
+        assert e.value.reason == expected
         assert str(e.value) == (
-            r"[PV1100] invalid characters found: invalids=('\r'), 
value='asdf\rsdf', "
-            "platform=Windows"
+            r"[PV1100] invalid characters found: invalids=('\r'), "
+            "platform=Windows, value='asdf\\rsdf'"
         )  # noqa
 
     @pytest.mark.parametrize(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pathvalidate-3.2.3/test/test_filepath.py 
new/pathvalidate-3.3.1/test/test_filepath.py
--- old/pathvalidate-3.2.3/test/test_filepath.py        2025-01-03 
15:05:34.000000000 +0100
+++ new/pathvalidate-3.3.1/test/test_filepath.py        2025-06-15 
11:06:34.000000000 +0200
@@ -522,8 +522,8 @@
 
         assert e.value.reason == expected
         assert str(e.value) == (
-            r"[PV1100] invalid characters found: invalids=('\r'), 
value='asdf\rsdf', "
-            "platform=Windows"
+            r"[PV1100] invalid characters found: invalids=('\r'), "
+            "platform=Windows, value='asdf\\rsdf'"
         )  # noqa
 
     @pytest.mark.parametrize(

Reply via email to