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.
Files changed (27) hide show
  1. {nosible-0.3.11 → nosible-0.3.12}/LICENSE +1 -1
  2. {nosible-0.3.11/src/nosible.egg-info → nosible-0.3.12}/PKG-INFO +17 -16
  3. {nosible-0.3.11 → nosible-0.3.12}/README.md +6 -6
  4. {nosible-0.3.11 → nosible-0.3.12}/pyproject.toml +12 -11
  5. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/nosible_client.py +23 -2
  6. {nosible-0.3.11 → nosible-0.3.12/src/nosible.egg-info}/PKG-INFO +17 -16
  7. nosible-0.3.12/src/nosible.egg-info/requires.txt +10 -0
  8. nosible-0.3.11/src/nosible.egg-info/requires.txt +0 -9
  9. {nosible-0.3.11 → nosible-0.3.12}/setup.cfg +0 -0
  10. {nosible-0.3.11 → nosible-0.3.12}/setup.py +0 -0
  11. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/__init__.py +0 -0
  12. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/result.py +0 -0
  13. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/result_set.py +0 -0
  14. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/search.py +0 -0
  15. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/search_set.py +0 -0
  16. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/snippet.py +0 -0
  17. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/snippet_set.py +0 -0
  18. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/classes/web_page.py +0 -0
  19. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/utils/json_tools.py +0 -0
  20. {nosible-0.3.11 → nosible-0.3.12}/src/nosible/utils/rate_limiter.py +0 -0
  21. {nosible-0.3.11 → nosible-0.3.12}/src/nosible.egg-info/SOURCES.txt +0 -0
  22. {nosible-0.3.11 → nosible-0.3.12}/src/nosible.egg-info/dependency_links.txt +0 -0
  23. {nosible-0.3.11 → nosible-0.3.12}/src/nosible.egg-info/top_level.txt +0 -0
  24. {nosible-0.3.11 → nosible-0.3.12}/tests/test_01_nosible.py +0 -0
  25. {nosible-0.3.11 → nosible-0.3.12}/tests/test_02_results.py +0 -0
  26. {nosible-0.3.11 → nosible-0.3.12}/tests/test_03_search_searchset.py +0 -0
  27. {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) 2025 Stuart Reid, Matthew Dicks, Richard Taylor, Gareth Warburton
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.11
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: polars
31
- Requires-Dist: duckdb
32
- Requires-Dist: openai
33
- Requires-Dist: tantivy
34
- Requires-Dist: pyrate-limiter<4
35
- Requires-Dist: tenacity
36
- Requires-Dist: cryptography
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.AI](https://www.nosible.ai/) and grab your free API key.
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="basic|abcd1234..."
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="basic|abcd1234..."
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="basic|abcd1234...",
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"] = "basic|abcd1234..."
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
- © 2025 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
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.AI](https://www.nosible.ai/) and grab your free API key.
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="basic|abcd1234..."
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="basic|abcd1234..."
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="basic|abcd1234...",
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"] = "basic|abcd1234..."
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
- © 2025 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
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.11"
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
- "polars",
16
- "duckdb",
17
- "openai",
18
- "tantivy",
19
- "pyrate-limiter<4",
20
- "tenacity",
21
- "cryptography",
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
- TODO
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.11
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: polars
31
- Requires-Dist: duckdb
32
- Requires-Dist: openai
33
- Requires-Dist: tantivy
34
- Requires-Dist: pyrate-limiter<4
35
- Requires-Dist: tenacity
36
- Requires-Dist: cryptography
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.AI](https://www.nosible.ai/) and grab your free API key.
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="basic|abcd1234..."
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="basic|abcd1234..."
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="basic|abcd1234...",
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"] = "basic|abcd1234..."
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
- © 2025 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
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
@@ -0,0 +1,10 @@
1
+ httpx<0.28.0,>=0.25.0
2
+ openai>=1.3.0
3
+ tenacity>=8.2.0
4
+ pyrate-limiter<4,>=3.1.0
5
+ cryptography>=41.0.0
6
+ polars>=0.20.0
7
+ duckdb>=0.9.2
8
+ pyarrow>=14.0.0
9
+ pandas>=2.0.0
10
+ tantivy>=0.21.0
@@ -1,9 +0,0 @@
1
- polars
2
- duckdb
3
- openai
4
- tantivy
5
- pyrate-limiter<4
6
- tenacity
7
- cryptography
8
- pyarrow
9
- pandas
File without changes
File without changes