marqetive-lib 0.1.0__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 (43) hide show
  1. marqetive_lib-0.1.0/PKG-INFO +261 -0
  2. marqetive_lib-0.1.0/README.md +226 -0
  3. marqetive_lib-0.1.0/pyproject.toml +177 -0
  4. marqetive_lib-0.1.0/src/marqetive/__init__.py +113 -0
  5. marqetive_lib-0.1.0/src/marqetive/core/__init__.py +5 -0
  6. marqetive_lib-0.1.0/src/marqetive/core/account_factory.py +212 -0
  7. marqetive_lib-0.1.0/src/marqetive/core/base_manager.py +303 -0
  8. marqetive_lib-0.1.0/src/marqetive/core/client.py +108 -0
  9. marqetive_lib-0.1.0/src/marqetive/core/progress.py +291 -0
  10. marqetive_lib-0.1.0/src/marqetive/core/registry.py +257 -0
  11. marqetive_lib-0.1.0/src/marqetive/platforms/__init__.py +55 -0
  12. marqetive_lib-0.1.0/src/marqetive/platforms/base.py +390 -0
  13. marqetive_lib-0.1.0/src/marqetive/platforms/exceptions.py +238 -0
  14. marqetive_lib-0.1.0/src/marqetive/platforms/instagram/__init__.py +7 -0
  15. marqetive_lib-0.1.0/src/marqetive/platforms/instagram/client.py +786 -0
  16. marqetive_lib-0.1.0/src/marqetive/platforms/instagram/exceptions.py +311 -0
  17. marqetive_lib-0.1.0/src/marqetive/platforms/instagram/factory.py +106 -0
  18. marqetive_lib-0.1.0/src/marqetive/platforms/instagram/manager.py +112 -0
  19. marqetive_lib-0.1.0/src/marqetive/platforms/instagram/media.py +669 -0
  20. marqetive_lib-0.1.0/src/marqetive/platforms/linkedin/__init__.py +7 -0
  21. marqetive_lib-0.1.0/src/marqetive/platforms/linkedin/client.py +733 -0
  22. marqetive_lib-0.1.0/src/marqetive/platforms/linkedin/exceptions.py +335 -0
  23. marqetive_lib-0.1.0/src/marqetive/platforms/linkedin/factory.py +130 -0
  24. marqetive_lib-0.1.0/src/marqetive/platforms/linkedin/manager.py +119 -0
  25. marqetive_lib-0.1.0/src/marqetive/platforms/linkedin/media.py +549 -0
  26. marqetive_lib-0.1.0/src/marqetive/platforms/models.py +345 -0
  27. marqetive_lib-0.1.0/src/marqetive/platforms/tiktok/__init__.py +0 -0
  28. marqetive_lib-0.1.0/src/marqetive/platforms/twitter/__init__.py +7 -0
  29. marqetive_lib-0.1.0/src/marqetive/platforms/twitter/client.py +647 -0
  30. marqetive_lib-0.1.0/src/marqetive/platforms/twitter/exceptions.py +311 -0
  31. marqetive_lib-0.1.0/src/marqetive/platforms/twitter/factory.py +151 -0
  32. marqetive_lib-0.1.0/src/marqetive/platforms/twitter/manager.py +121 -0
  33. marqetive_lib-0.1.0/src/marqetive/platforms/twitter/media.py +779 -0
  34. marqetive_lib-0.1.0/src/marqetive/platforms/twitter/threads.py +442 -0
  35. marqetive_lib-0.1.0/src/marqetive/py.typed +0 -0
  36. marqetive_lib-0.1.0/src/marqetive/registry_init.py +66 -0
  37. marqetive_lib-0.1.0/src/marqetive/utils/__init__.py +45 -0
  38. marqetive_lib-0.1.0/src/marqetive/utils/file_handlers.py +438 -0
  39. marqetive_lib-0.1.0/src/marqetive/utils/helpers.py +99 -0
  40. marqetive_lib-0.1.0/src/marqetive/utils/media.py +399 -0
  41. marqetive_lib-0.1.0/src/marqetive/utils/oauth.py +265 -0
  42. marqetive_lib-0.1.0/src/marqetive/utils/retry.py +239 -0
  43. marqetive_lib-0.1.0/src/marqetive/utils/token_validator.py +240 -0
@@ -0,0 +1,261 @@
1
+ Metadata-Version: 2.4
2
+ Name: marqetive-lib
3
+ Version: 0.1.0
4
+ Summary: Modern Python utilities for web APIs
5
+ Keywords: api,utilities,web,http,marqetive
6
+ Requires-Python: >=3.12
7
+ Classifier: Development Status :: 3 - Alpha
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Topic :: Internet :: WWW/HTTP
14
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
15
+ Provides-Extra: dev
16
+ Provides-Extra: docs
17
+ Requires-Dist: aiofiles (>=24.0.0)
18
+ Requires-Dist: httpx (>=0.28.1)
19
+ Requires-Dist: mkdocs (>=1.5.0) ; extra == "docs"
20
+ Requires-Dist: mkdocs-material (>=9.5.0) ; extra == "docs"
21
+ Requires-Dist: mkdocstrings[python] (>=0.30.1) ; extra == "docs"
22
+ Requires-Dist: pydantic (>=2.0.0)
23
+ Requires-Dist: pyright (>=1.1.0) ; extra == "dev"
24
+ Requires-Dist: pytest (>=9.0.0) ; extra == "dev"
25
+ Requires-Dist: pytest-asyncio (>=1.3.0) ; extra == "dev"
26
+ Requires-Dist: pytest-cov (>=7.0.0) ; extra == "dev"
27
+ Requires-Dist: ruff (>=0.14.4) ; extra == "dev"
28
+ Requires-Dist: tweepy (>=4.16.0,<5.0.0)
29
+ Project-URL: Documentation, https://marqetive-lib.readthedocs.io
30
+ Project-URL: Homepage, https://github.com/yourusername/marqetive-lib
31
+ Project-URL: Issues, https://github.com/yourusername/marqetive-lib/issues
32
+ Project-URL: Repository, https://github.com/yourusername/marqetive-lib
33
+ Description-Content-Type: text/markdown
34
+
35
+ # MarqetiveLib
36
+
37
+ [![CI](https://github.com/yourusername/marqetive-lib/workflows/CI/badge.svg)](https://github.com/yourusername/marqetive-lib/actions)
38
+ [![codecov](https://codecov.io/gh/yourusername/marqetive-lib/branch/main/graph/badge.svg)](https://codecov.io/gh/yourusername/marqetive-lib)
39
+ [![PyPI version](https://badge.fury.io/py/marqetive-lib.svg)](https://badge.fury.io/py/marqetive-lib)
40
+ [![Python versions](https://img.shields.io/pypi/pyversions/marqetive-lib.svg)](https://pypi.org/project/marqetive-lib/)
41
+ [![License](https://img.shields.io/github/license/yourusername/marqetive-lib.svg)](https://github.com/yourusername/marqetive-lib/blob/main/LICENSE)
42
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://marqetive-lib.readthedocs.io)
43
+
44
+ Modern Python utilities for web APIs - Simple, type-safe, and async-ready.
45
+
46
+ ## Features
47
+
48
+ - **๐Ÿš€ Fast and Lightweight**: Built on httpx with minimal dependencies
49
+ - **๐Ÿ”’ Type-Safe**: Full type hints and Pyright compliance for better IDE support
50
+ - **๐Ÿ“ฆ Zero Learning Curve**: Intuitive API design that feels natural
51
+ - **๐Ÿงช Well Tested**: Comprehensive test coverage (>90%)
52
+ - **๐Ÿ“š Excellent Documentation**: Clear examples and detailed API reference
53
+ - **๐Ÿ”„ Async/Await Support**: Built for modern async Python applications
54
+ - **โœจ Developer Friendly**: Great error messages and helpful utilities
55
+
56
+ ## Installation
57
+
58
+ ```bash
59
+ pip install marqetive-lib
60
+ ```
61
+
62
+ Or with Poetry:
63
+
64
+ ```bash
65
+ poetry add marqetive-lib
66
+ ```
67
+
68
+ ## Quick Start
69
+
70
+ ```python
71
+ import asyncio
72
+ from marqetive_lib import APIClient
73
+
74
+ async def main():
75
+ async with APIClient(base_url="https://api.example.com") as client:
76
+ # Make a GET request
77
+ response = await client.get("/users/1")
78
+ print(f"User: {response.data['name']}")
79
+
80
+ # Make a POST request
81
+ new_user = {"name": "John Doe", "email": "john@example.com"}
82
+ response = await client.post("/users", data=new_user)
83
+ print(f"Created user ID: {response.data['id']}")
84
+
85
+ asyncio.run(main())
86
+ ```
87
+
88
+ ## Core Features
89
+
90
+ ### Simple HTTP Client
91
+
92
+ ```python
93
+ from marqetive_lib import APIClient
94
+
95
+ async with APIClient(base_url="https://api.example.com") as client:
96
+ # GET request with query parameters
97
+ response = await client.get("/search", params={"q": "python"})
98
+
99
+ # POST request with JSON body
100
+ response = await client.post("/users", data={"name": "Alice"})
101
+
102
+ # Access response details
103
+ print(response.status_code) # 200
104
+ print(response.data) # Parsed JSON response
105
+ print(response.headers) # Response headers
106
+ ```
107
+
108
+ ### Utility Functions
109
+
110
+ ```python
111
+ from marqetive_lib.utils import (
112
+ format_response,
113
+ parse_query_params,
114
+ build_query_string,
115
+ merge_headers
116
+ )
117
+
118
+ # Format JSON responses beautifully
119
+ data = {"users": [{"id": 1, "name": "Alice"}]}
120
+ print(format_response(data, pretty=True, indent=2))
121
+
122
+ # Parse URL query parameters
123
+ params = parse_query_params("https://api.com/search?q=python&page=1")
124
+ # {'q': ['python'], 'page': ['1']}
125
+
126
+ # Build query strings
127
+ query = build_query_string({"search": "api", "limit": 10})
128
+ # "search=api&limit=10"
129
+
130
+ # Merge HTTP headers
131
+ headers = merge_headers(
132
+ {"Content-Type": "application/json"},
133
+ {"Authorization": "Bearer token"}
134
+ )
135
+ ```
136
+
137
+ ### Type-Safe Responses
138
+
139
+ ```python
140
+ from marqetive_lib import APIClient
141
+ from pydantic import BaseModel
142
+
143
+ class User(BaseModel):
144
+ id: int
145
+ name: str
146
+ email: str
147
+
148
+ async with APIClient(base_url="https://api.example.com") as client:
149
+ response = await client.get("/users/1")
150
+ user = User(**response.data) # Automatic validation
151
+ print(user.name)
152
+ ```
153
+
154
+ ## Documentation
155
+
156
+ Full documentation is available at [marqetive-lib.readthedocs.io](https://marqetive-lib.readthedocs.io)
157
+
158
+ - [Getting Started Guide](https://marqetive-lib.readthedocs.io/getting-started/)
159
+ - [API Reference](https://marqetive-lib.readthedocs.io/api/core/)
160
+ - [Examples](https://marqetive-lib.readthedocs.io/examples/basic/)
161
+ - [Contributing Guide](https://marqetive-lib.readthedocs.io/contributing/)
162
+
163
+ ## Requirements
164
+
165
+ - Python 3.9+
166
+ - httpx >= 0.27.0
167
+ - pydantic >= 2.0.0
168
+
169
+ ## Development
170
+
171
+ ### Setup Development Environment
172
+
173
+ ```bash
174
+ # Clone the repository
175
+ git clone https://github.com/yourusername/marqetive-lib.git
176
+ cd marqetive-lib
177
+
178
+ # Install Poetry if you haven't already
179
+ curl -sSL https://install.python-poetry.org | python3 -
180
+
181
+ # Install dependencies
182
+ poetry install --with dev,docs
183
+
184
+ # Activate virtual environment
185
+ poetry shell
186
+ ```
187
+
188
+ ### Running Tests
189
+
190
+ ```bash
191
+ # Run tests
192
+ poetry run pytest
193
+
194
+ # Run tests with coverage
195
+ poetry run pytest --cov=src/marqetive_lib --cov-report=term-missing
196
+
197
+ # Run tests for specific Python versions
198
+ poetry run tox
199
+ ```
200
+
201
+ ### Code Quality
202
+
203
+ ```bash
204
+ # Lint code with Ruff
205
+ poetry run ruff check .
206
+
207
+ # Format code with Ruff
208
+ poetry run ruff format .
209
+
210
+ # Type check with Pyright
211
+ poetry run pyright src/
212
+ ```
213
+
214
+ ### Building Documentation
215
+
216
+ ```bash
217
+ # Serve documentation locally with live reload
218
+ poetry run mkdocs serve
219
+
220
+ # Build static documentation
221
+ poetry run mkdocs build
222
+ ```
223
+
224
+ ## Contributing
225
+
226
+ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on:
227
+
228
+ - Code of conduct
229
+ - Development workflow
230
+ - Code style guidelines
231
+ - Testing requirements
232
+ - Pull request process
233
+
234
+ ## Changelog
235
+
236
+ See [CHANGELOG.md](CHANGELOG.md) for a list of changes in each release.
237
+
238
+ ## License
239
+
240
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
241
+
242
+ ## Acknowledgments
243
+
244
+ - Built with [httpx](https://www.python-httpx.org/) for HTTP requests
245
+ - Uses [Pydantic](https://docs.pydantic.dev/) for data validation
246
+ - Tested with [pytest](https://pytest.org/)
247
+ - Documentation powered by [MkDocs Material](https://squidfunk.github.io/mkdocs-material/)
248
+
249
+ ## Support
250
+
251
+ - **Documentation**: [marqetive-lib.readthedocs.io](https://marqetive-lib.readthedocs.io)
252
+ - **Issues**: [GitHub Issues](https://github.com/yourusername/marqetive-lib/issues)
253
+ - **Discussions**: [GitHub Discussions](https://github.com/yourusername/marqetive-lib/discussions)
254
+
255
+ ## Links
256
+
257
+ - **PyPI**: [pypi.org/project/marqetive-lib](https://pypi.org/project/marqetive-lib/)
258
+ - **Source Code**: [github.com/yourusername/marqetive-lib](https://github.com/yourusername/marqetive-lib)
259
+ - **Documentation**: [marqetive-lib.readthedocs.io](https://marqetive-lib.readthedocs.io)
260
+ - **Changelog**: [CHANGELOG.md](CHANGELOG.md)
261
+
@@ -0,0 +1,226 @@
1
+ # MarqetiveLib
2
+
3
+ [![CI](https://github.com/yourusername/marqetive-lib/workflows/CI/badge.svg)](https://github.com/yourusername/marqetive-lib/actions)
4
+ [![codecov](https://codecov.io/gh/yourusername/marqetive-lib/branch/main/graph/badge.svg)](https://codecov.io/gh/yourusername/marqetive-lib)
5
+ [![PyPI version](https://badge.fury.io/py/marqetive-lib.svg)](https://badge.fury.io/py/marqetive-lib)
6
+ [![Python versions](https://img.shields.io/pypi/pyversions/marqetive-lib.svg)](https://pypi.org/project/marqetive-lib/)
7
+ [![License](https://img.shields.io/github/license/yourusername/marqetive-lib.svg)](https://github.com/yourusername/marqetive-lib/blob/main/LICENSE)
8
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://marqetive-lib.readthedocs.io)
9
+
10
+ Modern Python utilities for web APIs - Simple, type-safe, and async-ready.
11
+
12
+ ## Features
13
+
14
+ - **๐Ÿš€ Fast and Lightweight**: Built on httpx with minimal dependencies
15
+ - **๐Ÿ”’ Type-Safe**: Full type hints and Pyright compliance for better IDE support
16
+ - **๐Ÿ“ฆ Zero Learning Curve**: Intuitive API design that feels natural
17
+ - **๐Ÿงช Well Tested**: Comprehensive test coverage (>90%)
18
+ - **๐Ÿ“š Excellent Documentation**: Clear examples and detailed API reference
19
+ - **๐Ÿ”„ Async/Await Support**: Built for modern async Python applications
20
+ - **โœจ Developer Friendly**: Great error messages and helpful utilities
21
+
22
+ ## Installation
23
+
24
+ ```bash
25
+ pip install marqetive-lib
26
+ ```
27
+
28
+ Or with Poetry:
29
+
30
+ ```bash
31
+ poetry add marqetive-lib
32
+ ```
33
+
34
+ ## Quick Start
35
+
36
+ ```python
37
+ import asyncio
38
+ from marqetive_lib import APIClient
39
+
40
+ async def main():
41
+ async with APIClient(base_url="https://api.example.com") as client:
42
+ # Make a GET request
43
+ response = await client.get("/users/1")
44
+ print(f"User: {response.data['name']}")
45
+
46
+ # Make a POST request
47
+ new_user = {"name": "John Doe", "email": "john@example.com"}
48
+ response = await client.post("/users", data=new_user)
49
+ print(f"Created user ID: {response.data['id']}")
50
+
51
+ asyncio.run(main())
52
+ ```
53
+
54
+ ## Core Features
55
+
56
+ ### Simple HTTP Client
57
+
58
+ ```python
59
+ from marqetive_lib import APIClient
60
+
61
+ async with APIClient(base_url="https://api.example.com") as client:
62
+ # GET request with query parameters
63
+ response = await client.get("/search", params={"q": "python"})
64
+
65
+ # POST request with JSON body
66
+ response = await client.post("/users", data={"name": "Alice"})
67
+
68
+ # Access response details
69
+ print(response.status_code) # 200
70
+ print(response.data) # Parsed JSON response
71
+ print(response.headers) # Response headers
72
+ ```
73
+
74
+ ### Utility Functions
75
+
76
+ ```python
77
+ from marqetive_lib.utils import (
78
+ format_response,
79
+ parse_query_params,
80
+ build_query_string,
81
+ merge_headers
82
+ )
83
+
84
+ # Format JSON responses beautifully
85
+ data = {"users": [{"id": 1, "name": "Alice"}]}
86
+ print(format_response(data, pretty=True, indent=2))
87
+
88
+ # Parse URL query parameters
89
+ params = parse_query_params("https://api.com/search?q=python&page=1")
90
+ # {'q': ['python'], 'page': ['1']}
91
+
92
+ # Build query strings
93
+ query = build_query_string({"search": "api", "limit": 10})
94
+ # "search=api&limit=10"
95
+
96
+ # Merge HTTP headers
97
+ headers = merge_headers(
98
+ {"Content-Type": "application/json"},
99
+ {"Authorization": "Bearer token"}
100
+ )
101
+ ```
102
+
103
+ ### Type-Safe Responses
104
+
105
+ ```python
106
+ from marqetive_lib import APIClient
107
+ from pydantic import BaseModel
108
+
109
+ class User(BaseModel):
110
+ id: int
111
+ name: str
112
+ email: str
113
+
114
+ async with APIClient(base_url="https://api.example.com") as client:
115
+ response = await client.get("/users/1")
116
+ user = User(**response.data) # Automatic validation
117
+ print(user.name)
118
+ ```
119
+
120
+ ## Documentation
121
+
122
+ Full documentation is available at [marqetive-lib.readthedocs.io](https://marqetive-lib.readthedocs.io)
123
+
124
+ - [Getting Started Guide](https://marqetive-lib.readthedocs.io/getting-started/)
125
+ - [API Reference](https://marqetive-lib.readthedocs.io/api/core/)
126
+ - [Examples](https://marqetive-lib.readthedocs.io/examples/basic/)
127
+ - [Contributing Guide](https://marqetive-lib.readthedocs.io/contributing/)
128
+
129
+ ## Requirements
130
+
131
+ - Python 3.9+
132
+ - httpx >= 0.27.0
133
+ - pydantic >= 2.0.0
134
+
135
+ ## Development
136
+
137
+ ### Setup Development Environment
138
+
139
+ ```bash
140
+ # Clone the repository
141
+ git clone https://github.com/yourusername/marqetive-lib.git
142
+ cd marqetive-lib
143
+
144
+ # Install Poetry if you haven't already
145
+ curl -sSL https://install.python-poetry.org | python3 -
146
+
147
+ # Install dependencies
148
+ poetry install --with dev,docs
149
+
150
+ # Activate virtual environment
151
+ poetry shell
152
+ ```
153
+
154
+ ### Running Tests
155
+
156
+ ```bash
157
+ # Run tests
158
+ poetry run pytest
159
+
160
+ # Run tests with coverage
161
+ poetry run pytest --cov=src/marqetive_lib --cov-report=term-missing
162
+
163
+ # Run tests for specific Python versions
164
+ poetry run tox
165
+ ```
166
+
167
+ ### Code Quality
168
+
169
+ ```bash
170
+ # Lint code with Ruff
171
+ poetry run ruff check .
172
+
173
+ # Format code with Ruff
174
+ poetry run ruff format .
175
+
176
+ # Type check with Pyright
177
+ poetry run pyright src/
178
+ ```
179
+
180
+ ### Building Documentation
181
+
182
+ ```bash
183
+ # Serve documentation locally with live reload
184
+ poetry run mkdocs serve
185
+
186
+ # Build static documentation
187
+ poetry run mkdocs build
188
+ ```
189
+
190
+ ## Contributing
191
+
192
+ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on:
193
+
194
+ - Code of conduct
195
+ - Development workflow
196
+ - Code style guidelines
197
+ - Testing requirements
198
+ - Pull request process
199
+
200
+ ## Changelog
201
+
202
+ See [CHANGELOG.md](CHANGELOG.md) for a list of changes in each release.
203
+
204
+ ## License
205
+
206
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
207
+
208
+ ## Acknowledgments
209
+
210
+ - Built with [httpx](https://www.python-httpx.org/) for HTTP requests
211
+ - Uses [Pydantic](https://docs.pydantic.dev/) for data validation
212
+ - Tested with [pytest](https://pytest.org/)
213
+ - Documentation powered by [MkDocs Material](https://squidfunk.github.io/mkdocs-material/)
214
+
215
+ ## Support
216
+
217
+ - **Documentation**: [marqetive-lib.readthedocs.io](https://marqetive-lib.readthedocs.io)
218
+ - **Issues**: [GitHub Issues](https://github.com/yourusername/marqetive-lib/issues)
219
+ - **Discussions**: [GitHub Discussions](https://github.com/yourusername/marqetive-lib/discussions)
220
+
221
+ ## Links
222
+
223
+ - **PyPI**: [pypi.org/project/marqetive-lib](https://pypi.org/project/marqetive-lib/)
224
+ - **Source Code**: [github.com/yourusername/marqetive-lib](https://github.com/yourusername/marqetive-lib)
225
+ - **Documentation**: [marqetive-lib.readthedocs.io](https://marqetive-lib.readthedocs.io)
226
+ - **Changelog**: [CHANGELOG.md](CHANGELOG.md)
@@ -0,0 +1,177 @@
1
+ [build-system]
2
+ requires = ["poetry-core>=2.0.0"]
3
+ build-backend = "poetry.core.masonry.api"
4
+
5
+ [project]
6
+ name = "marqetive-lib"
7
+ version = "0.1.0"
8
+ description = "Modern Python utilities for web APIs"
9
+ readme = "README.md"
10
+ requires-python = ">=3.12"
11
+ keywords = ["api", "utilities", "web", "http", "marqetive"]
12
+ classifiers = [
13
+ "Development Status :: 3 - Alpha",
14
+ "Intended Audience :: Developers",
15
+ "License :: OSI Approved :: MIT License",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Programming Language :: Python :: 3.13",
19
+ "Topic :: Internet :: WWW/HTTP",
20
+ "Topic :: Software Development :: Libraries :: Python Modules",
21
+ ]
22
+ dependencies = [
23
+ "httpx>=0.28.1",
24
+ "pydantic>=2.0.0",
25
+ "tweepy (>=4.16.0,<5.0.0)",
26
+ "aiofiles>=24.0.0",
27
+ ]
28
+
29
+ [project.optional-dependencies]
30
+ dev = [
31
+ "pytest>=9.0.0",
32
+ "pytest-cov>=7.0.0",
33
+ "pytest-asyncio>=1.3.0",
34
+ "ruff>=0.14.4",
35
+ "pyright>=1.1.0",
36
+ ]
37
+ docs = [
38
+ "mkdocs>=1.5.0",
39
+ "mkdocs-material>=9.5.0",
40
+ "mkdocstrings[python]>=0.30.1",
41
+ ]
42
+
43
+ [project.urls]
44
+ Homepage = "https://github.com/yourusername/marqetive-lib"
45
+ Documentation = "https://marqetive-lib.readthedocs.io"
46
+ Repository = "https://github.com/yourusername/marqetive-lib"
47
+ Issues = "https://github.com/yourusername/marqetive-lib/issues"
48
+
49
+ [tool.poetry]
50
+ packages = [{ include = "marqetive", from = "src" }]
51
+
52
+ # Poetry-specific dependency management
53
+ [tool.poetry.dependencies]
54
+ python = "^3.12"
55
+ httpx = "^0.28.1"
56
+ pydantic = "^2.0.0"
57
+ tweepy = "^4.16.0"
58
+ aiofiles = "^24.0.0"
59
+
60
+ [tool.poetry.group.dev.dependencies]
61
+ pytest = "^9.0.0"
62
+ pytest-cov = "^7.0.0"
63
+ pytest-asyncio = "^1.3.0"
64
+ ruff = "^0.14.4"
65
+ pyright = "^1.1.0"
66
+ ipython = "^9.7.0"
67
+
68
+ [tool.poetry.group.docs.dependencies]
69
+ mkdocs = "^1.5.0"
70
+ mkdocs-material = "^9.5.0"
71
+ mkdocstrings = { extras = ["python"], version = "^0.30.1" }
72
+
73
+ # Ruff configuration
74
+ [tool.ruff]
75
+ # Target Python 3.12+
76
+ target-version = "py312"
77
+
78
+ # Line length to match Black's default
79
+ line-length = 88
80
+
81
+ # Directories to exclude
82
+ exclude = [".git", ".venv", "__pycache__", "build", "dist", "*.egg-info"]
83
+
84
+ [tool.ruff.lint]
85
+ # Enable rule sets
86
+ select = [
87
+ "E", # pycodestyle errors
88
+ "W", # pycodestyle warnings
89
+ "F", # pyflakes
90
+ "I", # isort
91
+ "B", # flake8-bugbear
92
+ "C4", # flake8-comprehensions
93
+ "UP", # pyupgrade
94
+ "ARG", # flake8-unused-arguments
95
+ "SIM", # flake8-simplify
96
+ ]
97
+
98
+ # Rules to ignore
99
+ ignore = [
100
+ "E501", # line too long (handled by formatter)
101
+ "B008", # do not perform function calls in argument defaults
102
+ ]
103
+
104
+ # Allow autofix for all enabled rules
105
+ fixable = ["ALL"]
106
+ unfixable = []
107
+
108
+ # Allow unused variables when underscore-prefixed
109
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
110
+
111
+ [tool.ruff.format]
112
+ # Use double quotes for strings
113
+ quote-style = "double"
114
+
115
+ # Indent with spaces
116
+ indent-style = "space"
117
+
118
+ # Respect magic trailing commas
119
+ skip-magic-trailing-comma = false
120
+
121
+ # Auto-detect line endings
122
+ line-ending = "auto"
123
+
124
+ [tool.ruff.lint.isort]
125
+ known-first-party = ["marqetive"]
126
+
127
+ # Pyright configuration
128
+ [tool.pyright]
129
+ # Paths to include in analysis
130
+ include = ["src"]
131
+
132
+ # Paths to exclude
133
+ exclude = ["**/__pycache__", "**/node_modules", ".venv", "build", "dist"]
134
+
135
+ # Python version
136
+ pythonVersion = "3.12"
137
+ pythonPlatform = "All"
138
+
139
+ # Type checking mode: "off", "basic", "standard", "strict"
140
+ typeCheckingMode = "standard"
141
+
142
+ # Reporting options (incremental strictness)
143
+ reportMissingImports = true
144
+ reportMissingTypeStubs = false
145
+ reportUnusedImport = "warning"
146
+ reportUnusedClass = "warning"
147
+ reportUnusedFunction = "warning"
148
+ reportUnusedVariable = "warning"
149
+ reportDuplicateImport = "warning"
150
+ reportOptionalSubscript = "error"
151
+ reportOptionalMemberAccess = "error"
152
+ reportOptionalCall = "error"
153
+ reportOptionalIterable = "error"
154
+ reportOptionalContextManager = "error"
155
+ reportOptionalOperand = "error"
156
+
157
+ # Stricter checks (enable gradually)
158
+ reportUnknownParameterType = "none"
159
+ reportUnknownArgumentType = "none"
160
+ reportUnknownLambdaType = "none"
161
+ reportUnknownVariableType = "none"
162
+ reportUnknownMemberType = "none"
163
+
164
+ # Use stub packages when available
165
+ stubPath = "typings"
166
+
167
+ # Pytest configuration
168
+ [tool.pytest.ini_options]
169
+ minversion = "8.0"
170
+ addopts = [
171
+ "--strict-markers",
172
+ "--strict-config",
173
+ "--cov=marqetive",
174
+ "--cov-report=term-missing",
175
+ ]
176
+ testpaths = ["tests"]
177
+ pythonpath = ["src"]