Skip to content

Commit d87302b

Browse files
Merge pull request #2348 from VWS-Python/docrun-pre-commit
Add docrun pre-commit hooks
2 parents 5ff34f6 + 0f41e17 commit d87302b

File tree

4 files changed

+208
-92
lines changed

4 files changed

+208
-92
lines changed

.pre-commit-config.yaml

Lines changed: 72 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
fail_fast: true
2+
13
# See https://pre-commit.com for more information
24
# See https://pre-commit.com/hooks.html for more hooks
35

@@ -6,25 +8,32 @@ ci:
68
# We therefore cannot use those dependencies in pre-commit CI.
79
skip:
810
- actionlint
9-
- mypy
1011
- check-manifest
11-
- pyright
12-
- vulture
13-
- pyroma
1412
- deptry
15-
- pylint
16-
- ruff-check
17-
- ruff-format-diff
18-
- ruff-check-fix
19-
- ruff-format-fix
2013
- doc8
14+
- docs
2115
- interrogate
16+
- interrogate-docs
17+
- linkcheck
18+
- mypy
19+
- mypy-docs
20+
- pylint
2221
- pyproject-fmt-check
2322
- pyproject-fmt-fix
24-
- linkcheck
25-
- spelling
26-
- docs
23+
- pyright
24+
- pyright-docs
2725
- pyright-verifytypes
26+
- pyroma
27+
- ruff-check
28+
- ruff-check-docs
29+
- ruff-check-fix
30+
- ruff-check-fix-docs
31+
- ruff-format-diff
32+
- ruff-format-diff-docs
33+
- ruff-format-fix
34+
- ruff-format-fix-docs
35+
- spelling
36+
- vulture
2837

2938
default_install_hook_types: [pre-commit, pre-push, commit-msg]
3039
repos:
@@ -66,6 +75,13 @@ repos:
6675
types_or: [python, toml]
6776
pass_filenames: false
6877

78+
- id: mypy-docs
79+
name: mypy-docs
80+
stages: [push]
81+
entry: doccmd --language=python --command="mypy"
82+
language: system
83+
types_or: [markdown, rst, python, toml]
84+
6985
- id: check-manifest
7086
name: check-manifest
7187
stages: [push]
@@ -81,6 +97,13 @@ repos:
8197
types_or: [python, toml]
8298
pass_filenames: false
8399

100+
- id: pyright-docs
101+
name: pyright-docs
102+
stages: [push]
103+
entry: doccmd --language=python --command="pyright"
104+
language: system
105+
types_or: [markdown, rst, python, toml]
106+
84107
- id: vulture
85108
name: vulture
86109
entry: python -m vulture --min-confidence 100 --exclude .eggs
@@ -107,30 +130,61 @@ repos:
107130
stages: [manual]
108131
pass_filenames: false
109132

133+
- id: pylint-docs
134+
name: pylint-docs
135+
entry: doccmd --language=python --command="pylint" --lowercase-file-name
136+
language: system
137+
stages: [manual]
138+
types_or: [markdown, rst, python, toml]
139+
110140
- id: ruff-check
111141
name: Ruff check
112142
entry: python -m ruff check
113143
language: system
114144
types_or: [python]
115145

146+
- id: ruff-check-docs
147+
name: Ruff check docs
148+
entry: doccmd --language=python --command="ruff check"
149+
language: system
150+
types_or: [markdown, rst]
151+
116152
- id: ruff-format-diff
117153
name: Ruff format diff
118154
entry: python -m ruff format --diff
119155
language: system
120156
types_or: [python]
121157

158+
- id: ruff-format-diff-docs
159+
name: Ruff format diff docs
160+
entry: doccmd --language=python --no-pad-file --command="ruff format --diff"
161+
language: system
162+
types_or: [markdown, rst]
163+
122164
- id: ruff-check-fix
123165
name: Ruff check fix
124166
entry: python -m ruff check --fix
125167
language: system
126168
types_or: [python]
127169

170+
- id: ruff-check-fix-docs
171+
name: Ruff check fix docs
172+
entry: doccmd --language=python --command="ruff check --fix"
173+
language: system
174+
types_or: [markdown, rst]
175+
128176
- id: ruff-format-fix
129177
name: Ruff format
130178
entry: python -m ruff format
131179
language: system
132180
types_or: [python]
133181

182+
- id: ruff-format-fix-docs
183+
name: Ruff format docs
184+
entry: doccmd --language=python --no-pad-file --command="ruff format"
185+
language: system
186+
types_or: [markdown, rst]
187+
134188
- id: doc8
135189
name: doc8
136190
entry: python -m doc8
@@ -143,6 +197,12 @@ repos:
143197
language: system
144198
types_or: [python]
145199

200+
- id: interrogate-docs
201+
name: interrogate docs
202+
entry: doccmd --language=python --command="interrogate"
203+
language: system
204+
types_or: [markdown, rst]
205+
146206
- id: pyproject-fmt-check
147207
name: pyproject-fmt check
148208
entry: pyproject-fmt --check

README.rst

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,38 +22,57 @@ Getting Started
2222

2323
.. code-block:: python
2424
25+
"""Add a target to VWS and then query it."""
26+
2527
import pathlib
28+
import uuid
2629
2730
from vws import VWS, CloudRecoService
31+
from vws.reports import QueryResult
32+
2833
29-
server_access_key = '[server-access-key]'
30-
server_secret_key = '[server-secret-key]'
31-
client_access_key = '[client-access-key]'
32-
client_secret_key = '[client-secret-key]'
33-
34-
vws_client = VWS(
35-
server_access_key=server_access_key,
36-
server_secret_key=server_secret_key,
37-
)
38-
cloud_reco_client = CloudRecoService(
39-
client_access_key=client_access_key,
40-
client_secret_key=client_secret_key,
41-
)
42-
name = 'my_image_name'
43-
44-
image = pathlib.Path('high_quality_image.jpg')
45-
with image.open(mode='rb') as my_image_file:
46-
target_id = vws_client.add_target(
47-
name=name,
48-
width=1,
49-
image=my_image_file,
50-
active_flag=True,
51-
application_metadata=None,
34+
def add_target() -> str:
35+
"""Add a target to VWS and return its ID."""
36+
server_access_key = "[server-access-key]"
37+
server_secret_key = "[server-secret-key]"
38+
vws_client = VWS(
39+
server_access_key=server_access_key,
40+
server_secret_key=server_secret_key,
41+
)
42+
name = "my_image_name_" + uuid.uuid4().hex
43+
44+
image = pathlib.Path("high_quality_image.jpg")
45+
with image.open(mode="rb") as my_image_file:
46+
target_id = vws_client.add_target(
47+
name=name,
48+
width=1,
49+
image=my_image_file,
50+
active_flag=True,
51+
application_metadata=None,
52+
)
53+
vws_client.wait_for_target_processed(target_id=target_id)
54+
55+
return target_id
56+
57+
58+
def get_matching_targets() -> list[QueryResult]:
59+
"""Query VWS for matching targets."""
60+
client_access_key = "[client-access-key]"
61+
client_secret_key = "[client-secret-key]"
62+
63+
cloud_reco_client = CloudRecoService(
64+
client_access_key=client_access_key,
65+
client_secret_key=client_secret_key,
5266
)
53-
vws_client.wait_for_target_processed(target_id=target_id)
54-
matching_targets = cloud_reco_client.query(image=my_image_file)
5567
56-
assert matching_targets[0].target_id == target_id
68+
image = pathlib.Path("high_quality_image.jpg")
69+
with image.open(mode="rb") as my_image_file:
70+
return cloud_reco_client.query(image=my_image_file)
71+
72+
73+
TARGET_ID = add_target()
74+
MATCHING_TARGETS = get_matching_targets()
75+
assert MATCHING_TARGETS[0].target_id == TARGET_ID
5776
5877
Full Documentation
5978
------------------

docs/source/index.rst

Lines changed: 85 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -18,40 +18,57 @@ See the :doc:`api-reference` for full usage details.
1818

1919
.. code-block:: python
2020
21+
"""Add a target to VWS and then query it."""
22+
2123
import pathlib
24+
import uuid
2225
2326
from vws import VWS, CloudRecoService
27+
from vws.reports import QueryResult
2428
25-
server_access_key = '[server-access-key]'
26-
server_secret_key = '[server-secret-key]'
27-
client_access_key = '[client-access-key]'
28-
client_secret_key = '[client-secret-key]'
29-
30-
vws_client = VWS(
31-
server_access_key=server_access_key,
32-
server_secret_key=server_secret_key,
33-
)
34-
cloud_reco_client = CloudRecoService(
35-
client_access_key=client_access_key,
36-
client_secret_key=client_secret_key,
37-
)
38-
import uuid
39-
name = 'my_image_name' + uuid.uuid4().hex
40-
41-
image = pathlib.Path('high_quality_image.jpg')
42-
with image.open(mode='rb') as my_image_file:
43-
target_id = vws_client.add_target(
44-
name=name,
45-
width=1,
46-
image=my_image_file,
47-
active_flag=True,
48-
application_metadata=None,
49-
)
50-
vws_client.wait_for_target_processed(target_id=target_id)
51-
matching_targets = cloud_reco_client.query(image=my_image_file)
52-
53-
assert matching_targets[0].target_id == target_id
54-
a = 1
29+
30+
def add_target() -> str:
31+
"""Add a target to VWS and return its ID."""
32+
server_access_key = "[server-access-key]"
33+
server_secret_key = "[server-secret-key]"
34+
vws_client = VWS(
35+
server_access_key=server_access_key,
36+
server_secret_key=server_secret_key,
37+
)
38+
name = "my_image_name_" + uuid.uuid4().hex
39+
40+
image = pathlib.Path("high_quality_image.jpg")
41+
with image.open(mode="rb") as my_image_file:
42+
target_id = vws_client.add_target(
43+
name=name,
44+
width=1,
45+
image=my_image_file,
46+
active_flag=True,
47+
application_metadata=None,
48+
)
49+
vws_client.wait_for_target_processed(target_id=target_id)
50+
51+
return target_id
52+
53+
54+
def get_matching_targets() -> list[QueryResult]:
55+
"""Query VWS for matching targets."""
56+
client_access_key = "[client-access-key]"
57+
client_secret_key = "[client-secret-key]"
58+
59+
cloud_reco_client = CloudRecoService(
60+
client_access_key=client_access_key,
61+
client_secret_key=client_secret_key,
62+
)
63+
64+
image = pathlib.Path("high_quality_image.jpg")
65+
with image.open(mode="rb") as my_image_file:
66+
return cloud_reco_client.query(image=my_image_file)
67+
68+
69+
TARGET_ID = add_target()
70+
MATCHING_TARGETS = get_matching_targets()
71+
assert MATCHING_TARGETS[0].target_id == TARGET_ID
5572
5673
Testing
5774
-------
@@ -66,33 +83,47 @@ To write unit tests for code which uses this library, without using your Vuforia
6683
6784
.. code-block:: python
6885
69-
import pathlib
86+
"""Add a target to VWS and then query it."""
7087
71-
from mock_vws.database import VuforiaDatabase
72-
from mock_vws import MockVWS
73-
from vws import CloudRecoService, VWS
88+
import pathlib
89+
90+
from mock_vws import MockVWS
91+
from mock_vws.database import VuforiaDatabase
92+
93+
from vws import VWS, CloudRecoService
94+
95+
96+
def test_add_target() -> None:
97+
"""Test adding a target to VWS."""
98+
with MockVWS() as mock:
99+
database = VuforiaDatabase()
100+
mock.add_database(database=database)
101+
vws_client = VWS(
102+
server_access_key=database.server_access_key,
103+
server_secret_key=database.server_secret_key,
104+
)
105+
cloud_reco_client = CloudRecoService(
106+
client_access_key=database.client_access_key,
107+
client_secret_key=database.client_secret_key,
108+
)
109+
110+
image = pathlib.Path("high_quality_image.jpg")
111+
with image.open(mode="rb") as my_image_file:
112+
target_id = vws_client.add_target(
113+
name="example_image_name",
114+
width=1,
115+
image=my_image_file,
116+
application_metadata=None,
117+
active_flag=True,
118+
)
119+
120+
vws_client.wait_for_target_processed(target_id=target_id)
121+
matching_targets = cloud_reco_client.query(image=my_image_file)
122+
123+
assert matching_targets[0].target_id == target_id
74124
75-
with MockVWS() as mock:
76-
database = VuforiaDatabase()
77-
mock.add_database(database=database)
78-
vws_client = VWS(
79-
server_access_key=database.server_access_key,
80-
server_secret_key=database.server_secret_key,
81-
)
82-
cloud_reco_client = CloudRecoService(
83-
client_access_key=database.client_access_key,
84-
client_secret_key=database.client_secret_key,
85-
)
86125
87-
image = pathlib.Path('high_quality_image.jpg')
88-
with image.open(mode='rb') as my_image_file:
89-
target_id = vws_client.add_target(
90-
name="example_image_name",
91-
width=1,
92-
image=my_image_file,
93-
application_metadata=None,
94-
active_flag=True,
95-
)
126+
test_add_target()
96127
97128
There are some differences between the mock and the real Vuforia.
98129
See https://vws-python-mock.readthedocs.io/en/latest/differences-to-vws.html for details.

0 commit comments

Comments
 (0)