metaso-sdk 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.
- metaso_sdk-0.1.0/CHANGELOG.md +8 -0
- metaso_sdk-0.1.0/CONTRIBUTING.md +150 -0
- metaso_sdk-0.1.0/LICENSE +21 -0
- metaso_sdk-0.1.0/PKG-INFO +111 -0
- metaso_sdk-0.1.0/README.md +74 -0
- metaso_sdk-0.1.0/config/coverage.ini +25 -0
- metaso_sdk-0.1.0/config/git-changelog.toml +9 -0
- metaso_sdk-0.1.0/config/mypy.ini +5 -0
- metaso_sdk-0.1.0/config/pytest.ini +14 -0
- metaso_sdk-0.1.0/config/ruff.toml +84 -0
- metaso_sdk-0.1.0/config/vscode/launch.json +47 -0
- metaso_sdk-0.1.0/config/vscode/settings.json +33 -0
- metaso_sdk-0.1.0/config/vscode/tasks.json +97 -0
- metaso_sdk-0.1.0/docs/.overrides/partials/comments.html +57 -0
- metaso_sdk-0.1.0/docs/changelog.md +1 -0
- metaso_sdk-0.1.0/docs/contributing.md +1 -0
- metaso_sdk-0.1.0/docs/css/material.css +4 -0
- metaso_sdk-0.1.0/docs/css/mkdocstrings.css +27 -0
- metaso_sdk-0.1.0/docs/index.md +6 -0
- metaso_sdk-0.1.0/docs/js/feedback.js +14 -0
- metaso_sdk-0.1.0/docs/license.md +10 -0
- metaso_sdk-0.1.0/duties.py +203 -0
- metaso_sdk-0.1.0/mkdocs.yml +159 -0
- metaso_sdk-0.1.0/pyproject.toml +115 -0
- metaso_sdk-0.1.0/scripts/gen_ref_nav.py +37 -0
- metaso_sdk-0.1.0/scripts/make +193 -0
- metaso_sdk-0.1.0/scripts/make.py +193 -0
- metaso_sdk-0.1.0/src/metaso_sdk/__init__.py +24 -0
- metaso_sdk-0.1.0/src/metaso_sdk/__main__.py +14 -0
- metaso_sdk-0.1.0/src/metaso_sdk/cli.py +58 -0
- metaso_sdk-0.1.0/src/metaso_sdk/client.py +11 -0
- metaso_sdk-0.1.0/src/metaso_sdk/debug.py +109 -0
- metaso_sdk-0.1.0/src/metaso_sdk/model.py +35 -0
- metaso_sdk-0.1.0/src/metaso_sdk/py.typed +0 -0
- metaso_sdk-0.1.0/src/metaso_sdk/search.py +35 -0
- metaso_sdk-0.1.0/src/metaso_sdk/subject.py +98 -0
- metaso_sdk-0.1.0/tests/__init__.py +7 -0
- metaso_sdk-0.1.0/tests/conftest.py +1 -0
- metaso_sdk-0.1.0/tests/fixtures/1/functions.pdf +0 -0
- metaso_sdk-0.1.0/tests/fixtures/2/phd-thesis.pdf +0 -0
- metaso_sdk-0.1.0/tests/fixtures/3/eurosys16-final29.pdf +0 -0
- metaso_sdk-0.1.0/tests/test_cli.py +51 -0
- metaso_sdk-0.1.0/tests/test_search.py +17 -0
- metaso_sdk-0.1.0/tests/test_subject.py +33 -0
@@ -0,0 +1,8 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
6
|
+
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
<!-- insertion marker -->
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
Contributions are welcome, and they are greatly appreciated!
|
4
|
+
Every little bit helps, and credit will always be given.
|
5
|
+
|
6
|
+
## Environment setup
|
7
|
+
|
8
|
+
Nothing easier!
|
9
|
+
|
10
|
+
Fork and clone the repository, then:
|
11
|
+
|
12
|
+
```bash
|
13
|
+
cd metaso-sdk
|
14
|
+
make setup
|
15
|
+
```
|
16
|
+
|
17
|
+
> NOTE:
|
18
|
+
> If it fails for some reason,
|
19
|
+
> you'll need to install
|
20
|
+
> [uv](https://github.com/astral-sh/uv)
|
21
|
+
> manually.
|
22
|
+
>
|
23
|
+
> You can install it with:
|
24
|
+
>
|
25
|
+
> ```bash
|
26
|
+
> curl -LsSf https://astral.sh/uv/install.sh | sh
|
27
|
+
> ```
|
28
|
+
>
|
29
|
+
> Now you can try running `make setup` again,
|
30
|
+
> or simply `uv sync`.
|
31
|
+
|
32
|
+
You now have the dependencies installed.
|
33
|
+
|
34
|
+
You can run the application with `make run metaso [ARGS...]`.
|
35
|
+
|
36
|
+
Run `make help` to see all the available actions!
|
37
|
+
|
38
|
+
## Tasks
|
39
|
+
|
40
|
+
The entry-point to run commands and tasks is the `make` Python script,
|
41
|
+
located in the `scripts` directory. Try running `make` to show the available commands and tasks.
|
42
|
+
The *commands* do not need the Python dependencies to be installed,
|
43
|
+
while the *tasks* do.
|
44
|
+
The cross-platform tasks are written in Python, thanks to [duty](https://github.com/pawamoy/duty).
|
45
|
+
|
46
|
+
If you work in VSCode, we provide
|
47
|
+
[an action to configure VSCode](https://pawamoy.github.io/copier-uv/work/#vscode-setup)
|
48
|
+
for the project.
|
49
|
+
|
50
|
+
## Development
|
51
|
+
|
52
|
+
As usual:
|
53
|
+
|
54
|
+
1. create a new branch: `git switch -c feature-or-bugfix-name`
|
55
|
+
1. edit the code and/or the documentation
|
56
|
+
|
57
|
+
**Before committing:**
|
58
|
+
|
59
|
+
1. run `make format` to auto-format the code
|
60
|
+
1. run `make check` to check everything (fix any warning)
|
61
|
+
1. run `make test` to run the tests (fix any issue)
|
62
|
+
1. if you updated the documentation or the project dependencies:
|
63
|
+
1. run `make docs`
|
64
|
+
1. go to http://localhost:8000 and check that everything looks good
|
65
|
+
1. follow our [commit message convention](#commit-message-convention)
|
66
|
+
|
67
|
+
If you are unsure about how to fix or ignore a warning,
|
68
|
+
just let the continuous integration fail,
|
69
|
+
and we will help you during review.
|
70
|
+
|
71
|
+
Don't bother updating the changelog, we will take care of this.
|
72
|
+
|
73
|
+
## Commit message convention
|
74
|
+
|
75
|
+
Commit messages must follow our convention based on the
|
76
|
+
[Angular style](https://gist.github.com/stephenparish/9941e89d80e2bc58a153#format-of-the-commit-message)
|
77
|
+
or the [Karma convention](https://karma-runner.github.io/4.0/dev/git-commit-msg.html):
|
78
|
+
|
79
|
+
```
|
80
|
+
<type>[(scope)]: Subject
|
81
|
+
|
82
|
+
[Body]
|
83
|
+
```
|
84
|
+
|
85
|
+
**Subject and body must be valid Markdown.**
|
86
|
+
Subject must have proper casing (uppercase for first letter
|
87
|
+
if it makes sense), but no dot at the end, and no punctuation
|
88
|
+
in general.
|
89
|
+
|
90
|
+
Scope and body are optional. Type can be:
|
91
|
+
|
92
|
+
- `build`: About packaging, building wheels, etc.
|
93
|
+
- `chore`: About packaging or repo/files management.
|
94
|
+
- `ci`: About Continuous Integration.
|
95
|
+
- `deps`: Dependencies update.
|
96
|
+
- `docs`: About documentation.
|
97
|
+
- `feat`: New feature.
|
98
|
+
- `fix`: Bug fix.
|
99
|
+
- `perf`: About performance.
|
100
|
+
- `refactor`: Changes that are not features or bug fixes.
|
101
|
+
- `style`: A change in code style/format.
|
102
|
+
- `tests`: About tests.
|
103
|
+
|
104
|
+
If you write a body, please add trailers at the end
|
105
|
+
(for example issues and PR references, or co-authors),
|
106
|
+
without relying on GitHub's flavored Markdown:
|
107
|
+
|
108
|
+
```
|
109
|
+
Body.
|
110
|
+
|
111
|
+
Issue #10: https://github.com/namespace/project/issues/10
|
112
|
+
Related to PR namespace/other-project#15: https://github.com/namespace/other-project/pull/15
|
113
|
+
```
|
114
|
+
|
115
|
+
These "trailers" must appear at the end of the body,
|
116
|
+
without any blank lines between them. The trailer title
|
117
|
+
can contain any character except colons `:`.
|
118
|
+
We expect a full URI for each trailer, not just GitHub autolinks
|
119
|
+
(for example, full GitHub URLs for commits and issues,
|
120
|
+
not the hash or the #issue-number).
|
121
|
+
|
122
|
+
We do not enforce a line length on commit messages summary and body,
|
123
|
+
but please avoid very long summaries, and very long lines in the body,
|
124
|
+
unless they are part of code blocks that must not be wrapped.
|
125
|
+
|
126
|
+
## Pull requests guidelines
|
127
|
+
|
128
|
+
Link to any related issue in the Pull Request message.
|
129
|
+
|
130
|
+
During the review, we recommend using fixups:
|
131
|
+
|
132
|
+
```bash
|
133
|
+
# SHA is the SHA of the commit you want to fix
|
134
|
+
git commit --fixup=SHA
|
135
|
+
```
|
136
|
+
|
137
|
+
Once all the changes are approved, you can squash your commits:
|
138
|
+
|
139
|
+
```bash
|
140
|
+
git rebase -i --autosquash main
|
141
|
+
```
|
142
|
+
|
143
|
+
And force-push:
|
144
|
+
|
145
|
+
```bash
|
146
|
+
git push -f
|
147
|
+
```
|
148
|
+
|
149
|
+
If this seems all too complicated, you can push or force-push each new commit,
|
150
|
+
and we will squash them ourselves if needed, before merging.
|
metaso_sdk-0.1.0/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2024 MetaSota
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,111 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: metaso-sdk
|
3
|
+
Version: 0.1.0
|
4
|
+
Summary: The official Python SDK for https://metaso.cn
|
5
|
+
Author-Email: Zhao Xiaohong <zhaoxiaohong@metasota.ai>
|
6
|
+
License: MIT
|
7
|
+
Classifier: Development Status :: 4 - Beta
|
8
|
+
Classifier: Intended Audience :: Developers
|
9
|
+
Classifier: Programming Language :: Python
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
11
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
12
|
+
Classifier: Programming Language :: Python :: 3.8
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
19
|
+
Classifier: Topic :: Documentation
|
20
|
+
Classifier: Topic :: Software Development
|
21
|
+
Classifier: Topic :: Utilities
|
22
|
+
Classifier: Typing :: Typed
|
23
|
+
Project-URL: Homepage, https://meta-sota.github.io/metaso-sdk
|
24
|
+
Project-URL: Documentation, https://meta-sota.github.io/metaso-sdk
|
25
|
+
Project-URL: Changelog, https://meta-sota.github.io/metaso-sdk/changelog
|
26
|
+
Project-URL: Repository, https://github.com/meta-sota/metaso-sdk
|
27
|
+
Project-URL: Issues, https://github.com/meta-sota/metaso-sdk/issues
|
28
|
+
Project-URL: Discussions, https://github.com/meta-sota/metaso-sdk/discussions
|
29
|
+
Project-URL: Gitter, https://gitter.im/metaso-sdk/community
|
30
|
+
Project-URL: Funding, https://github.com/sponsors/meta-sota
|
31
|
+
Requires-Python: >=3.8
|
32
|
+
Requires-Dist: httpx-sse>=0.4.0
|
33
|
+
Requires-Dist: httpx>=0.27.2
|
34
|
+
Requires-Dist: pydantic>=2.10.0
|
35
|
+
Requires-Dist: streamable>=1.3.5
|
36
|
+
Description-Content-Type: text/markdown
|
37
|
+
|
38
|
+
# metaso-sdk
|
39
|
+
|
40
|
+
[](https://github.com/meta-sota/metaso-sdk/actions?query=workflow%3Aci)
|
41
|
+
[](https://meta-sota.github.io/metaso-sdk/)
|
42
|
+
[](https://pypi.org/project/metaso-sdk/)
|
43
|
+
[](https://app.gitter.im/#/room/#metaso-sdk:gitter.im)
|
44
|
+
|
45
|
+
The official Python SDK for https://metaso.cn
|
46
|
+
|
47
|
+
## 安装
|
48
|
+
|
49
|
+
```bash
|
50
|
+
pip install metaso-sdk
|
51
|
+
```
|
52
|
+
|
53
|
+
## 配置 METASO_API_KEY
|
54
|
+
|
55
|
+
metaso-sdk 从环境变量 `METASO_API_KEY` 读取用于认证的 API 密钥,可以在 shell 里进行设置:
|
56
|
+
|
57
|
+
```bash
|
58
|
+
export METASO_API_KEY="mk-EE2..."
|
59
|
+
```
|
60
|
+
|
61
|
+
或者在 Python 代码里进行设置:
|
62
|
+
|
63
|
+
```python
|
64
|
+
import os
|
65
|
+
os.environ["METASO_API_KEY"] = "mk-EE2..."
|
66
|
+
```
|
67
|
+
|
68
|
+
## 搜索
|
69
|
+
|
70
|
+
### 搜索问题
|
71
|
+
```python
|
72
|
+
from metaso_sdk import search, Query
|
73
|
+
search(Query(question="abc"))
|
74
|
+
```
|
75
|
+
|
76
|
+
### 追问
|
77
|
+
|
78
|
+
```python
|
79
|
+
search(Query(question="广播公司", sessionId='8550018047390023680'))
|
80
|
+
```
|
81
|
+
|
82
|
+
### 流式返回
|
83
|
+
|
84
|
+
```python
|
85
|
+
for chunk in search(Query(question="abc"), stream=True):
|
86
|
+
print(chunk)
|
87
|
+
|
88
|
+
...
|
89
|
+
{'type': 'heartbeat'}
|
90
|
+
{'text': '因此,“abc”可以指代字母表的前三个字母、美籍华裔、美国广播公司、一种音乐记谱法以及一种编程语言。具体含义需要根据上下文来确定。', 'type': 'append-text'}
|
91
|
+
```
|
92
|
+
|
93
|
+
## 专题
|
94
|
+
|
95
|
+
### 递归上传文件夹
|
96
|
+
|
97
|
+
```
|
98
|
+
from metaso_sdk import create_topic, upload_directory, Topic
|
99
|
+
|
100
|
+
topic = create_topic(Topic(name="functional programing"))
|
101
|
+
files = upload_directory(topic, "dir")
|
102
|
+
```
|
103
|
+
|
104
|
+
### 搜索特定专题
|
105
|
+
|
106
|
+
```python
|
107
|
+
from metaso_sdk import search, Query
|
108
|
+
|
109
|
+
query = Query(question="functional")
|
110
|
+
search(query, topic=topic)
|
111
|
+
```
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# metaso-sdk
|
2
|
+
|
3
|
+
[](https://github.com/meta-sota/metaso-sdk/actions?query=workflow%3Aci)
|
4
|
+
[](https://meta-sota.github.io/metaso-sdk/)
|
5
|
+
[](https://pypi.org/project/metaso-sdk/)
|
6
|
+
[](https://app.gitter.im/#/room/#metaso-sdk:gitter.im)
|
7
|
+
|
8
|
+
The official Python SDK for https://metaso.cn
|
9
|
+
|
10
|
+
## 安装
|
11
|
+
|
12
|
+
```bash
|
13
|
+
pip install metaso-sdk
|
14
|
+
```
|
15
|
+
|
16
|
+
## 配置 METASO_API_KEY
|
17
|
+
|
18
|
+
metaso-sdk 从环境变量 `METASO_API_KEY` 读取用于认证的 API 密钥,可以在 shell 里进行设置:
|
19
|
+
|
20
|
+
```bash
|
21
|
+
export METASO_API_KEY="mk-EE2..."
|
22
|
+
```
|
23
|
+
|
24
|
+
或者在 Python 代码里进行设置:
|
25
|
+
|
26
|
+
```python
|
27
|
+
import os
|
28
|
+
os.environ["METASO_API_KEY"] = "mk-EE2..."
|
29
|
+
```
|
30
|
+
|
31
|
+
## 搜索
|
32
|
+
|
33
|
+
### 搜索问题
|
34
|
+
```python
|
35
|
+
from metaso_sdk import search, Query
|
36
|
+
search(Query(question="abc"))
|
37
|
+
```
|
38
|
+
|
39
|
+
### 追问
|
40
|
+
|
41
|
+
```python
|
42
|
+
search(Query(question="广播公司", sessionId='8550018047390023680'))
|
43
|
+
```
|
44
|
+
|
45
|
+
### 流式返回
|
46
|
+
|
47
|
+
```python
|
48
|
+
for chunk in search(Query(question="abc"), stream=True):
|
49
|
+
print(chunk)
|
50
|
+
|
51
|
+
...
|
52
|
+
{'type': 'heartbeat'}
|
53
|
+
{'text': '因此,“abc”可以指代字母表的前三个字母、美籍华裔、美国广播公司、一种音乐记谱法以及一种编程语言。具体含义需要根据上下文来确定。', 'type': 'append-text'}
|
54
|
+
```
|
55
|
+
|
56
|
+
## 专题
|
57
|
+
|
58
|
+
### 递归上传文件夹
|
59
|
+
|
60
|
+
```
|
61
|
+
from metaso_sdk import create_topic, upload_directory, Topic
|
62
|
+
|
63
|
+
topic = create_topic(Topic(name="functional programing"))
|
64
|
+
files = upload_directory(topic, "dir")
|
65
|
+
```
|
66
|
+
|
67
|
+
### 搜索特定专题
|
68
|
+
|
69
|
+
```python
|
70
|
+
from metaso_sdk import search, Query
|
71
|
+
|
72
|
+
query = Query(question="functional")
|
73
|
+
search(query, topic=topic)
|
74
|
+
```
|
@@ -0,0 +1,25 @@
|
|
1
|
+
[coverage:run]
|
2
|
+
branch = true
|
3
|
+
parallel = true
|
4
|
+
source =
|
5
|
+
src/
|
6
|
+
tests/
|
7
|
+
|
8
|
+
[coverage:paths]
|
9
|
+
equivalent =
|
10
|
+
src/
|
11
|
+
.venv/lib/*/site-packages/
|
12
|
+
.venvs/*/lib/*/site-packages/
|
13
|
+
|
14
|
+
[coverage:report]
|
15
|
+
precision = 2
|
16
|
+
omit =
|
17
|
+
src/*/__init__.py
|
18
|
+
src/*/__main__.py
|
19
|
+
tests/__init__.py
|
20
|
+
exclude_lines =
|
21
|
+
pragma: no cover
|
22
|
+
if TYPE_CHECKING
|
23
|
+
|
24
|
+
[coverage:json]
|
25
|
+
output = htmlcov/coverage.json
|
@@ -0,0 +1,14 @@
|
|
1
|
+
[pytest]
|
2
|
+
python_files =
|
3
|
+
test_*.py
|
4
|
+
addopts =
|
5
|
+
--cov
|
6
|
+
--cov-config config/coverage.ini
|
7
|
+
testpaths =
|
8
|
+
tests
|
9
|
+
|
10
|
+
# action:message_regex:warning_class:module_regex:line
|
11
|
+
filterwarnings =
|
12
|
+
error
|
13
|
+
# TODO: remove once pytest-xdist 4 is released
|
14
|
+
ignore:.*rsyncdir:DeprecationWarning:xdist
|
@@ -0,0 +1,84 @@
|
|
1
|
+
target-version = "py39"
|
2
|
+
line-length = 120
|
3
|
+
|
4
|
+
[lint]
|
5
|
+
exclude = [
|
6
|
+
"tests/fixtures/*.py",
|
7
|
+
]
|
8
|
+
select = [
|
9
|
+
"A", "ANN", "ARG",
|
10
|
+
"B", "BLE",
|
11
|
+
"C", "C4",
|
12
|
+
"COM",
|
13
|
+
"D", "DTZ",
|
14
|
+
"E", "ERA", "EXE",
|
15
|
+
"F", "FBT",
|
16
|
+
"G",
|
17
|
+
"I", "ICN", "INP", "ISC",
|
18
|
+
"N",
|
19
|
+
"PGH", "PIE", "PL", "PLC", "PLE", "PLR", "PLW", "PT", "PYI",
|
20
|
+
"Q",
|
21
|
+
"RUF", "RSE", "RET",
|
22
|
+
"S", "SIM", "SLF",
|
23
|
+
"T", "T10", "T20", "TCH", "TID", "TRY",
|
24
|
+
"UP",
|
25
|
+
"W",
|
26
|
+
"YTT",
|
27
|
+
]
|
28
|
+
ignore = [
|
29
|
+
"A001", # Variable is shadowing a Python builtin
|
30
|
+
"ANN101", # Missing type annotation for self
|
31
|
+
"ANN102", # Missing type annotation for cls
|
32
|
+
"ANN204", # Missing return type annotation for special method __str__
|
33
|
+
"ANN401", # Dynamically typed expressions (typing.Any) are disallowed
|
34
|
+
"ARG005", # Unused lambda argument
|
35
|
+
"C901", # Too complex
|
36
|
+
"D105", # Missing docstring in magic method
|
37
|
+
"D417", # Missing argument description in the docstring
|
38
|
+
"E501", # Line too long
|
39
|
+
"ERA001", # Commented out code
|
40
|
+
"G004", # Logging statement uses f-string
|
41
|
+
"PLR0911", # Too many return statements
|
42
|
+
"PLR0912", # Too many branches
|
43
|
+
"PLR0913", # Too many arguments to function call
|
44
|
+
"PLR0915", # Too many statements
|
45
|
+
"SLF001", # Private member accessed
|
46
|
+
"TRY003", # Avoid specifying long messages outside the exception class
|
47
|
+
]
|
48
|
+
|
49
|
+
[lint.per-file-ignores]
|
50
|
+
"src/*/cli.py" = [
|
51
|
+
"T201", # Print statement
|
52
|
+
]
|
53
|
+
"src/*/debug.py" = [
|
54
|
+
"T201", # Print statement
|
55
|
+
]
|
56
|
+
"scripts/*.py" = [
|
57
|
+
"INP001", # File is part of an implicit namespace package
|
58
|
+
"T201", # Print statement
|
59
|
+
]
|
60
|
+
"tests/*.py" = [
|
61
|
+
"ARG005", # Unused lambda argument
|
62
|
+
"FBT001", # Boolean positional arg in function definition
|
63
|
+
"PLR2004", # Magic value used in comparison
|
64
|
+
"S101", # Use of assert detected
|
65
|
+
]
|
66
|
+
|
67
|
+
[lint.flake8-quotes]
|
68
|
+
docstring-quotes = "double"
|
69
|
+
|
70
|
+
[lint.flake8-tidy-imports]
|
71
|
+
ban-relative-imports = "all"
|
72
|
+
|
73
|
+
[lint.isort]
|
74
|
+
known-first-party = ["metaso_sdk"]
|
75
|
+
|
76
|
+
[lint.pydocstyle]
|
77
|
+
convention = "google"
|
78
|
+
|
79
|
+
[format]
|
80
|
+
exclude = [
|
81
|
+
"tests/fixtures/*.py",
|
82
|
+
]
|
83
|
+
docstring-code-format = true
|
84
|
+
docstring-code-line-length = 80
|
@@ -0,0 +1,47 @@
|
|
1
|
+
{
|
2
|
+
"version": "0.2.0",
|
3
|
+
"configurations": [
|
4
|
+
{
|
5
|
+
"name": "python (current file)",
|
6
|
+
"type": "debugpy",
|
7
|
+
"request": "launch",
|
8
|
+
"program": "${file}",
|
9
|
+
"console": "integratedTerminal",
|
10
|
+
"justMyCode": false
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"name": "docs",
|
14
|
+
"type": "debugpy",
|
15
|
+
"request": "launch",
|
16
|
+
"module": "mkdocs",
|
17
|
+
"justMyCode": false,
|
18
|
+
"args": [
|
19
|
+
"serve",
|
20
|
+
"-v"
|
21
|
+
]
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"name": "test",
|
25
|
+
"type": "debugpy",
|
26
|
+
"request": "launch",
|
27
|
+
"module": "pytest",
|
28
|
+
"justMyCode": false,
|
29
|
+
"args": [
|
30
|
+
"-c=config/pytest.ini",
|
31
|
+
"-vvv",
|
32
|
+
"--no-cov",
|
33
|
+
"--dist=no",
|
34
|
+
"tests",
|
35
|
+
"-k=${input:tests_selection}"
|
36
|
+
]
|
37
|
+
}
|
38
|
+
],
|
39
|
+
"inputs": [
|
40
|
+
{
|
41
|
+
"id": "tests_selection",
|
42
|
+
"type": "promptString",
|
43
|
+
"description": "Tests selection",
|
44
|
+
"default": ""
|
45
|
+
}
|
46
|
+
]
|
47
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
{
|
2
|
+
"files.watcherExclude": {
|
3
|
+
"**/.venv*/**": true,
|
4
|
+
"**/.venvs*/**": true,
|
5
|
+
"**/venv*/**": true
|
6
|
+
},
|
7
|
+
"mypy-type-checker.args": [
|
8
|
+
"--config-file=config/mypy.ini"
|
9
|
+
],
|
10
|
+
"python.testing.unittestEnabled": false,
|
11
|
+
"python.testing.pytestEnabled": true,
|
12
|
+
"python.testing.pytestArgs": [
|
13
|
+
"--config-file=config/pytest.ini"
|
14
|
+
],
|
15
|
+
"ruff.enable": true,
|
16
|
+
"ruff.format.args": [
|
17
|
+
"--config=config/ruff.toml"
|
18
|
+
],
|
19
|
+
"ruff.lint.args": [
|
20
|
+
"--config=config/ruff.toml"
|
21
|
+
],
|
22
|
+
"yaml.schemas": {
|
23
|
+
"https://squidfunk.github.io/mkdocs-material/schema.json": "mkdocs.yml"
|
24
|
+
},
|
25
|
+
"yaml.customTags": [
|
26
|
+
"!ENV scalar",
|
27
|
+
"!ENV sequence",
|
28
|
+
"!relative scalar",
|
29
|
+
"tag:yaml.org,2002:python/name:materialx.emoji.to_svg",
|
30
|
+
"tag:yaml.org,2002:python/name:materialx.emoji.twemoji",
|
31
|
+
"tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format"
|
32
|
+
]
|
33
|
+
}
|
@@ -0,0 +1,97 @@
|
|
1
|
+
{
|
2
|
+
"version": "2.0.0",
|
3
|
+
"tasks": [
|
4
|
+
{
|
5
|
+
"label": "changelog",
|
6
|
+
"type": "process",
|
7
|
+
"command": "scripts/make",
|
8
|
+
"args": ["changelog"]
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"label": "check",
|
12
|
+
"type": "process",
|
13
|
+
"command": "scripts/make",
|
14
|
+
"args": ["check"]
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"label": "check-quality",
|
18
|
+
"type": "process",
|
19
|
+
"command": "scripts/make",
|
20
|
+
"args": ["check-quality"]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"label": "check-types",
|
24
|
+
"type": "process",
|
25
|
+
"command": "scripts/make",
|
26
|
+
"args": ["check-types"]
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"label": "check-docs",
|
30
|
+
"type": "process",
|
31
|
+
"command": "scripts/make",
|
32
|
+
"args": ["check-docs"]
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"label": "check-api",
|
36
|
+
"type": "process",
|
37
|
+
"command": "scripts/make",
|
38
|
+
"args": ["check-api"]
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"label": "clean",
|
42
|
+
"type": "process",
|
43
|
+
"command": "scripts/make",
|
44
|
+
"args": ["clean"]
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"label": "docs",
|
48
|
+
"type": "process",
|
49
|
+
"command": "scripts/make",
|
50
|
+
"args": ["docs"]
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"label": "docs-deploy",
|
54
|
+
"type": "process",
|
55
|
+
"command": "scripts/make",
|
56
|
+
"args": ["docs-deploy"]
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"label": "format",
|
60
|
+
"type": "process",
|
61
|
+
"command": "scripts/make",
|
62
|
+
"args": ["format"]
|
63
|
+
},
|
64
|
+
{
|
65
|
+
"label": "release",
|
66
|
+
"type": "process",
|
67
|
+
"command": "scripts/make",
|
68
|
+
"args": ["release", "${input:version}"]
|
69
|
+
},
|
70
|
+
{
|
71
|
+
"label": "setup",
|
72
|
+
"type": "process",
|
73
|
+
"command": "scripts/make",
|
74
|
+
"args": ["setup"]
|
75
|
+
},
|
76
|
+
{
|
77
|
+
"label": "test",
|
78
|
+
"type": "process",
|
79
|
+
"command": "scripts/make",
|
80
|
+
"args": ["test", "coverage"],
|
81
|
+
"group": "test"
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"label": "vscode",
|
85
|
+
"type": "process",
|
86
|
+
"command": "scripts/make",
|
87
|
+
"args": ["vscode"]
|
88
|
+
}
|
89
|
+
],
|
90
|
+
"inputs": [
|
91
|
+
{
|
92
|
+
"id": "version",
|
93
|
+
"type": "promptString",
|
94
|
+
"description": "Version"
|
95
|
+
}
|
96
|
+
]
|
97
|
+
}
|