Skip to content

Commit 45690f6

Browse files
committed
✨ allow setting base URL from env
1 parent 413e470 commit 45690f6

File tree

4 files changed

+30
-11
lines changed

4 files changed

+30
-11
lines changed

mindee/endpoints.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
from mindee.logger import logger
88
from mindee.versions import __version__, get_platform, python_version
99

10-
MINDEE_API_URL = "https://api.mindee.net/v1"
10+
MINDEE_BASE_URL = "https://api.mindee.net/v1"
11+
MINDEE_BASE_URL_NAME = "MINDEE_BASE_URL"
1112
MINDEE_API_KEY_NAME = "MINDEE_API_KEY"
1213

1314
PLATFORM = get_platform()
@@ -26,6 +27,7 @@ class Endpoint:
2627
version: str
2728
api_key: str = ""
2829
timeout: int = DEFAULT_TIMEOUT
30+
_mindee_url: str = MINDEE_BASE_URL
2931
_url_root: str
3032

3133
def __init__(
@@ -49,9 +51,10 @@ def __init__(
4951
self.api_key = api_key
5052
else:
5153
self.set_api_key_from_env()
54+
self.set_base_url_from_env()
5255

5356
self._url_root = (
54-
f"{MINDEE_API_URL}/products/{self.owner}/{self.url_name}/v{self.version}"
57+
f"{self._mindee_url}/products/{self.owner}/{self.url_name}/v{self.version}"
5558
)
5659

5760
@property
@@ -62,12 +65,19 @@ def base_headers(self) -> Dict[str, str]:
6265
"User-Agent": USER_AGENT,
6366
}
6467

68+
def set_base_url_from_env(self) -> None:
69+
"""Set the base URL from an environment variable, if present."""
70+
env_val = os.getenv(MINDEE_BASE_URL_NAME, "")
71+
if env_val:
72+
self._mindee_url = env_val
73+
logger.debug("Base URL set from environment")
74+
6575
def set_api_key_from_env(self) -> None:
6676
"""Set the endpoint's API key from an environment variable, if present."""
67-
env_key = os.getenv(MINDEE_API_KEY_NAME, "")
68-
if env_key:
69-
self.api_key = env_key
70-
logger.debug("Set API key from environment")
77+
env_val = os.getenv(MINDEE_API_KEY_NAME, "")
78+
if env_val:
79+
self.api_key = env_val
80+
logger.debug("API key set from environment")
7181

7282
def predict_req_post(
7383
self,

mindee/input/sources.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,15 @@ def process_pdf(
8787
pages_count = self.count_doc_pages()
8888
if on_min_pages > pages_count:
8989
return
90+
all_pages = list(range(pages_count))
9091
if behavior == KEEP_ONLY:
91-
pages_to_keep = set(page_indexes)
92+
pages_to_keep = set()
93+
for page_n in page_indexes:
94+
try:
95+
pages_to_keep.add(all_pages[page_n])
96+
except IndexError:
97+
logger.warning("Page index not in source document: %s", page_n)
9298
elif behavior == REMOVE:
93-
all_pages = list(range(pages_count))
9499
pages_to_remove = set()
95100
for page_n in page_indexes:
96101
try:

tests/data

Submodule data updated from 7b63dea to e04c650

tests/test_inputs.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ def test_pdf_keep_5_first_pages():
7474
def test_pdf_keep_invalid_pages():
7575
input_obj = PathInput(f"{PDF_DATA_DIR}/multipage.pdf")
7676
assert input_obj.is_pdf() is True
77-
input_obj.process_pdf(behavior=KEEP_ONLY, on_min_pages=2, page_indexes=[16, 17])
78-
assert input_obj.count_doc_pages() == 12
77+
input_obj.process_pdf(behavior=KEEP_ONLY, on_min_pages=2, page_indexes=[0, 1, 17])
78+
assert input_obj.count_doc_pages() == 2
7979

8080

8181
def test_pdf_remove_5_last_pages():
@@ -104,8 +104,12 @@ def test_pdf_remove_invalid_pages():
104104
def test_pdf_keep_no_pages():
105105
input_obj = PathInput(f"{PDF_DATA_DIR}/multipage.pdf")
106106
assert input_obj.is_pdf() is True
107+
# empty page indexes
107108
with pytest.raises(RuntimeError):
108109
input_obj.process_pdf(behavior=KEEP_ONLY, on_min_pages=2, page_indexes=[])
110+
# all invalid pages
111+
with pytest.raises(RuntimeError):
112+
input_obj.process_pdf(behavior=KEEP_ONLY, on_min_pages=2, page_indexes=[16, 17])
109113

110114

111115
def test_pdf_remove_all_pages():

0 commit comments

Comments
 (0)