Perception 0.9.0__tar.gz → 0.9.2__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 (99) hide show
  1. {perception-0.9.0 → perception-0.9.2}/.github/workflows/ci.yaml +4 -4
  2. {perception-0.9.0 → perception-0.9.2}/.github/workflows/gh-pages.yaml +2 -2
  3. {perception-0.9.0 → perception-0.9.2}/.github/workflows/release.yaml +10 -10
  4. {perception-0.9.0 → perception-0.9.2}/CHANGELOG.md +8 -0
  5. {perception-0.9.0 → perception-0.9.2}/PKG-INFO +2 -2
  6. {perception-0.9.0 → perception-0.9.2}/Perception.egg-info/PKG-INFO +2 -2
  7. {perception-0.9.0 → perception-0.9.2}/Perception.egg-info/SOURCES.txt +2 -0
  8. {perception-0.9.0 → perception-0.9.2}/Perception.egg-info/requires.txt +1 -1
  9. perception-0.9.2/Perception.egg-info/scm_file_list.json +98 -0
  10. perception-0.9.2/Perception.egg-info/scm_version.json +8 -0
  11. {perception-0.9.0 → perception-0.9.2}/perception/benchmarking/extensions.c +5509 -5581
  12. {perception-0.9.0 → perception-0.9.2}/perception/extensions.cpp +5522 -5594
  13. {perception-0.9.0 → perception-0.9.2}/perception/hashers/image/phash.py +29 -9
  14. {perception-0.9.0 → perception-0.9.2}/perception/hashers/tools.py +15 -16
  15. {perception-0.9.0 → perception-0.9.2}/perception/hashers/video/tmk.py +0 -6
  16. {perception-0.9.0 → perception-0.9.2}/pyproject.toml +2 -2
  17. {perception-0.9.0 → perception-0.9.2}/uv.lock +173 -160
  18. {perception-0.9.0 → perception-0.9.2}/.dockerignore +0 -0
  19. {perception-0.9.0 → perception-0.9.2}/.git-blame-ignore-revs +0 -0
  20. {perception-0.9.0 → perception-0.9.2}/.gitattributes +0 -0
  21. {perception-0.9.0 → perception-0.9.2}/.github/dependabot.yaml +0 -0
  22. {perception-0.9.0 → perception-0.9.2}/.gitignore +0 -0
  23. {perception-0.9.0 → perception-0.9.2}/.pre-commit-config.yaml +0 -0
  24. {perception-0.9.0 → perception-0.9.2}/.readthedocs.yaml +0 -0
  25. {perception-0.9.0 → perception-0.9.2}/CODE_OF_CONDUCT.md +0 -0
  26. {perception-0.9.0 → perception-0.9.2}/LICENSE +0 -0
  27. {perception-0.9.0 → perception-0.9.2}/MANIFEST.in +0 -0
  28. {perception-0.9.0 → perception-0.9.2}/Makefile +0 -0
  29. {perception-0.9.0 → perception-0.9.2}/Perception.egg-info/dependency_links.txt +0 -0
  30. {perception-0.9.0 → perception-0.9.2}/Perception.egg-info/top_level.txt +0 -0
  31. {perception-0.9.0 → perception-0.9.2}/README.md +0 -0
  32. {perception-0.9.0 → perception-0.9.2}/docs/api/benchmarking.rst +0 -0
  33. {perception-0.9.0 → perception-0.9.2}/docs/api/hashers.rst +0 -0
  34. {perception-0.9.0 → perception-0.9.2}/docs/api/index.rst +0 -0
  35. {perception-0.9.0 → perception-0.9.2}/docs/api/tools.rst +0 -0
  36. {perception-0.9.0 → perception-0.9.2}/docs/conf.py +0 -0
  37. {perception-0.9.0 → perception-0.9.2}/docs/examples/benchmarking.rst +0 -0
  38. {perception-0.9.0 → perception-0.9.2}/docs/examples/deduplication.rst +0 -0
  39. {perception-0.9.0 → perception-0.9.2}/docs/examples/detecting_csam.rst +0 -0
  40. {perception-0.9.0 → perception-0.9.2}/docs/examples/index.rst +0 -0
  41. {perception-0.9.0 → perception-0.9.2}/docs/index.rst +0 -0
  42. {perception-0.9.0 → perception-0.9.2}/docs/requirements.txt +0 -0
  43. {perception-0.9.0 → perception-0.9.2}/perception/__init__.py +0 -0
  44. {perception-0.9.0 → perception-0.9.2}/perception/_optional.py +0 -0
  45. {perception-0.9.0 → perception-0.9.2}/perception/approximate_deduplication/__init__.py +0 -0
  46. {perception-0.9.0 → perception-0.9.2}/perception/approximate_deduplication/_graph_backend.py +0 -0
  47. {perception-0.9.0 → perception-0.9.2}/perception/approximate_deduplication/debug.py +0 -0
  48. {perception-0.9.0 → perception-0.9.2}/perception/approximate_deduplication/index.py +0 -0
  49. {perception-0.9.0 → perception-0.9.2}/perception/approximate_deduplication/serve.py +0 -0
  50. {perception-0.9.0 → perception-0.9.2}/perception/benchmarking/__init__.py +0 -0
  51. {perception-0.9.0 → perception-0.9.2}/perception/benchmarking/common.py +0 -0
  52. {perception-0.9.0 → perception-0.9.2}/perception/benchmarking/extensions.pyx +0 -0
  53. {perception-0.9.0 → perception-0.9.2}/perception/benchmarking/image.py +0 -0
  54. {perception-0.9.0 → perception-0.9.2}/perception/benchmarking/image_transforms.py +0 -0
  55. {perception-0.9.0 → perception-0.9.2}/perception/benchmarking/video.py +0 -0
  56. {perception-0.9.0 → perception-0.9.2}/perception/benchmarking/video_transforms.py +0 -0
  57. {perception-0.9.0 → perception-0.9.2}/perception/extensions.pyx +0 -0
  58. {perception-0.9.0 → perception-0.9.2}/perception/hashers/__init__.py +0 -0
  59. {perception-0.9.0 → perception-0.9.2}/perception/hashers/hasher.py +0 -0
  60. {perception-0.9.0 → perception-0.9.2}/perception/hashers/image/__init__.py +0 -0
  61. {perception-0.9.0 → perception-0.9.2}/perception/hashers/image/average.py +0 -0
  62. {perception-0.9.0 → perception-0.9.2}/perception/hashers/image/dhash.py +0 -0
  63. {perception-0.9.0 → perception-0.9.2}/perception/hashers/image/opencv.py +0 -0
  64. {perception-0.9.0 → perception-0.9.2}/perception/hashers/image/pdq.py +0 -0
  65. {perception-0.9.0 → perception-0.9.2}/perception/hashers/image/wavelet.py +0 -0
  66. {perception-0.9.0 → perception-0.9.2}/perception/hashers/video/__init__.py +0 -0
  67. {perception-0.9.0 → perception-0.9.2}/perception/hashers/video/framewise.py +0 -0
  68. {perception-0.9.0 → perception-0.9.2}/perception/local_descriptor_deduplication.py +0 -0
  69. {perception-0.9.0 → perception-0.9.2}/perception/py.typed +0 -0
  70. {perception-0.9.0 → perception-0.9.2}/perception/testing/__init__.py +0 -0
  71. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/README.md +0 -0
  72. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image1.jpg +0 -0
  73. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image10.jpg +0 -0
  74. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image2.jpg +0 -0
  75. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image3.jpg +0 -0
  76. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image4.jpg +0 -0
  77. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image5.jpg +0 -0
  78. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image6.jpg +0 -0
  79. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image7.jpg +0 -0
  80. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image8.jpg +0 -0
  81. {perception-0.9.0 → perception-0.9.2}/perception/testing/images/image9.jpg +0 -0
  82. {perception-0.9.0 → perception-0.9.2}/perception/testing/logos/README.md +0 -0
  83. {perception-0.9.0 → perception-0.9.2}/perception/testing/logos/logoipsum.png +0 -0
  84. {perception-0.9.0 → perception-0.9.2}/perception/testing/videos/README.md +0 -0
  85. {perception-0.9.0 → perception-0.9.2}/perception/testing/videos/expected_tmk.json.gz +0 -0
  86. {perception-0.9.0 → perception-0.9.2}/perception/testing/videos/extra_channel_attached_pic.mp4 +0 -0
  87. {perception-0.9.0 → perception-0.9.2}/perception/testing/videos/extra_channel_attached_pic_audio.mp4 +0 -0
  88. {perception-0.9.0 → perception-0.9.2}/perception/testing/videos/rgb.m4v +0 -0
  89. {perception-0.9.0 → perception-0.9.2}/perception/testing/videos/v1.m4v +0 -0
  90. {perception-0.9.0 → perception-0.9.2}/perception/testing/videos/v2.m4v +0 -0
  91. {perception-0.9.0 → perception-0.9.2}/perception/testing/videos/v2s.mov +0 -0
  92. {perception-0.9.0 → perception-0.9.2}/perception/tools.py +0 -0
  93. {perception-0.9.0 → perception-0.9.2}/perception/utils.py +0 -0
  94. {perception-0.9.0 → perception-0.9.2}/setup.cfg +0 -0
  95. {perception-0.9.0 → perception-0.9.2}/setup.py +0 -0
  96. {perception-0.9.0 → perception-0.9.2}/tests/images/chair-square.png +0 -0
  97. {perception-0.9.0 → perception-0.9.2}/tests/images/chair-tall.png +0 -0
  98. {perception-0.9.0 → perception-0.9.2}/tests/images/chair.png +0 -0
  99. {perception-0.9.0 → perception-0.9.2}/tests/images/chair3.png +0 -0
@@ -12,13 +12,13 @@ jobs:
12
12
  strategy:
13
13
  matrix:
14
14
  python-version: ["3.10", "3.11", "3.12", "3.13"]
15
- os: ["ubuntu-latest", "windows-latest", "macos-latest"]
15
+ os: ["ubuntu-latest", "ubuntu-24.04-arm", "windows-latest", "macos-latest"]
16
16
  runs-on: ${{ matrix.os }}
17
17
  steps:
18
18
  - name: checkout
19
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
19
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
20
20
  - name: Set up uv
21
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
21
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
22
22
  with:
23
23
  python-version: ${{ matrix.python-version }}
24
24
  enable-cache: true
@@ -26,7 +26,7 @@ jobs:
26
26
  cache-dependency-glob: |
27
27
  pyproject.toml
28
28
  uv.lock
29
- cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
29
+ cache-suffix: ${{ matrix.os }}-${{ matrix.python-version }}
30
30
  - name: Setup FFMPEG on Ubuntu
31
31
  if: startsWith(matrix.os, 'ubuntu')
32
32
  run: |
@@ -20,11 +20,11 @@ jobs:
20
20
  pages: write
21
21
  id-token: write
22
22
  steps:
23
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
23
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
24
24
  with:
25
25
  fetch-depth: 0
26
26
  - id: deployment
27
- uses: sphinx-notes/pages@e9c8f79f285fb41a150ba6e08a3c2a29635e7ee1 # 3.5
27
+ uses: sphinx-notes/pages@6e3e0108e79636a0908b1c2c5899e0d3dfad0bc1 # 3.6
28
28
  with:
29
29
  checkout: false
30
30
  documentation_path: docs
@@ -13,17 +13,17 @@ jobs:
13
13
  strategy:
14
14
  matrix:
15
15
  python-version: ["3.10", "3.11", "3.12", "3.13"]
16
- os: ["ubuntu-latest", "windows-latest", "macos-latest"]
16
+ os: ["ubuntu-latest", "ubuntu-24.04-arm", "windows-latest", "macos-latest"]
17
17
  name: Build for ${{ matrix.os }} on Python ${{ matrix.python-version }}
18
18
  steps:
19
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
19
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
20
20
  with:
21
21
  # Full clone for version calculation
22
22
  fetch-depth: 0
23
23
  fetch-tags: true
24
24
  ref: ${{ github.event_name == 'release' && format('refs/tags/{0}', github.event.release.tag_name) || github.ref }}
25
25
  - name: Set up uv
26
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
26
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
27
27
  with:
28
28
  python-version: ${{ matrix.python-version }}
29
29
  enable-cache: false
@@ -44,7 +44,7 @@ jobs:
44
44
  uv tool run --from repairwheel repairwheel -o dist dist-tmp/*.whl
45
45
  find dist -name "*.whl" -type f | sed -n "s/\(.*\)\.linux.*\.whl$/& \1.whl/p" | xargs -r -n 2 mv
46
46
  rm -rf dist-tmp
47
- - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
47
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
48
48
  with:
49
49
  name: package-wheels-${{ matrix.os }}-${{ matrix.python-version }}
50
50
  path: dist/*
@@ -53,14 +53,14 @@ jobs:
53
53
  runs-on: ubuntu-latest
54
54
  name: Build sdist
55
55
  steps:
56
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
56
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
57
57
  with:
58
58
  # Full clone for version calculation
59
59
  fetch-depth: 0
60
60
  fetch-tags: true
61
61
  ref: ${{ github.event_name == 'release' && format('refs/tags/{0}', github.event.release.tag_name) || github.ref }}
62
62
  - name: Set up uv
63
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
63
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
64
64
  with:
65
65
  python-version: "3.13"
66
66
  enable-cache: false
@@ -72,7 +72,7 @@ jobs:
72
72
  echo "Python: $(uv run python --version)"
73
73
  echo "Git describe: $(git describe --tags --always)"
74
74
  uv build --sdist --out-dir="dist"
75
- - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
75
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
76
76
  with:
77
77
  name: package-sdist
78
78
  path: dist/*
@@ -82,14 +82,14 @@ jobs:
82
82
  runs-on: ubuntu-latest
83
83
  if: ${{ github.repository_owner == 'thorn-oss' && github.event_name == 'release' }}
84
84
  steps:
85
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
85
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
86
86
  with:
87
87
  # Full clone for version calculation
88
88
  fetch-depth: 0
89
89
  fetch-tags: true
90
90
  ref: refs/tags/${{ github.event.release.tag_name }}
91
91
  - name: Set up uv
92
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
92
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
93
93
  with:
94
94
  python-version: "3.13"
95
95
  enable-cache: false
@@ -100,7 +100,7 @@ jobs:
100
100
  pattern: package-*
101
101
  merge-multiple: true
102
102
  - name: Load PyPI Token
103
- uses: 1password/load-secrets-action@7ce42673ba9ed69053d678faeba29ea36bd25755 # v4.0.0
103
+ uses: 1password/load-secrets-action@3a12b0ab99d9cd590a3e9b5a90ea017210ed9556 # v4.0.1
104
104
  with:
105
105
  # Export loaded secrets as environment variables
106
106
  export-env: true
@@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.9.1] - 2026-05-26
8
+
9
+ ### Enhancements
10
+ - Added ARM64 Linux (`ubuntu-24.04-arm`) to the CI test matrix and the release wheel-build matrix.
11
+
12
+ ### Bug fixes
13
+ - TMK hashing now works on ARM64. The previous "not supported" warning was removed; the parity test uses cosine similarity and score-level comparison to account for minor cross-architecture differences in video decoding.
14
+
7
15
  ## [0.9.0] - 2026-05-13
8
16
  This release moves heavyweight dependencies behind optional extras so they are not installed for users who only need core hashing functionality, and standardizes the error users see when an extra is missing.
9
17
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Perception
3
- Version: 0.9.0
3
+ Version: 0.9.2
4
4
  Summary: Perception provides flexible, well-documented, and comprehensively tested tooling for perceptual hashing research, development, and production use.
5
5
  Author-email: Thorn <info@wearethorn.org>
6
6
  License-Expression: Apache-2.0
@@ -17,7 +17,7 @@ Requires-Dist: scipy
17
17
  Requires-Dist: tqdm<5.0.0,>=4.67.1
18
18
  Requires-Dist: typing_extensions<5.0,>=4.0
19
19
  Provides-Extra: approximate-deduplication
20
- Requires-Dist: faiss-cpu<2.0.0,>=1.8.0; extra == "approximate-deduplication"
20
+ Requires-Dist: faiss-cpu<2.0.0,>=1.14.3; extra == "approximate-deduplication"
21
21
  Requires-Dist: networkit<12.0.0,>=11.1; sys_platform != "darwin" and extra == "approximate-deduplication"
22
22
  Requires-Dist: networkx<4.0,>=3.0; sys_platform == "darwin" and extra == "approximate-deduplication"
23
23
  Requires-Dist: pandas; extra == "approximate-deduplication"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Perception
3
- Version: 0.9.0
3
+ Version: 0.9.2
4
4
  Summary: Perception provides flexible, well-documented, and comprehensively tested tooling for perceptual hashing research, development, and production use.
5
5
  Author-email: Thorn <info@wearethorn.org>
6
6
  License-Expression: Apache-2.0
@@ -17,7 +17,7 @@ Requires-Dist: scipy
17
17
  Requires-Dist: tqdm<5.0.0,>=4.67.1
18
18
  Requires-Dist: typing_extensions<5.0,>=4.0
19
19
  Provides-Extra: approximate-deduplication
20
- Requires-Dist: faiss-cpu<2.0.0,>=1.8.0; extra == "approximate-deduplication"
20
+ Requires-Dist: faiss-cpu<2.0.0,>=1.14.3; extra == "approximate-deduplication"
21
21
  Requires-Dist: networkit<12.0.0,>=11.1; sys_platform != "darwin" and extra == "approximate-deduplication"
22
22
  Requires-Dist: networkx<4.0,>=3.0; sys_platform == "darwin" and extra == "approximate-deduplication"
23
23
  Requires-Dist: pandas; extra == "approximate-deduplication"
@@ -21,6 +21,8 @@ Perception.egg-info/PKG-INFO
21
21
  Perception.egg-info/SOURCES.txt
22
22
  Perception.egg-info/dependency_links.txt
23
23
  Perception.egg-info/requires.txt
24
+ Perception.egg-info/scm_file_list.json
25
+ Perception.egg-info/scm_version.json
24
26
  Perception.egg-info/top_level.txt
25
27
  docs/conf.py
26
28
  docs/index.rst
@@ -9,7 +9,7 @@ tqdm<5.0.0,>=4.67.1
9
9
  typing_extensions<5.0,>=4.0
10
10
 
11
11
  [approximate-deduplication]
12
- faiss-cpu<2.0.0,>=1.8.0
12
+ faiss-cpu<2.0.0,>=1.14.3
13
13
  pandas
14
14
 
15
15
  [approximate-deduplication:sys_platform != "darwin"]
@@ -0,0 +1,98 @@
1
+ {
2
+ "files": [
3
+ ".pre-commit-config.yaml",
4
+ "README.md",
5
+ "uv.lock",
6
+ "Makefile",
7
+ "LICENSE",
8
+ "setup.py",
9
+ "pyproject.toml",
10
+ "CHANGELOG.md",
11
+ ".dockerignore",
12
+ ".git-blame-ignore-revs",
13
+ ".gitattributes",
14
+ "MANIFEST.in",
15
+ ".gitignore",
16
+ ".readthedocs.yaml",
17
+ "CODE_OF_CONDUCT.md",
18
+ "docs/index.rst",
19
+ "docs/requirements.txt",
20
+ "docs/conf.py",
21
+ "docs/api/benchmarking.rst",
22
+ "docs/api/index.rst",
23
+ "docs/api/tools.rst",
24
+ "docs/api/hashers.rst",
25
+ "docs/examples/benchmarking.rst",
26
+ "docs/examples/detecting_csam.rst",
27
+ "docs/examples/index.rst",
28
+ "docs/examples/deduplication.rst",
29
+ "perception/local_descriptor_deduplication.py",
30
+ "perception/tools.py",
31
+ "perception/py.typed",
32
+ "perception/__init__.py",
33
+ "perception/utils.py",
34
+ "perception/extensions.pyx",
35
+ "perception/_optional.py",
36
+ "perception/hashers/tools.py",
37
+ "perception/hashers/__init__.py",
38
+ "perception/hashers/hasher.py",
39
+ "perception/hashers/video/__init__.py",
40
+ "perception/hashers/video/tmk.py",
41
+ "perception/hashers/video/framewise.py",
42
+ "perception/hashers/image/__init__.py",
43
+ "perception/hashers/image/opencv.py",
44
+ "perception/hashers/image/phash.py",
45
+ "perception/hashers/image/wavelet.py",
46
+ "perception/hashers/image/average.py",
47
+ "perception/hashers/image/dhash.py",
48
+ "perception/hashers/image/pdq.py",
49
+ "perception/approximate_deduplication/__init__.py",
50
+ "perception/approximate_deduplication/debug.py",
51
+ "perception/approximate_deduplication/serve.py",
52
+ "perception/approximate_deduplication/_graph_backend.py",
53
+ "perception/approximate_deduplication/index.py",
54
+ "perception/benchmarking/video.py",
55
+ "perception/benchmarking/video_transforms.py",
56
+ "perception/benchmarking/__init__.py",
57
+ "perception/benchmarking/image_transforms.py",
58
+ "perception/benchmarking/image.py",
59
+ "perception/benchmarking/extensions.pyx",
60
+ "perception/benchmarking/common.py",
61
+ "perception/testing/__init__.py",
62
+ "perception/testing/images/image1.jpg",
63
+ "perception/testing/images/image4.jpg",
64
+ "perception/testing/images/image6.jpg",
65
+ "perception/testing/images/README.md",
66
+ "perception/testing/images/image2.jpg",
67
+ "perception/testing/images/image9.jpg",
68
+ "perception/testing/images/image10.jpg",
69
+ "perception/testing/images/image3.jpg",
70
+ "perception/testing/images/image8.jpg",
71
+ "perception/testing/images/image5.jpg",
72
+ "perception/testing/images/image7.jpg",
73
+ "perception/testing/videos/v1.m4v",
74
+ "perception/testing/videos/README.md",
75
+ "perception/testing/videos/v2s.mov",
76
+ "perception/testing/videos/extra_channel_attached_pic.mp4",
77
+ "perception/testing/videos/extra_channel_attached_pic_audio.mp4",
78
+ "perception/testing/videos/expected_tmk.json.gz",
79
+ "perception/testing/videos/v2.m4v",
80
+ "perception/testing/videos/rgb.m4v",
81
+ "perception/testing/logos/README.md",
82
+ "perception/testing/logos/logoipsum.png",
83
+ "tests/test_benchmarking.py",
84
+ "tests/test_hashers.py",
85
+ "tests/test_tmk.py",
86
+ "tests/test_local_descriptor_deduplication.py",
87
+ "tests/test_approximate_deduplication.py",
88
+ "tests/test_tools.py",
89
+ "tests/images/chair-square.png",
90
+ "tests/images/chair3.png",
91
+ "tests/images/chair-tall.png",
92
+ "tests/images/chair.png",
93
+ ".github/dependabot.yaml",
94
+ ".github/workflows/gh-pages.yaml",
95
+ ".github/workflows/release.yaml",
96
+ ".github/workflows/ci.yaml"
97
+ ]
98
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.9.2",
3
+ "distance": 0,
4
+ "node": "g1a20019fc8b1b1c71e9381ac8a8cf916e4fc2dec",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-06-25"
8
+ }