nosible 0.3.11__tar.gz → 0.3.12__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.
- {nosible-0.3.11 → nosible-0.3.12}/LICENSE +1 -1
- {nosible-0.3.11/src/nosible.egg-info → nosible-0.3.12}/PKG-INFO +17 -16
- {nosible-0.3.11 → nosible-0.3.12}/README.md +6 -6
- {nosible-0.3.11 → nosible-0.3.12}/pyproject.toml +12 -11
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/nosible_client.py +23 -2
- {nosible-0.3.11 → nosible-0.3.12/src/nosible.egg-info}/PKG-INFO +17 -16
- nosible-0.3.12/src/nosible.egg-info/requires.txt +10 -0
- nosible-0.3.11/src/nosible.egg-info/requires.txt +0 -9
- {nosible-0.3.11 → nosible-0.3.12}/setup.cfg +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/setup.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/__init__.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/result.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/result_set.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/search.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/search_set.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/snippet.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/snippet_set.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/web_page.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/utils/json_tools.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible/utils/rate_limiter.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible.egg-info/SOURCES.txt +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible.egg-info/dependency_links.txt +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/src/nosible.egg-info/top_level.txt +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/tests/test_01_nosible.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/tests/test_02_results.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/tests/test_03_search_searchset.py +0 -0
- {nosible-0.3.11 → nosible-0.3.12}/tests/test_04_snippets.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2026 Stuart Reid, Matthew Dicks, Richard Taylor, Gareth Warburton
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nosible
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.12
|
|
4
4
|
Summary: Python client for the NOSIBLE Search API
|
|
5
5
|
Home-page: https://github.com/NosibleAI/nosible-py
|
|
6
6
|
Author: Stuart Reid, Matthew Dicks, Richard Taylor, Gareth Warburton
|
|
@@ -27,15 +27,16 @@ Classifier: Operating System :: OS Independent
|
|
|
27
27
|
Requires-Python: >=3.9
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
29
|
License-File: LICENSE
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist: pyarrow
|
|
38
|
-
Requires-Dist: pandas
|
|
30
|
+
Requires-Dist: httpx<0.28.0,>=0.25.0
|
|
31
|
+
Requires-Dist: openai>=1.3.0
|
|
32
|
+
Requires-Dist: tenacity>=8.2.0
|
|
33
|
+
Requires-Dist: pyrate-limiter<4,>=3.1.0
|
|
34
|
+
Requires-Dist: cryptography>=41.0.0
|
|
35
|
+
Requires-Dist: polars>=0.20.0
|
|
36
|
+
Requires-Dist: duckdb>=0.9.2
|
|
37
|
+
Requires-Dist: pyarrow>=14.0.0
|
|
38
|
+
Requires-Dist: pandas>=2.0.0
|
|
39
|
+
Requires-Dist: tantivy>=0.21.0
|
|
39
40
|
Dynamic: author
|
|
40
41
|
Dynamic: home-page
|
|
41
42
|
Dynamic: license-file
|
|
@@ -91,19 +92,19 @@ uv pip install nosible
|
|
|
91
92
|
|
|
92
93
|
### 🔑 Authentication
|
|
93
94
|
|
|
94
|
-
1. Sign in to [NOSIBLE.
|
|
95
|
+
1. Sign in to [NOSIBLE.COM](https://nosible.com/) and grab your free API key.
|
|
95
96
|
2. Set it as an environment variable or pass directly:
|
|
96
97
|
|
|
97
98
|
On Windows
|
|
98
99
|
|
|
99
100
|
```powershell
|
|
100
|
-
$Env:NOSIBLE_API_KEY="
|
|
101
|
+
$Env:NOSIBLE_API_KEY="nos_sk_..."
|
|
101
102
|
$Env:LLM_API_KEY="sk-..." # for query expansions (optional)
|
|
102
103
|
```
|
|
103
104
|
|
|
104
105
|
On Linux
|
|
105
106
|
```bash
|
|
106
|
-
export NOSIBLE_API_KEY="
|
|
107
|
+
export NOSIBLE_API_KEY="nos_sk_..."
|
|
107
108
|
export LLM_API_KEY="sk-..." # for query expansions (optional)
|
|
108
109
|
```
|
|
109
110
|
|
|
@@ -115,7 +116,7 @@ Or in code:
|
|
|
115
116
|
from nosible import Nosible
|
|
116
117
|
|
|
117
118
|
client = Nosible(
|
|
118
|
-
nosible_api_key="
|
|
119
|
+
nosible_api_key="nos_sk_...",
|
|
119
120
|
llm_api_key="sk-...",
|
|
120
121
|
)
|
|
121
122
|
```
|
|
@@ -126,7 +127,7 @@ client = Nosible(
|
|
|
126
127
|
from nosible import Nosible
|
|
127
128
|
import os
|
|
128
129
|
|
|
129
|
-
os.environ["NOSIBLE_API_KEY"] = "
|
|
130
|
+
os.environ["NOSIBLE_API_KEY"] = "nos_sk_..."
|
|
130
131
|
os.environ["LLM_API_KEY"] = "sk-..."
|
|
131
132
|
```
|
|
132
133
|
|
|
@@ -177,7 +178,7 @@ You can find online endpoints to the NOSIBLE Search API Swagger Docs
|
|
|
177
178
|
|
|
178
179
|
---
|
|
179
180
|
|
|
180
|
-
©
|
|
181
|
+
© 2026 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
|
|
181
182
|
|
|
182
183
|
|
|
183
184
|
[nosible-badge]: https://img.shields.io/static/v1?label=Visit&message=nosible.ai&\style=flat&logoUri=https://raw.githubusercontent.com/NosibleAI/nosible-py/main/docs/_static/favicon.png&logoWidth=20
|
|
@@ -48,19 +48,19 @@ uv pip install nosible
|
|
|
48
48
|
|
|
49
49
|
### 🔑 Authentication
|
|
50
50
|
|
|
51
|
-
1. Sign in to [NOSIBLE.
|
|
51
|
+
1. Sign in to [NOSIBLE.COM](https://nosible.com/) and grab your free API key.
|
|
52
52
|
2. Set it as an environment variable or pass directly:
|
|
53
53
|
|
|
54
54
|
On Windows
|
|
55
55
|
|
|
56
56
|
```powershell
|
|
57
|
-
$Env:NOSIBLE_API_KEY="
|
|
57
|
+
$Env:NOSIBLE_API_KEY="nos_sk_..."
|
|
58
58
|
$Env:LLM_API_KEY="sk-..." # for query expansions (optional)
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
On Linux
|
|
62
62
|
```bash
|
|
63
|
-
export NOSIBLE_API_KEY="
|
|
63
|
+
export NOSIBLE_API_KEY="nos_sk_..."
|
|
64
64
|
export LLM_API_KEY="sk-..." # for query expansions (optional)
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -72,7 +72,7 @@ Or in code:
|
|
|
72
72
|
from nosible import Nosible
|
|
73
73
|
|
|
74
74
|
client = Nosible(
|
|
75
|
-
nosible_api_key="
|
|
75
|
+
nosible_api_key="nos_sk_...",
|
|
76
76
|
llm_api_key="sk-...",
|
|
77
77
|
)
|
|
78
78
|
```
|
|
@@ -83,7 +83,7 @@ client = Nosible(
|
|
|
83
83
|
from nosible import Nosible
|
|
84
84
|
import os
|
|
85
85
|
|
|
86
|
-
os.environ["NOSIBLE_API_KEY"] = "
|
|
86
|
+
os.environ["NOSIBLE_API_KEY"] = "nos_sk_..."
|
|
87
87
|
os.environ["LLM_API_KEY"] = "sk-..."
|
|
88
88
|
```
|
|
89
89
|
|
|
@@ -134,7 +134,7 @@ You can find online endpoints to the NOSIBLE Search API Swagger Docs
|
|
|
134
134
|
|
|
135
135
|
---
|
|
136
136
|
|
|
137
|
-
©
|
|
137
|
+
© 2026 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
[nosible-badge]: https://img.shields.io/static/v1?label=Visit&message=nosible.ai&\style=flat&logoUri=https://raw.githubusercontent.com/NosibleAI/nosible-py/main/docs/_static/favicon.png&logoWidth=20
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "nosible"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.12"
|
|
4
4
|
description = "Python client for the NOSIBLE Search API"
|
|
5
5
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
6
6
|
requires-python = ">=3.9"
|
|
@@ -12,15 +12,16 @@ authors = [
|
|
|
12
12
|
]
|
|
13
13
|
|
|
14
14
|
dependencies = [
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"pyarrow",
|
|
23
|
-
"pandas",
|
|
15
|
+
"httpx>=0.25.0,<0.28.0",
|
|
16
|
+
"openai>=1.3.0",
|
|
17
|
+
"tenacity>=8.2.0",
|
|
18
|
+
"pyrate-limiter>=3.1.0,<4",
|
|
19
|
+
"cryptography>=41.0.0",
|
|
20
|
+
"polars>=0.20.0",
|
|
21
|
+
"duckdb>=0.9.2",
|
|
22
|
+
"pyarrow>=14.0.0",
|
|
23
|
+
"pandas>=2.0.0",
|
|
24
|
+
"tantivy>=0.21.0",
|
|
24
25
|
]
|
|
25
26
|
|
|
26
27
|
license = "MIT"
|
|
@@ -61,5 +62,5 @@ dev-dependencies = [
|
|
|
61
62
|
"pytest-doctestplus",
|
|
62
63
|
"pytest-xdist",
|
|
63
64
|
"urllib3==1.26.15",
|
|
64
|
-
"hishel[async]",
|
|
65
|
+
"hishel[async]>=1.1.0",
|
|
65
66
|
]
|
|
@@ -1725,7 +1725,28 @@ class Nosible:
|
|
|
1725
1725
|
|
|
1726
1726
|
def _get_limits(self) -> dict[str, list[tuple[int, float]]]:
|
|
1727
1727
|
"""
|
|
1728
|
-
|
|
1728
|
+
Fetch and parse the current API rate limits from the Nosible service.
|
|
1729
|
+
|
|
1730
|
+
Returns
|
|
1731
|
+
-------
|
|
1732
|
+
dict[str, list[tuple[int, float]]]
|
|
1733
|
+
A dictionary mapping query types (e.g., 'fast', 'slow', 'visit') to a list
|
|
1734
|
+
of limit buckets. Each bucket is a tuple containing:
|
|
1735
|
+
- limit (int): The maximum number of requests allowed.
|
|
1736
|
+
- duration_seconds (float): The time window for the limit.
|
|
1737
|
+
|
|
1738
|
+
Raises
|
|
1739
|
+
------
|
|
1740
|
+
ValueError
|
|
1741
|
+
If the API key is invalid (401).
|
|
1742
|
+
ValueError
|
|
1743
|
+
If the rate limit is hit (429).
|
|
1744
|
+
ValueError
|
|
1745
|
+
If there are too many concurrent searches (409).
|
|
1746
|
+
ValueError
|
|
1747
|
+
If the service is restarting (502) or overloaded (504).
|
|
1748
|
+
ValueError
|
|
1749
|
+
If the response JSON is invalid or missing required fields.
|
|
1729
1750
|
"""
|
|
1730
1751
|
url = "https://www.nosible.ai/search/v2/limits"
|
|
1731
1752
|
resp = self._session.get(
|
|
@@ -2122,7 +2143,7 @@ class Nosible:
|
|
|
2122
2143
|
"certain",
|
|
2123
2144
|
"netloc",
|
|
2124
2145
|
"language",
|
|
2125
|
-
"companies"
|
|
2146
|
+
"companies",
|
|
2126
2147
|
"doc",
|
|
2127
2148
|
]
|
|
2128
2149
|
import polars as pl # Lazy import
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nosible
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.12
|
|
4
4
|
Summary: Python client for the NOSIBLE Search API
|
|
5
5
|
Home-page: https://github.com/NosibleAI/nosible-py
|
|
6
6
|
Author: Stuart Reid, Matthew Dicks, Richard Taylor, Gareth Warburton
|
|
@@ -27,15 +27,16 @@ Classifier: Operating System :: OS Independent
|
|
|
27
27
|
Requires-Python: >=3.9
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
29
|
License-File: LICENSE
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist: pyarrow
|
|
38
|
-
Requires-Dist: pandas
|
|
30
|
+
Requires-Dist: httpx<0.28.0,>=0.25.0
|
|
31
|
+
Requires-Dist: openai>=1.3.0
|
|
32
|
+
Requires-Dist: tenacity>=8.2.0
|
|
33
|
+
Requires-Dist: pyrate-limiter<4,>=3.1.0
|
|
34
|
+
Requires-Dist: cryptography>=41.0.0
|
|
35
|
+
Requires-Dist: polars>=0.20.0
|
|
36
|
+
Requires-Dist: duckdb>=0.9.2
|
|
37
|
+
Requires-Dist: pyarrow>=14.0.0
|
|
38
|
+
Requires-Dist: pandas>=2.0.0
|
|
39
|
+
Requires-Dist: tantivy>=0.21.0
|
|
39
40
|
Dynamic: author
|
|
40
41
|
Dynamic: home-page
|
|
41
42
|
Dynamic: license-file
|
|
@@ -91,19 +92,19 @@ uv pip install nosible
|
|
|
91
92
|
|
|
92
93
|
### 🔑 Authentication
|
|
93
94
|
|
|
94
|
-
1. Sign in to [NOSIBLE.
|
|
95
|
+
1. Sign in to [NOSIBLE.COM](https://nosible.com/) and grab your free API key.
|
|
95
96
|
2. Set it as an environment variable or pass directly:
|
|
96
97
|
|
|
97
98
|
On Windows
|
|
98
99
|
|
|
99
100
|
```powershell
|
|
100
|
-
$Env:NOSIBLE_API_KEY="
|
|
101
|
+
$Env:NOSIBLE_API_KEY="nos_sk_..."
|
|
101
102
|
$Env:LLM_API_KEY="sk-..." # for query expansions (optional)
|
|
102
103
|
```
|
|
103
104
|
|
|
104
105
|
On Linux
|
|
105
106
|
```bash
|
|
106
|
-
export NOSIBLE_API_KEY="
|
|
107
|
+
export NOSIBLE_API_KEY="nos_sk_..."
|
|
107
108
|
export LLM_API_KEY="sk-..." # for query expansions (optional)
|
|
108
109
|
```
|
|
109
110
|
|
|
@@ -115,7 +116,7 @@ Or in code:
|
|
|
115
116
|
from nosible import Nosible
|
|
116
117
|
|
|
117
118
|
client = Nosible(
|
|
118
|
-
nosible_api_key="
|
|
119
|
+
nosible_api_key="nos_sk_...",
|
|
119
120
|
llm_api_key="sk-...",
|
|
120
121
|
)
|
|
121
122
|
```
|
|
@@ -126,7 +127,7 @@ client = Nosible(
|
|
|
126
127
|
from nosible import Nosible
|
|
127
128
|
import os
|
|
128
129
|
|
|
129
|
-
os.environ["NOSIBLE_API_KEY"] = "
|
|
130
|
+
os.environ["NOSIBLE_API_KEY"] = "nos_sk_..."
|
|
130
131
|
os.environ["LLM_API_KEY"] = "sk-..."
|
|
131
132
|
```
|
|
132
133
|
|
|
@@ -177,7 +178,7 @@ You can find online endpoints to the NOSIBLE Search API Swagger Docs
|
|
|
177
178
|
|
|
178
179
|
---
|
|
179
180
|
|
|
180
|
-
©
|
|
181
|
+
© 2026 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
|
|
181
182
|
|
|
182
183
|
|
|
183
184
|
[nosible-badge]: https://img.shields.io/static/v1?label=Visit&message=nosible.ai&\style=flat&logoUri=https://raw.githubusercontent.com/NosibleAI/nosible-py/main/docs/_static/favicon.png&logoWidth=20
|
|
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
|