pyisyntax 0.1.5__tar.gz → 0.1.7__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 (81) hide show
  1. {pyisyntax-0.1.5/pyisyntax.egg-info → pyisyntax-0.1.7}/PKG-INFO +19 -1
  2. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/README.md +18 -0
  3. pyisyntax-0.1.7/isyntax/_pyisyntax.pyi +4 -0
  4. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/builder.py +15 -1
  5. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/examples/isyntax_dirwalk.c +3 -2
  6. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/examples/isyntax_example.c +22 -0
  7. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/examples/isyntax_to_tiff.c +1 -1
  8. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/isyntax/isyntax.c +254 -106
  9. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/isyntax/isyntax.h +21 -3
  10. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/isyntax/isyntax_reader.c +9 -4
  11. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/isyntax/isyntax_reader.h +2 -2
  12. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/isyntax/isyntax_streamer.c +34 -26
  13. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/isyntax/isyntax_streamer.h +3 -3
  14. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/libisyntax.c +128 -164
  15. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/libisyntax.h +30 -2
  16. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/common.h +40 -19
  17. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/intrinsics.h +90 -10
  18. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/linux_platform.c +11 -4
  19. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/platform.c +92 -9
  20. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/platform.h +25 -14
  21. pyisyntax-0.1.7/isyntax_build/vendor/libisyntax/src/platform/platform_mutex.c +63 -0
  22. pyisyntax-0.1.5/isyntax_build/vendor/libisyntax/src/utils/benaphore.h → pyisyntax-0.1.7/isyntax_build/vendor/libisyntax/src/platform/platform_mutex.h +16 -11
  23. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/win32_utils.c +16 -3
  24. pyisyntax-0.1.7/isyntax_build/vendor/libisyntax/src/platform/work_queue.c +750 -0
  25. pyisyntax-0.1.7/isyntax_build/vendor/libisyntax/src/platform/work_queue.h +182 -0
  26. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/third_party/ltalloc.cc +1 -1
  27. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/block_allocator.c +19 -20
  28. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/block_allocator.h +4 -4
  29. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/mathutils.c +9 -0
  30. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/mathutils.h +1 -0
  31. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/memrw.c +21 -0
  32. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/memrw.h +3 -1
  33. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/stringutils.c +80 -4
  34. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/stringutils.h +6 -3
  35. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/timerutils.c +8 -3
  36. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/timerutils.h +1 -3
  37. {pyisyntax-0.1.5 → pyisyntax-0.1.7/pyisyntax.egg-info}/PKG-INFO +19 -1
  38. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/pyisyntax.egg-info/SOURCES.txt +4 -2
  39. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/pyproject.toml +15 -8
  40. pyisyntax-0.1.7/tests/__init__.py +0 -0
  41. pyisyntax-0.1.5/isyntax_build/vendor/libisyntax/src/platform/work_queue.c +0 -238
  42. pyisyntax-0.1.5/isyntax_build/vendor/libisyntax/src/platform/work_queue.h +0 -102
  43. pyisyntax-0.1.5/isyntax_build/vendor/libisyntax/src/utils/benaphore.c +0 -76
  44. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/CHANGELOG.md +0 -0
  45. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/LICENSE +0 -0
  46. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/MANIFEST.in +0 -0
  47. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax/__init__.py +0 -0
  48. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax/lowlevel/__init__.py +0 -0
  49. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax/lowlevel/io_management.py +0 -0
  50. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax/lowlevel/libisyntax.py +0 -0
  51. /pyisyntax-0.1.5/isyntax_build/__init__.py → /pyisyntax-0.1.7/isyntax/py.typed +0 -0
  52. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax/wrapper.py +0 -0
  53. {pyisyntax-0.1.5/tests → pyisyntax-0.1.7/isyntax_build}/__init__.py +0 -0
  54. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/pyisyntax.c +0 -0
  55. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/src/python_platform_utils.c +0 -0
  56. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/src/python_platform_utils.h +0 -0
  57. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/src/win32_utils.c +0 -0
  58. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/LICENSE.txt +0 -0
  59. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/README.md +0 -0
  60. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/isyntax/isyntax_dwt.c +0 -0
  61. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/arena.h +0 -0
  62. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/linux_utils.c +0 -0
  63. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/platform/win32_utils.h +0 -0
  64. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/third_party/ltalloc.h +0 -0
  65. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/third_party/stb_ds.h +0 -0
  66. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/third_party/stb_image.h +0 -0
  67. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/third_party/stb_image_write.h +0 -0
  68. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/third_party/stb_sprintf.h +0 -0
  69. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/third_party/yxml.c +0 -0
  70. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/third_party/yxml.h +0 -0
  71. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/isyntax_build/vendor/libisyntax/src/utils/libtiff_api.h +0 -0
  72. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/pyisyntax.egg-info/dependency_links.txt +0 -0
  73. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/pyisyntax.egg-info/not-zip-safe +0 -0
  74. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/pyisyntax.egg-info/requires.txt +0 -0
  75. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/pyisyntax.egg-info/top_level.txt +0 -0
  76. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/setup.cfg +0 -0
  77. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/setup.py +0 -0
  78. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/tests/conftest.py +0 -0
  79. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/tests/data/DOWNLOAD.txt +0 -0
  80. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/tests/test_lowlevel.py +0 -0
  81. {pyisyntax-0.1.5 → pyisyntax-0.1.7}/tests/test_wrapper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyisyntax
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: Python bindings for libisyntax
5
5
  Author-email: Aiden Nibali <dismaldenizen@gmail.com>
6
6
  License-Expression: MIT
@@ -79,3 +79,21 @@ To modify pyisyntax project dependencies:
79
79
  ```console
80
80
  $ uv lock
81
81
  ```
82
+
83
+ ### Cutting a new release
84
+
85
+ 1. Ensure that tests are passing and everything is ready for release.
86
+ 2. Create and push a Git tag:
87
+ ```console
88
+ $ git tag v0.1.6
89
+ $ git push --tags
90
+ ```
91
+ 3. Download the artifacts from GitHub Actions, which will include the source distribution tarball and binary wheels.
92
+ 4. Create a new release on GitHub from the tagged commit and upload the packages as attachments to the release.
93
+ 5. Also upload the packages to PyPI using Twine:
94
+ ```console
95
+ $ uv run twine upload pyisyntax-*.tar.gz pyisyntax-*.whl
96
+ ```
97
+ 6. Bump the version number in `pyproject.toml` and create a commit, signalling the start of development on the next version.
98
+
99
+ These files should also be added to a GitHub release.
@@ -61,3 +61,21 @@ To modify pyisyntax project dependencies:
61
61
  ```console
62
62
  $ uv lock
63
63
  ```
64
+
65
+ ### Cutting a new release
66
+
67
+ 1. Ensure that tests are passing and everything is ready for release.
68
+ 2. Create and push a Git tag:
69
+ ```console
70
+ $ git tag v0.1.6
71
+ $ git push --tags
72
+ ```
73
+ 3. Download the artifacts from GitHub Actions, which will include the source distribution tarball and binary wheels.
74
+ 4. Create a new release on GitHub from the tagged commit and upload the packages as attachments to the release.
75
+ 5. Also upload the packages to PyPI using Twine:
76
+ ```console
77
+ $ uv run twine upload pyisyntax-*.tar.gz pyisyntax-*.whl
78
+ ```
79
+ 6. Bump the version number in `pyproject.toml` and create a commit, signalling the start of development on the next version.
80
+
81
+ These files should also be added to a GitHub release.
@@ -0,0 +1,4 @@
1
+ from typing import Any
2
+
3
+ ffi: Any
4
+ lib: Any
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import platform
2
3
  from importlib import resources
3
4
  from pathlib import Path
4
5
 
@@ -41,6 +42,19 @@ def create_ffibuilder() -> FFI:
41
42
  platform_sources = []
42
43
  extra_compile_args = []
43
44
  libraries = []
45
+ # The vendored libisyntax guards its SIMD/atomics on x86-centric macros
46
+ # that GCC does not define on aarch64 Linux, so the arm build otherwise
47
+ # fails to compile / links x86-only intrinsics. Select the correct paths:
48
+ # __ARM_NEON__ -> intrinsics.h includes <arm_neon.h> for the NEON code
49
+ # __arm64 -> ltalloc spin-wait uses sched_yield, not x86 `pause`
50
+ # the last two map x86-only bit intrinsics onto portable GCC builtins
51
+ if platform.machine() in ("aarch64", "arm64"):
52
+ extra_compile_args += [
53
+ "-D__ARM_NEON__=1",
54
+ "-D__arm64=1",
55
+ "-D_bit_scan_forward=__builtin_ctz",
56
+ "-D_popcnt32=__builtin_popcount",
57
+ ]
44
58
 
45
59
  ffibuilder.set_source(
46
60
  "isyntax._pyisyntax",
@@ -51,7 +65,7 @@ def create_ffibuilder() -> FFI:
51
65
  libisyntax_src / "isyntax" / "isyntax_reader.c",
52
66
  libisyntax_src / "utils" / "timerutils.c",
53
67
  libisyntax_src / "utils" / "block_allocator.c",
54
- libisyntax_src / "utils" / "benaphore.c",
68
+ libisyntax_src / "platform" / "platform_mutex.c",
55
69
  libisyntax_src / "platform" / "platform.c",
56
70
  libisyntax_src / "platform" / "work_queue.c",
57
71
  libisyntax_src / "third_party" / "yxml.c",
@@ -5,7 +5,8 @@
5
5
  #include <dirent.h>
6
6
  #include <sys/stat.h>
7
7
  #include <sys/types.h>
8
- #include <malloc.h>
8
+ #include <stdlib.h>
9
+ #include <string.h>
9
10
 
10
11
 
11
12
  #define CHECK_LIBISYNTAX_OK(_libisyntax_call) do { \
@@ -19,7 +20,7 @@
19
20
  #ifdef _WIN32
20
21
  #define PATH_SEP "\\"
21
22
  #else
22
- #define PATH_SEP "/";
23
+ #define PATH_SEP "/"
23
24
  #endif
24
25
 
25
26
  // This program loops through all the .isyntax files in a folder (including subfolders),
@@ -16,14 +16,36 @@
16
16
 
17
17
  void print_isyntax_levels(isyntax_t* isyntax) {
18
18
  const isyntax_image_t* wsi_image = libisyntax_get_wsi_image(isyntax);
19
+ LOG_VAR("%s", libisyntax_get_acquisition_datetime(isyntax));
20
+ LOG_VAR("%s", libisyntax_get_manufacturer(isyntax));
21
+ LOG_VAR("%s", libisyntax_get_manufacturers_model_name(isyntax));
22
+ LOG_VAR("%s", libisyntax_get_derivation_description(isyntax));
23
+ LOG_VAR("%s", libisyntax_get_device_serial_number(isyntax));
24
+ for (int i = 0; i < libisyntax_get_software_versions_count(isyntax); ++i) {
25
+ LOG_VAR("%d", i);
26
+ LOG_VAR("%s", libisyntax_get_software_versions(isyntax, i));
27
+ }
28
+ for (int i = 0; i < libisyntax_get_date_of_last_calibration_count(isyntax); ++i) {
29
+ LOG_VAR("%d", i);
30
+ LOG_VAR("%s", libisyntax_get_date_of_last_calibration(isyntax, i));
31
+ }
32
+ for (int i = 0; i < libisyntax_get_time_of_last_calibration_count(isyntax); ++i) {
33
+ LOG_VAR("%d", i);
34
+ LOG_VAR("%s", libisyntax_get_time_of_last_calibration(isyntax, i));
35
+ }
19
36
 
37
+ LOG_VAR("%d", libisyntax_is_lossy_image_compression(isyntax));
38
+ LOG_VAR("%f", libisyntax_get_lossy_image_compression_ratio(isyntax));
39
+ LOG_VAR("%s", libisyntax_get_lossy_image_compression_method(isyntax));
20
40
  for (int i = 0; i < libisyntax_image_get_level_count(wsi_image); ++i) {
21
41
  const isyntax_level_t* level = libisyntax_image_get_level(wsi_image, i);
22
42
  LOG_VAR("%d", i);
23
43
  LOG_VAR("%d", libisyntax_level_get_scale(level));
24
44
  LOG_VAR("%d", libisyntax_level_get_width_in_tiles(level));
25
45
  LOG_VAR("%d", libisyntax_level_get_height_in_tiles(level));
46
+ LOG_VAR("%f", libisyntax_level_get_mpp_x(level));
26
47
  }
48
+ LOG_VAR("%s", libisyntax_scale_unit(isyntax));
27
49
  }
28
50
 
29
51
  int main(int argc, char** argv) {
@@ -51,7 +51,7 @@
51
51
  #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
52
52
  /* GCC-compatible compiler, targeting x86/x86-64 */
53
53
  #include <x86intrin.h>
54
- #elif defined(__GNUC__) && defined(__ARM_NEON__)
54
+ #elif defined(__GNUC__) && (defined(__ARM_NEON__) || defined(__ARM_NEON))
55
55
  /* GCC-compatible compiler, targeting ARM with NEON */
56
56
  #include <arm_neon.h>
57
57
  #elif defined(__GNUC__) && defined(__IWMMXT__)