PyPcre 0.2.12__tar.gz → 0.2.13__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. {pypcre-0.2.12 → pypcre-0.2.13}/PKG-INFO +4 -4
  2. {pypcre-0.2.12 → pypcre-0.2.13}/PyPcre.egg-info/PKG-INFO +4 -4
  3. {pypcre-0.2.12 → pypcre-0.2.13}/README.md +3 -3
  4. {pypcre-0.2.12 → pypcre-0.2.13}/pyproject.toml +1 -1
  5. {pypcre-0.2.12 → pypcre-0.2.13}/setup_utils.py +29 -21
  6. {pypcre-0.2.12 → pypcre-0.2.13}/LICENSE +0 -0
  7. {pypcre-0.2.12 → pypcre-0.2.13}/MANIFEST.in +0 -0
  8. {pypcre-0.2.12 → pypcre-0.2.13}/PyPcre.egg-info/SOURCES.txt +0 -0
  9. {pypcre-0.2.12 → pypcre-0.2.13}/PyPcre.egg-info/dependency_links.txt +0 -0
  10. {pypcre-0.2.12 → pypcre-0.2.13}/PyPcre.egg-info/top_level.txt +0 -0
  11. {pypcre-0.2.12 → pypcre-0.2.13}/pcre/__init__.py +0 -0
  12. {pypcre-0.2.12 → pypcre-0.2.13}/pcre/cache.py +0 -0
  13. {pypcre-0.2.12 → pypcre-0.2.13}/pcre/error.py +0 -0
  14. {pypcre-0.2.12 → pypcre-0.2.13}/pcre/flags.py +0 -0
  15. {pypcre-0.2.12 → pypcre-0.2.13}/pcre/pcre.py +0 -0
  16. {pypcre-0.2.12 → pypcre-0.2.13}/pcre/re_compat.py +0 -0
  17. {pypcre-0.2.12 → pypcre-0.2.13}/pcre/threads.py +0 -0
  18. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/atomic_compat.h +0 -0
  19. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/cache.c +0 -0
  20. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/error.c +0 -0
  21. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/flag.c +0 -0
  22. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/jit_support.c +0 -0
  23. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/memory.c +0 -0
  24. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/pattern_cache.c +0 -0
  25. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/pcre2.c +0 -0
  26. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/pcre2.h +0 -0
  27. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/pcre2_module.h +0 -0
  28. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/string_helpers.c +0 -0
  29. {pypcre-0.2.12 → pypcre-0.2.13}/pcre_ext/util.c +0 -0
  30. {pypcre-0.2.12 → pypcre-0.2.13}/setup.cfg +0 -0
  31. {pypcre-0.2.12 → pypcre-0.2.13}/setup.py +0 -0
  32. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_accuracy.py +0 -0
  33. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_api_parity.py +0 -0
  34. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_basic.py +0 -0
  35. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_bench_string.py +0 -0
  36. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_benchmark.py +0 -0
  37. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_bytes.py +0 -0
  38. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_cache.py +0 -0
  39. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_clobber.py +0 -0
  40. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_clobber_thread.py +0 -0
  41. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_core.py +0 -0
  42. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_errors.py +0 -0
  43. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_flags.py +0 -0
  44. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_jit.py +0 -0
  45. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_memory.py +0 -0
  46. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_module.py +0 -0
  47. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_pattern.py +0 -0
  48. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_setup_utils_multiarch.py +0 -0
  49. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_simd.py +0 -0
  50. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_threaded_backend.py +0 -0
  51. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_transformers_regex.py +0 -0
  52. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_utf8.py +0 -0
  53. {pypcre-0.2.12 → pypcre-0.2.13}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyPcre
3
- Version: 0.2.12
3
+ Version: 0.2.13
4
4
  Summary: Modern, GIL-friendly, Fast Python bindings for PCRE2 with auto caching and JIT of compiled patterns.
5
5
  Author-email: ModelCloud <qubitium@modelcloud.ai>
6
6
  License-Expression: Apache-2.0
@@ -47,7 +47,7 @@ Modern `nogil` Python bindings for the Pcre2 library with `stdlib.re` api compat
47
47
  * 02/24/2026 [0.2.10](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.10): Allow VisualStudio (VS) compiler version check override via env var.
48
48
  * 12/15/2025 [0.2.8](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.8): Fixed multi-arch Linux os compatibility where both x86_64 and i386 libs of pcre2 are installed.
49
49
  * 10/20/2025 [0.2.4](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.4): Removed dependency on system having python3-dev packge. python.h will be optimistically downloaded from python.org when needed.
50
- * 10/12/2025 [0.2.3](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.3): 🤗 Full `GIL=0` compliance for Python >= 3.13T. Reduced cache thread contention. Improved performance for all api. Expanded ci testing coverage. FreeBSD, Solaris, and Windows compatibility validated.
50
+ * 10/12/2025 [0.2.3](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.3): 🤗 Full `GIL=0` compliance for Python >= 3.13T. Reduced cache thread contention. Improved performance for all api. Expanded ci testing coverage. FreeBSD, Solaris and Windows compatibility validated.
51
51
  * 10/09/2025 [0.1.0](https://github.com/ModelCloud/PyPcre/releases/tag/v0.1.0): 🎉 First release. Thread safe, auto JIT, auto pattern caching and optimistic linking to system library for fast install.
52
52
 
53
53
  ## Why PyPcre:
@@ -70,7 +70,7 @@ The package prioritizes linking against the `libpcre2-8` shared library in syste
70
70
 
71
71
  ## Platform Support (Validated):
72
72
 
73
- `Linux`, `MacOS`, `Windows`, `WSL`, `FreeBSD`, `Solaris`
73
+ `Linux`, `MacOS`, `Windows`, `WSL`, `FreeBSD`
74
74
 
75
75
 
76
76
  ## Usage
@@ -303,7 +303,7 @@ When `pkg-config` is available the build will automatically pick up the
303
303
  required include and link flags via `pkg-config --cflags/--libs libpcre2-8`.
304
304
  Without `pkg-config`, the build script scans common installation prefixes for
305
305
  Linux distributions (Debian, Ubuntu, Fedora/RHEL/CentOS, openSUSE, Alpine),
306
- FreeBSD, macOS (including Homebrew), and Solaris to locate the headers and
306
+ FreeBSD and macOS (including Homebrew) to locate the headers and
307
307
  libraries.
308
308
 
309
309
  If your system ships `libpcre2-8` under `/usr` but you also maintain a
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyPcre
3
- Version: 0.2.12
3
+ Version: 0.2.13
4
4
  Summary: Modern, GIL-friendly, Fast Python bindings for PCRE2 with auto caching and JIT of compiled patterns.
5
5
  Author-email: ModelCloud <qubitium@modelcloud.ai>
6
6
  License-Expression: Apache-2.0
@@ -47,7 +47,7 @@ Modern `nogil` Python bindings for the Pcre2 library with `stdlib.re` api compat
47
47
  * 02/24/2026 [0.2.10](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.10): Allow VisualStudio (VS) compiler version check override via env var.
48
48
  * 12/15/2025 [0.2.8](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.8): Fixed multi-arch Linux os compatibility where both x86_64 and i386 libs of pcre2 are installed.
49
49
  * 10/20/2025 [0.2.4](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.4): Removed dependency on system having python3-dev packge. python.h will be optimistically downloaded from python.org when needed.
50
- * 10/12/2025 [0.2.3](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.3): 🤗 Full `GIL=0` compliance for Python >= 3.13T. Reduced cache thread contention. Improved performance for all api. Expanded ci testing coverage. FreeBSD, Solaris, and Windows compatibility validated.
50
+ * 10/12/2025 [0.2.3](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.3): 🤗 Full `GIL=0` compliance for Python >= 3.13T. Reduced cache thread contention. Improved performance for all api. Expanded ci testing coverage. FreeBSD, Solaris and Windows compatibility validated.
51
51
  * 10/09/2025 [0.1.0](https://github.com/ModelCloud/PyPcre/releases/tag/v0.1.0): 🎉 First release. Thread safe, auto JIT, auto pattern caching and optimistic linking to system library for fast install.
52
52
 
53
53
  ## Why PyPcre:
@@ -70,7 +70,7 @@ The package prioritizes linking against the `libpcre2-8` shared library in syste
70
70
 
71
71
  ## Platform Support (Validated):
72
72
 
73
- `Linux`, `MacOS`, `Windows`, `WSL`, `FreeBSD`, `Solaris`
73
+ `Linux`, `MacOS`, `Windows`, `WSL`, `FreeBSD`
74
74
 
75
75
 
76
76
  ## Usage
@@ -303,7 +303,7 @@ When `pkg-config` is available the build will automatically pick up the
303
303
  required include and link flags via `pkg-config --cflags/--libs libpcre2-8`.
304
304
  Without `pkg-config`, the build script scans common installation prefixes for
305
305
  Linux distributions (Debian, Ubuntu, Fedora/RHEL/CentOS, openSUSE, Alpine),
306
- FreeBSD, macOS (including Homebrew), and Solaris to locate the headers and
306
+ FreeBSD and macOS (including Homebrew) to locate the headers and
307
307
  libraries.
308
308
 
309
309
  If your system ships `libpcre2-8` under `/usr` but you also maintain a
@@ -24,7 +24,7 @@ Modern `nogil` Python bindings for the Pcre2 library with `stdlib.re` api compat
24
24
  * 02/24/2026 [0.2.10](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.10): Allow VisualStudio (VS) compiler version check override via env var.
25
25
  * 12/15/2025 [0.2.8](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.8): Fixed multi-arch Linux os compatibility where both x86_64 and i386 libs of pcre2 are installed.
26
26
  * 10/20/2025 [0.2.4](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.4): Removed dependency on system having python3-dev packge. python.h will be optimistically downloaded from python.org when needed.
27
- * 10/12/2025 [0.2.3](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.3): 🤗 Full `GIL=0` compliance for Python >= 3.13T. Reduced cache thread contention. Improved performance for all api. Expanded ci testing coverage. FreeBSD, Solaris, and Windows compatibility validated.
27
+ * 10/12/2025 [0.2.3](https://github.com/ModelCloud/PyPcre/releases/tag/v0.2.3): 🤗 Full `GIL=0` compliance for Python >= 3.13T. Reduced cache thread contention. Improved performance for all api. Expanded ci testing coverage. FreeBSD, Solaris and Windows compatibility validated.
28
28
  * 10/09/2025 [0.1.0](https://github.com/ModelCloud/PyPcre/releases/tag/v0.1.0): 🎉 First release. Thread safe, auto JIT, auto pattern caching and optimistic linking to system library for fast install.
29
29
 
30
30
  ## Why PyPcre:
@@ -47,7 +47,7 @@ The package prioritizes linking against the `libpcre2-8` shared library in syste
47
47
 
48
48
  ## Platform Support (Validated):
49
49
 
50
- `Linux`, `MacOS`, `Windows`, `WSL`, `FreeBSD`, `Solaris`
50
+ `Linux`, `MacOS`, `Windows`, `WSL`, `FreeBSD`
51
51
 
52
52
 
53
53
  ## Usage
@@ -280,7 +280,7 @@ When `pkg-config` is available the build will automatically pick up the
280
280
  required include and link flags via `pkg-config --cflags/--libs libpcre2-8`.
281
281
  Without `pkg-config`, the build script scans common installation prefixes for
282
282
  Linux distributions (Debian, Ubuntu, Fedora/RHEL/CentOS, openSUSE, Alpine),
283
- FreeBSD, macOS (including Homebrew), and Solaris to locate the headers and
283
+ FreeBSD and macOS (including Homebrew) to locate the headers and
284
284
  libraries.
285
285
 
286
286
  If your system ships `libpcre2-8` under `/usr` but you also maintain a
@@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta"
9
9
 
10
10
  [project]
11
11
  name = "PyPcre"
12
- version = "0.2.12"
12
+ version = "0.2.13"
13
13
  description = "Modern, GIL-friendly, Fast Python bindings for PCRE2 with auto caching and JIT of compiled patterns."
14
14
  readme = "README.md"
15
15
  requires-python = ">=3.9"
@@ -481,7 +481,11 @@ def _find_vswhere():
481
481
  def _detect_vs_generator():
482
482
  vswhere = _find_vswhere()
483
483
  if not vswhere:
484
- return None
484
+ raise RuntimeError(
485
+ "unable to find vswhere.exe\n"
486
+ "Please install Visual Studio Build Tools:\n"
487
+ f"{VS_DOWNLOAD_URL}"
488
+ )
485
489
 
486
490
  result = subprocess.run(
487
491
  [
@@ -497,32 +501,42 @@ def _detect_vs_generator():
497
501
  )
498
502
 
499
503
  if result.returncode != 0:
500
- return None
504
+ raise RuntimeError(
505
+ f"vswhere failed.\n"
506
+ f"exit code: {result.returncode}\n"
507
+ f"stdout: {result.stdout.strip()}\n"
508
+ f"stderr: {result.stderr.strip()}\n"
509
+ )
510
+
511
+ try:
512
+ data = json.loads(result.stdout or "[]")
513
+ except json.JSONDecodeError as e:
514
+ raise RuntimeError(
515
+ f"unable to parse vswhere output. Output: {result.stdout}"
516
+ ) from e
501
517
 
502
- data = json.loads(result.stdout or "[]")
503
518
  if not data:
504
- return None
519
+ raise RuntimeError(f"vswhere cannot find a valid VS installation: {result.stdout}")
505
520
 
506
521
  info = data[0]
507
522
 
508
523
  ver = info.get("installationVersion", "")
509
524
  major = ver.split(".")[0]
510
525
 
511
- year = info.get("catalog", {}).get("productLineVersion")
512
-
513
- if not year:
514
- year_map = {
515
- "15": "2017",
516
- "16": "2019",
517
- "17": "2022",
518
- "18": "2026",
519
- }
520
- year = year_map.get(major)
526
+ year_map = {
527
+ "15": "2017",
528
+ "16": "2019",
529
+ "17": "2022",
530
+ "18": "2026",
531
+ }
532
+ year = year_map.get(str(major))
521
533
 
522
534
  if year:
523
535
  return f"Visual Studio {major} {year}"
524
536
 
525
- return f"Visual Studio {major}"
537
+ raise RuntimeError(
538
+ f"Unknown Visual Studio version: installationVersion={ver}, major={major}, year={year}. vswhere result: {result.stdout}"
539
+ )
526
540
 
527
541
 
528
542
  def _prepare_pcre2_source() -> tuple[list[str], list[str], list[str]]:
@@ -635,12 +649,6 @@ def _prepare_pcre2_source() -> tuple[list[str], list[str], list[str]]:
635
649
  # On Windows, force MSVC and the /MD runtime. Never let CMake pick MinGW.
636
650
  if _is_windows_platform():
637
651
  vs_gen = os.environ.get("CMAKE_GENERATOR", _detect_vs_generator())
638
- if not vs_gen:
639
- raise RuntimeError(
640
- "Visual Studio not found.\n"
641
- "Please install Visual Studio Build Tools:\n"
642
- f"{VS_DOWNLOAD_URL}"
643
- )
644
652
  cmake_args += [
645
653
  "-G", vs_gen,
646
654
  "-A", "x64",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes