touchdesigner-mcp-server 0.4.0-alpha.0 → 0.4.0-alpha.2
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.
- package/README.ja.md +4 -4
- package/README.md +4 -3
- package/dist/cli.js +0 -0
- package/dist/gen/endpoints/TouchDesignerAPI.js +1 -1
- package/dist/gen/mcp/touchDesignerAPI.zod.js +1 -1
- package/dist/index.js +0 -0
- package/dist/server/touchDesignerServer.js +1 -1
- package/package.json +14 -12
- package/td/genHandlers.js +0 -47
- package/td/import_modules.py +0 -52
- package/td/mcp_webserver_base.tox +0 -0
- package/td/modules/mcp/controllers/__init__.py +0 -9
- package/td/modules/mcp/controllers/api_controller.py +0 -637
- package/td/modules/mcp/controllers/generated_handlers.py +0 -365
- package/td/modules/mcp/controllers/openapi_router.py +0 -265
- package/td/modules/mcp/services/__init__.py +0 -8
- package/td/modules/mcp/services/api_service.py +0 -555
- package/td/modules/mcp_webserver_script.py +0 -134
- package/td/modules/td_server/.dockerignore +0 -72
- package/td/modules/td_server/.openapi-generator/FILES +0 -55
- package/td/modules/td_server/.openapi-generator/VERSION +0 -1
- package/td/modules/td_server/.openapi-generator-ignore +0 -23
- package/td/modules/td_server/.travis.yml +0 -14
- package/td/modules/td_server/Dockerfile +0 -16
- package/td/modules/td_server/README.md +0 -49
- package/td/modules/td_server/git_push.sh +0 -57
- package/td/modules/td_server/openapi_server/__init__.py +0 -0
- package/td/modules/td_server/openapi_server/__main__.py +0 -19
- package/td/modules/td_server/openapi_server/controllers/__init__.py +0 -0
- package/td/modules/td_server/openapi_server/controllers/default_controller.py +0 -162
- package/td/modules/td_server/openapi_server/controllers/security_controller.py +0 -2
- package/td/modules/td_server/openapi_server/encoder.py +0 -19
- package/td/modules/td_server/openapi_server/models/__init__.py +0 -33
- package/td/modules/td_server/openapi_server/models/base_model.py +0 -68
- package/td/modules/td_server/openapi_server/models/create_node200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/create_node200_response_data.py +0 -63
- package/td/modules/td_server/openapi_server/models/create_node_request.py +0 -123
- package/td/modules/td_server/openapi_server/models/delete_node200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/delete_node200_response_data.py +0 -91
- package/td/modules/td_server/openapi_server/models/exec_node_method200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/exec_node_method200_response_data.py +0 -65
- package/td/modules/td_server/openapi_server/models/exec_node_method_request.py +0 -153
- package/td/modules/td_server/openapi_server/models/exec_node_method_request_args_inner.py +0 -34
- package/td/modules/td_server/openapi_server/models/exec_python_script200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/exec_python_script200_response_data.py +0 -65
- package/td/modules/td_server/openapi_server/models/exec_python_script200_response_data_result.py +0 -63
- package/td/modules/td_server/openapi_server/models/exec_python_script_request.py +0 -65
- package/td/modules/td_server/openapi_server/models/get_node_detail200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_nodes200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_nodes200_response_data.py +0 -65
- package/td/modules/td_server/openapi_server/models/get_td_info200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_td_info200_response_data.py +0 -155
- package/td/modules/td_server/openapi_server/models/get_td_python_class_details200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_td_python_classes200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_td_python_classes200_response_data.py +0 -63
- package/td/modules/td_server/openapi_server/models/td_node.py +0 -175
- package/td/modules/td_server/openapi_server/models/td_node_family_type.py +0 -44
- package/td/modules/td_server/openapi_server/models/td_python_class_details.py +0 -191
- package/td/modules/td_server/openapi_server/models/td_python_class_info.py +0 -127
- package/td/modules/td_server/openapi_server/models/td_python_method_info.py +0 -121
- package/td/modules/td_server/openapi_server/models/td_python_property_info.py +0 -123
- package/td/modules/td_server/openapi_server/models/update_node200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/update_node200_response_data.py +0 -149
- package/td/modules/td_server/openapi_server/models/update_node200_response_data_failed_inner.py +0 -91
- package/td/modules/td_server/openapi_server/models/update_node_request.py +0 -93
- package/td/modules/td_server/openapi_server/openapi/openapi.yaml +0 -975
- package/td/modules/td_server/openapi_server/test/__init__.py +0 -16
- package/td/modules/td_server/openapi_server/test/test_default_controller.py +0 -201
- package/td/modules/td_server/openapi_server/typing_utils.py +0 -30
- package/td/modules/td_server/openapi_server/util.py +0 -147
- package/td/modules/td_server/requirements.txt +0 -13
- package/td/modules/td_server/setup.py +0 -37
- package/td/modules/td_server/test-requirements.txt +0 -4
- package/td/modules/td_server/tox.ini +0 -11
- package/td/modules/utils/config.py +0 -7
- package/td/modules/utils/error_handling.py +0 -104
- package/td/modules/utils/logging.py +0 -23
- package/td/modules/utils/result.py +0 -40
- package/td/modules/utils/serialization.py +0 -57
- package/td/modules/utils/types.py +0 -33
- package/td/modules/utils/utils_logging.py +0 -60
- package/td/templates/mcp/api_controller_handlers.mustache +0 -63
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
.travis.yaml
|
|
2
|
-
.openapi-generator-ignore
|
|
3
|
-
README.md
|
|
4
|
-
tox.ini
|
|
5
|
-
git_push.sh
|
|
6
|
-
test-requirements.txt
|
|
7
|
-
setup.py
|
|
8
|
-
|
|
9
|
-
# Byte-compiled / optimized / DLL files
|
|
10
|
-
__pycache__/
|
|
11
|
-
*.py[cod]
|
|
12
|
-
*$py.class
|
|
13
|
-
|
|
14
|
-
# C extensions
|
|
15
|
-
*.so
|
|
16
|
-
|
|
17
|
-
# Distribution / packaging
|
|
18
|
-
.Python
|
|
19
|
-
env/
|
|
20
|
-
build/
|
|
21
|
-
develop-eggs/
|
|
22
|
-
dist/
|
|
23
|
-
downloads/
|
|
24
|
-
eggs/
|
|
25
|
-
.eggs/
|
|
26
|
-
lib/
|
|
27
|
-
lib64/
|
|
28
|
-
parts/
|
|
29
|
-
sdist/
|
|
30
|
-
var/
|
|
31
|
-
*.egg-info/
|
|
32
|
-
.installed.cfg
|
|
33
|
-
*.egg
|
|
34
|
-
|
|
35
|
-
# PyInstaller
|
|
36
|
-
# Usually these files are written by a python script from a template
|
|
37
|
-
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
38
|
-
*.manifest
|
|
39
|
-
*.spec
|
|
40
|
-
|
|
41
|
-
# Installer logs
|
|
42
|
-
pip-log.txt
|
|
43
|
-
pip-delete-this-directory.txt
|
|
44
|
-
|
|
45
|
-
# Unit test / coverage reports
|
|
46
|
-
htmlcov/
|
|
47
|
-
.tox/
|
|
48
|
-
.coverage
|
|
49
|
-
.coverage.*
|
|
50
|
-
.cache
|
|
51
|
-
nosetests.xml
|
|
52
|
-
coverage.xml
|
|
53
|
-
*,cover
|
|
54
|
-
.hypothesis/
|
|
55
|
-
venv/
|
|
56
|
-
.python-version
|
|
57
|
-
|
|
58
|
-
# Translations
|
|
59
|
-
*.mo
|
|
60
|
-
*.pot
|
|
61
|
-
|
|
62
|
-
# Django stuff:
|
|
63
|
-
*.log
|
|
64
|
-
|
|
65
|
-
# Sphinx documentation
|
|
66
|
-
docs/_build/
|
|
67
|
-
|
|
68
|
-
# PyBuilder
|
|
69
|
-
target/
|
|
70
|
-
|
|
71
|
-
#Ipython Notebook
|
|
72
|
-
.ipynb_checkpoints
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
.dockerignore
|
|
2
|
-
.gitignore
|
|
3
|
-
.openapi-generator-ignore
|
|
4
|
-
.travis.yml
|
|
5
|
-
Dockerfile
|
|
6
|
-
README.md
|
|
7
|
-
git_push.sh
|
|
8
|
-
openapi_server/__init__.py
|
|
9
|
-
openapi_server/__main__.py
|
|
10
|
-
openapi_server/controllers/__init__.py
|
|
11
|
-
openapi_server/controllers/default_controller.py
|
|
12
|
-
openapi_server/controllers/security_controller.py
|
|
13
|
-
openapi_server/encoder.py
|
|
14
|
-
openapi_server/models/__init__.py
|
|
15
|
-
openapi_server/models/base_model.py
|
|
16
|
-
openapi_server/models/create_node200_response.py
|
|
17
|
-
openapi_server/models/create_node200_response_data.py
|
|
18
|
-
openapi_server/models/create_node_request.py
|
|
19
|
-
openapi_server/models/delete_node200_response.py
|
|
20
|
-
openapi_server/models/delete_node200_response_data.py
|
|
21
|
-
openapi_server/models/exec_node_method200_response.py
|
|
22
|
-
openapi_server/models/exec_node_method200_response_data.py
|
|
23
|
-
openapi_server/models/exec_node_method_request.py
|
|
24
|
-
openapi_server/models/exec_node_method_request_args_inner.py
|
|
25
|
-
openapi_server/models/exec_python_script200_response.py
|
|
26
|
-
openapi_server/models/exec_python_script200_response_data.py
|
|
27
|
-
openapi_server/models/exec_python_script200_response_data_result.py
|
|
28
|
-
openapi_server/models/exec_python_script_request.py
|
|
29
|
-
openapi_server/models/get_node_detail200_response.py
|
|
30
|
-
openapi_server/models/get_nodes200_response.py
|
|
31
|
-
openapi_server/models/get_nodes200_response_data.py
|
|
32
|
-
openapi_server/models/get_td_info200_response.py
|
|
33
|
-
openapi_server/models/get_td_info200_response_data.py
|
|
34
|
-
openapi_server/models/get_td_python_class_details200_response.py
|
|
35
|
-
openapi_server/models/get_td_python_classes200_response.py
|
|
36
|
-
openapi_server/models/get_td_python_classes200_response_data.py
|
|
37
|
-
openapi_server/models/td_node.py
|
|
38
|
-
openapi_server/models/td_node_family_type.py
|
|
39
|
-
openapi_server/models/td_python_class_details.py
|
|
40
|
-
openapi_server/models/td_python_class_info.py
|
|
41
|
-
openapi_server/models/td_python_method_info.py
|
|
42
|
-
openapi_server/models/td_python_property_info.py
|
|
43
|
-
openapi_server/models/update_node200_response.py
|
|
44
|
-
openapi_server/models/update_node200_response_data.py
|
|
45
|
-
openapi_server/models/update_node200_response_data_failed_inner.py
|
|
46
|
-
openapi_server/models/update_node_request.py
|
|
47
|
-
openapi_server/openapi/openapi.yaml
|
|
48
|
-
openapi_server/test/__init__.py
|
|
49
|
-
openapi_server/test/test_default_controller.py
|
|
50
|
-
openapi_server/typing_utils.py
|
|
51
|
-
openapi_server/util.py
|
|
52
|
-
requirements.txt
|
|
53
|
-
setup.py
|
|
54
|
-
test-requirements.txt
|
|
55
|
-
tox.ini
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
7.13.0
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# OpenAPI Generator Ignore
|
|
2
|
-
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
|
|
3
|
-
|
|
4
|
-
# Use this file to prevent files from being overwritten by the generator.
|
|
5
|
-
# The patterns follow closely to .gitignore or .dockerignore.
|
|
6
|
-
|
|
7
|
-
# As an example, the C# client generator defines ApiClient.cs.
|
|
8
|
-
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
|
|
9
|
-
#ApiClient.cs
|
|
10
|
-
|
|
11
|
-
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
|
|
12
|
-
#foo/*/qux
|
|
13
|
-
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
|
|
14
|
-
|
|
15
|
-
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
|
|
16
|
-
#foo/**/qux
|
|
17
|
-
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
|
|
18
|
-
|
|
19
|
-
# You can also negate patterns with an exclamation (!).
|
|
20
|
-
# For example, you can ignore all files in a docs folder with the file extension .md:
|
|
21
|
-
#docs/*.md
|
|
22
|
-
# Then explicitly reverse the ignore rule for a single file:
|
|
23
|
-
#!docs/README.md
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# ref: https://docs.travis-ci.com/user/languages/python
|
|
2
|
-
language: python
|
|
3
|
-
python:
|
|
4
|
-
- "3.2"
|
|
5
|
-
- "3.3"
|
|
6
|
-
- "3.4"
|
|
7
|
-
- "3.5"
|
|
8
|
-
- "3.6"
|
|
9
|
-
- "3.7"
|
|
10
|
-
- "3.8"
|
|
11
|
-
# command to install dependencies
|
|
12
|
-
install: "pip install -r requirements.txt"
|
|
13
|
-
# command to run tests
|
|
14
|
-
script: nosetests
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
FROM python:3-alpine
|
|
2
|
-
|
|
3
|
-
RUN mkdir -p /usr/src/app
|
|
4
|
-
WORKDIR /usr/src/app
|
|
5
|
-
|
|
6
|
-
COPY requirements.txt /usr/src/app/
|
|
7
|
-
|
|
8
|
-
RUN pip3 install --no-cache-dir -r requirements.txt
|
|
9
|
-
|
|
10
|
-
COPY . /usr/src/app
|
|
11
|
-
|
|
12
|
-
EXPOSE 8080
|
|
13
|
-
|
|
14
|
-
ENTRYPOINT ["python3"]
|
|
15
|
-
|
|
16
|
-
CMD ["-m", "openapi_server"]
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# OpenAPI generated server
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the
|
|
5
|
-
[OpenAPI-Spec](https://openapis.org) from a remote server, you can easily generate a server stub. This
|
|
6
|
-
is an example of building a OpenAPI-enabled Flask server.
|
|
7
|
-
|
|
8
|
-
This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask.
|
|
9
|
-
|
|
10
|
-
## Requirements
|
|
11
|
-
Python 3.5.2+
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
To run the server, please execute the following from the root directory:
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
pip3 install -r requirements.txt
|
|
18
|
-
python3 -m openapi_server
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
and open your browser to here:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
http://localhost:8080/ui/
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Your OpenAPI definition lives here:
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
http://localhost:8080/openapi.json
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
To launch the integration tests, use tox:
|
|
34
|
-
```
|
|
35
|
-
sudo pip install tox
|
|
36
|
-
tox
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Running with Docker
|
|
40
|
-
|
|
41
|
-
To run the server on a Docker container, please execute the following from the root directory:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
# building the image
|
|
45
|
-
docker build -t openapi_server .
|
|
46
|
-
|
|
47
|
-
# starting up a container
|
|
48
|
-
docker run -p 8080:8080 openapi_server
|
|
49
|
-
```
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
|
|
3
|
-
#
|
|
4
|
-
# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
|
|
5
|
-
|
|
6
|
-
git_user_id=$1
|
|
7
|
-
git_repo_id=$2
|
|
8
|
-
release_note=$3
|
|
9
|
-
git_host=$4
|
|
10
|
-
|
|
11
|
-
if [ "$git_host" = "" ]; then
|
|
12
|
-
git_host="github.com"
|
|
13
|
-
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
if [ "$git_user_id" = "" ]; then
|
|
17
|
-
git_user_id="GIT_USER_ID"
|
|
18
|
-
echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
|
|
19
|
-
fi
|
|
20
|
-
|
|
21
|
-
if [ "$git_repo_id" = "" ]; then
|
|
22
|
-
git_repo_id="GIT_REPO_ID"
|
|
23
|
-
echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
|
|
24
|
-
fi
|
|
25
|
-
|
|
26
|
-
if [ "$release_note" = "" ]; then
|
|
27
|
-
release_note="Minor update"
|
|
28
|
-
echo "[INFO] No command line input provided. Set \$release_note to $release_note"
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
# Initialize the local directory as a Git repository
|
|
32
|
-
git init
|
|
33
|
-
|
|
34
|
-
# Adds the files in the local repository and stages them for commit.
|
|
35
|
-
git add .
|
|
36
|
-
|
|
37
|
-
# Commits the tracked changes and prepares them to be pushed to a remote repository.
|
|
38
|
-
git commit -m "$release_note"
|
|
39
|
-
|
|
40
|
-
# Sets the new remote
|
|
41
|
-
git_remote=$(git remote)
|
|
42
|
-
if [ "$git_remote" = "" ]; then # git remote not defined
|
|
43
|
-
|
|
44
|
-
if [ "$GIT_TOKEN" = "" ]; then
|
|
45
|
-
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
|
|
46
|
-
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
|
|
47
|
-
else
|
|
48
|
-
git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
|
|
49
|
-
fi
|
|
50
|
-
|
|
51
|
-
fi
|
|
52
|
-
|
|
53
|
-
git pull origin master
|
|
54
|
-
|
|
55
|
-
# Pushes (Forces) the changes in the local repository up to the remote repository
|
|
56
|
-
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
|
|
57
|
-
git push origin master 2>&1 | grep -v 'To https'
|
|
File without changes
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
import connexion
|
|
4
|
-
|
|
5
|
-
from openapi_server import encoder
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def main():
|
|
9
|
-
app = connexion.App(__name__, specification_dir='./openapi/')
|
|
10
|
-
app.app.json_encoder = encoder.JSONEncoder
|
|
11
|
-
app.add_api('openapi.yaml',
|
|
12
|
-
arguments={'title': 'TouchDesigner API'},
|
|
13
|
-
pythonic_params=True)
|
|
14
|
-
|
|
15
|
-
app.run(port=8080)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if __name__ == '__main__':
|
|
19
|
-
main()
|
|
File without changes
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import connexion
|
|
2
|
-
from typing import Dict
|
|
3
|
-
from typing import Tuple
|
|
4
|
-
from typing import Union
|
|
5
|
-
|
|
6
|
-
from openapi_server.models.create_node200_response import CreateNode200Response # noqa: E501
|
|
7
|
-
from openapi_server.models.create_node_request import CreateNodeRequest # noqa: E501
|
|
8
|
-
from openapi_server.models.delete_node200_response import DeleteNode200Response # noqa: E501
|
|
9
|
-
from openapi_server.models.exec_node_method200_response import ExecNodeMethod200Response # noqa: E501
|
|
10
|
-
from openapi_server.models.exec_node_method_request import ExecNodeMethodRequest # noqa: E501
|
|
11
|
-
from openapi_server.models.exec_python_script200_response import ExecPythonScript200Response # noqa: E501
|
|
12
|
-
from openapi_server.models.exec_python_script_request import ExecPythonScriptRequest # noqa: E501
|
|
13
|
-
from openapi_server.models.get_node_detail200_response import GetNodeDetail200Response # noqa: E501
|
|
14
|
-
from openapi_server.models.get_nodes200_response import GetNodes200Response # noqa: E501
|
|
15
|
-
from openapi_server.models.get_td_info200_response import GetTdInfo200Response # noqa: E501
|
|
16
|
-
from openapi_server.models.get_td_python_class_details200_response import GetTdPythonClassDetails200Response # noqa: E501
|
|
17
|
-
from openapi_server.models.get_td_python_classes200_response import GetTdPythonClasses200Response # noqa: E501
|
|
18
|
-
from openapi_server.models.update_node200_response import UpdateNode200Response # noqa: E501
|
|
19
|
-
from openapi_server.models.update_node_request import UpdateNodeRequest # noqa: E501
|
|
20
|
-
from openapi_server import util
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def create_node(body): # noqa: E501
|
|
24
|
-
"""Create a new node
|
|
25
|
-
|
|
26
|
-
# noqa: E501
|
|
27
|
-
|
|
28
|
-
:param create_node_request:
|
|
29
|
-
:type create_node_request: dict | bytes
|
|
30
|
-
|
|
31
|
-
:rtype: Union[CreateNode200Response, Tuple[CreateNode200Response, int], Tuple[CreateNode200Response, int, Dict[str, str]]
|
|
32
|
-
"""
|
|
33
|
-
create_node_request = body
|
|
34
|
-
if connexion.request.is_json:
|
|
35
|
-
create_node_request = CreateNodeRequest.from_dict(connexion.request.get_json()) # noqa: E501
|
|
36
|
-
return 'do some magic!'
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def delete_node(node_path): # noqa: E501
|
|
40
|
-
"""Delete an existing node
|
|
41
|
-
|
|
42
|
-
# noqa: E501
|
|
43
|
-
|
|
44
|
-
:param node_path: Path to the node to delete. e.g., \"/project1/geo1\"
|
|
45
|
-
:type node_path: str
|
|
46
|
-
|
|
47
|
-
:rtype: Union[DeleteNode200Response, Tuple[DeleteNode200Response, int], Tuple[DeleteNode200Response, int, Dict[str, str]]
|
|
48
|
-
"""
|
|
49
|
-
return 'do some magic!'
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def exec_node_method(body): # noqa: E501
|
|
53
|
-
"""Call a method of the specified node
|
|
54
|
-
|
|
55
|
-
Call a method on the node at the specified path (e.g., /project1). This allows operations equivalent to TouchDesigner's Python API such as `parent_comp = op('/project1')` and `parent_comp.create('textTOP', 'myText')`. # noqa: E501
|
|
56
|
-
|
|
57
|
-
:param exec_node_method_request:
|
|
58
|
-
:type exec_node_method_request: dict | bytes
|
|
59
|
-
|
|
60
|
-
:rtype: Union[ExecNodeMethod200Response, Tuple[ExecNodeMethod200Response, int], Tuple[ExecNodeMethod200Response, int, Dict[str, str]]
|
|
61
|
-
"""
|
|
62
|
-
exec_node_method_request = body
|
|
63
|
-
if connexion.request.is_json:
|
|
64
|
-
exec_node_method_request = ExecNodeMethodRequest.from_dict(connexion.request.get_json()) # noqa: E501
|
|
65
|
-
return 'do some magic!'
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def exec_python_script(body): # noqa: E501
|
|
69
|
-
"""Execute python code on the server
|
|
70
|
-
|
|
71
|
-
Execute a Python script directly in TouchDesigner. Multiline scripts and scripts containing comments are supported. The script can optionally set a `result` variable to explicitly return a value. This endpoint allows you to interact with TouchDesigner nodes programmatically. # noqa: E501
|
|
72
|
-
|
|
73
|
-
:param exec_python_script_request:
|
|
74
|
-
:type exec_python_script_request: dict | bytes
|
|
75
|
-
|
|
76
|
-
:rtype: Union[ExecPythonScript200Response, Tuple[ExecPythonScript200Response, int], Tuple[ExecPythonScript200Response, int, Dict[str, str]]
|
|
77
|
-
"""
|
|
78
|
-
exec_python_script_request = body
|
|
79
|
-
if connexion.request.is_json:
|
|
80
|
-
exec_python_script_request = ExecPythonScriptRequest.from_dict(connexion.request.get_json()) # noqa: E501
|
|
81
|
-
return 'do some magic!'
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def get_node_detail(node_path): # noqa: E501
|
|
85
|
-
"""Get node detail
|
|
86
|
-
|
|
87
|
-
Retrieves detailed information about a specific node including its properties, parameters and connections # noqa: E501
|
|
88
|
-
|
|
89
|
-
:param node_path: Node path. e.g., \"/project1/textTOP\"
|
|
90
|
-
:type node_path: str
|
|
91
|
-
|
|
92
|
-
:rtype: Union[GetNodeDetail200Response, Tuple[GetNodeDetail200Response, int], Tuple[GetNodeDetail200Response, int, Dict[str, str]]
|
|
93
|
-
"""
|
|
94
|
-
return 'do some magic!'
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def get_nodes(parent_path, pattern=None, include_properties=None): # noqa: E501
|
|
98
|
-
"""Get nodes in the path
|
|
99
|
-
|
|
100
|
-
# noqa: E501
|
|
101
|
-
|
|
102
|
-
:param parent_path: Parent path e.g., \"/project1\"
|
|
103
|
-
:type parent_path: str
|
|
104
|
-
:param pattern: Pattern to match against node names e.g., \"null*\"
|
|
105
|
-
:type pattern: str
|
|
106
|
-
:param include_properties: Whether to include full node properties in the response (default false for better performance)
|
|
107
|
-
:type include_properties: bool
|
|
108
|
-
|
|
109
|
-
:rtype: Union[GetNodes200Response, Tuple[GetNodes200Response, int], Tuple[GetNodes200Response, int, Dict[str, str]]
|
|
110
|
-
"""
|
|
111
|
-
return 'do some magic!'
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
def get_td_info(): # noqa: E501
|
|
115
|
-
"""Get TouchDesigner information
|
|
116
|
-
|
|
117
|
-
Returns information about the TouchDesigner # noqa: E501
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
:rtype: Union[GetTdInfo200Response, Tuple[GetTdInfo200Response, int], Tuple[GetTdInfo200Response, int, Dict[str, str]]
|
|
121
|
-
"""
|
|
122
|
-
return 'do some magic!'
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
def get_td_python_class_details(class_name): # noqa: E501
|
|
126
|
-
"""Get details of a specific Python class or module
|
|
127
|
-
|
|
128
|
-
Returns detailed information about a specific Python class, module, or function including methods, properties, and documentation # noqa: E501
|
|
129
|
-
|
|
130
|
-
:param class_name: Name of the class or module. e.g., \"textTOP\"
|
|
131
|
-
:type class_name: str
|
|
132
|
-
|
|
133
|
-
:rtype: Union[GetTdPythonClassDetails200Response, Tuple[GetTdPythonClassDetails200Response, int], Tuple[GetTdPythonClassDetails200Response, int, Dict[str, str]]
|
|
134
|
-
"""
|
|
135
|
-
return 'do some magic!'
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
def get_td_python_classes(): # noqa: E501
|
|
139
|
-
"""Get a list of Python classes and modules
|
|
140
|
-
|
|
141
|
-
Returns a list of Python classes, modules, and functions available in TouchDesigner # noqa: E501
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
:rtype: Union[GetTdPythonClasses200Response, Tuple[GetTdPythonClasses200Response, int], Tuple[GetTdPythonClasses200Response, int, Dict[str, str]]
|
|
145
|
-
"""
|
|
146
|
-
return 'do some magic!'
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def update_node(body=None): # noqa: E501
|
|
150
|
-
"""Update node properties
|
|
151
|
-
|
|
152
|
-
# noqa: E501
|
|
153
|
-
|
|
154
|
-
:param update_node_request:
|
|
155
|
-
:type update_node_request: dict | bytes
|
|
156
|
-
|
|
157
|
-
:rtype: Union[UpdateNode200Response, Tuple[UpdateNode200Response, int], Tuple[UpdateNode200Response, int, Dict[str, str]]
|
|
158
|
-
"""
|
|
159
|
-
update_node_request = body
|
|
160
|
-
if connexion.request.is_json:
|
|
161
|
-
update_node_request = UpdateNodeRequest.from_dict(connexion.request.get_json()) # noqa: E501
|
|
162
|
-
return 'do some magic!'
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
from connexion.apps.flask_app import FlaskJSONEncoder
|
|
2
|
-
|
|
3
|
-
from openapi_server.models.base_model import Model
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class JSONEncoder(FlaskJSONEncoder):
|
|
7
|
-
include_nulls = False
|
|
8
|
-
|
|
9
|
-
def default(self, o):
|
|
10
|
-
if isinstance(o, Model):
|
|
11
|
-
dikt = {}
|
|
12
|
-
for attr in o.openapi_types:
|
|
13
|
-
value = getattr(o, attr)
|
|
14
|
-
if value is None and not self.include_nulls:
|
|
15
|
-
continue
|
|
16
|
-
attr = o.attribute_map[attr]
|
|
17
|
-
dikt[attr] = value
|
|
18
|
-
return dikt
|
|
19
|
-
return FlaskJSONEncoder.default(self, o)
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# flake8: noqa
|
|
2
|
-
# import models into model package
|
|
3
|
-
from openapi_server.models.create_node200_response import CreateNode200Response
|
|
4
|
-
from openapi_server.models.create_node200_response_data import CreateNode200ResponseData
|
|
5
|
-
from openapi_server.models.create_node_request import CreateNodeRequest
|
|
6
|
-
from openapi_server.models.delete_node200_response import DeleteNode200Response
|
|
7
|
-
from openapi_server.models.delete_node200_response_data import DeleteNode200ResponseData
|
|
8
|
-
from openapi_server.models.exec_node_method200_response import ExecNodeMethod200Response
|
|
9
|
-
from openapi_server.models.exec_node_method200_response_data import ExecNodeMethod200ResponseData
|
|
10
|
-
from openapi_server.models.exec_node_method_request import ExecNodeMethodRequest
|
|
11
|
-
from openapi_server.models.exec_node_method_request_args_inner import ExecNodeMethodRequestArgsInner
|
|
12
|
-
from openapi_server.models.exec_python_script200_response import ExecPythonScript200Response
|
|
13
|
-
from openapi_server.models.exec_python_script200_response_data import ExecPythonScript200ResponseData
|
|
14
|
-
from openapi_server.models.exec_python_script200_response_data_result import ExecPythonScript200ResponseDataResult
|
|
15
|
-
from openapi_server.models.exec_python_script_request import ExecPythonScriptRequest
|
|
16
|
-
from openapi_server.models.get_node_detail200_response import GetNodeDetail200Response
|
|
17
|
-
from openapi_server.models.get_nodes200_response import GetNodes200Response
|
|
18
|
-
from openapi_server.models.get_nodes200_response_data import GetNodes200ResponseData
|
|
19
|
-
from openapi_server.models.get_td_info200_response import GetTdInfo200Response
|
|
20
|
-
from openapi_server.models.get_td_info200_response_data import GetTdInfo200ResponseData
|
|
21
|
-
from openapi_server.models.get_td_python_class_details200_response import GetTdPythonClassDetails200Response
|
|
22
|
-
from openapi_server.models.get_td_python_classes200_response import GetTdPythonClasses200Response
|
|
23
|
-
from openapi_server.models.get_td_python_classes200_response_data import GetTdPythonClasses200ResponseData
|
|
24
|
-
from openapi_server.models.td_node import TdNode
|
|
25
|
-
from openapi_server.models.td_node_family_type import TdNodeFamilyType
|
|
26
|
-
from openapi_server.models.td_python_class_details import TdPythonClassDetails
|
|
27
|
-
from openapi_server.models.td_python_class_info import TdPythonClassInfo
|
|
28
|
-
from openapi_server.models.td_python_method_info import TdPythonMethodInfo
|
|
29
|
-
from openapi_server.models.td_python_property_info import TdPythonPropertyInfo
|
|
30
|
-
from openapi_server.models.update_node200_response import UpdateNode200Response
|
|
31
|
-
from openapi_server.models.update_node200_response_data import UpdateNode200ResponseData
|
|
32
|
-
from openapi_server.models.update_node200_response_data_failed_inner import UpdateNode200ResponseDataFailedInner
|
|
33
|
-
from openapi_server.models.update_node_request import UpdateNodeRequest
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import pprint
|
|
2
|
-
|
|
3
|
-
import typing
|
|
4
|
-
|
|
5
|
-
from openapi_server import util
|
|
6
|
-
|
|
7
|
-
T = typing.TypeVar('T')
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class Model:
|
|
11
|
-
# openapiTypes: The key is attribute name and the
|
|
12
|
-
# value is attribute type.
|
|
13
|
-
openapi_types: typing.Dict[str, type] = {}
|
|
14
|
-
|
|
15
|
-
# attributeMap: The key is attribute name and the
|
|
16
|
-
# value is json key in definition.
|
|
17
|
-
attribute_map: typing.Dict[str, str] = {}
|
|
18
|
-
|
|
19
|
-
@classmethod
|
|
20
|
-
def from_dict(cls: typing.Type[T], dikt) -> T:
|
|
21
|
-
"""Returns the dict as a model"""
|
|
22
|
-
return util.deserialize_model(dikt, cls)
|
|
23
|
-
|
|
24
|
-
def to_dict(self):
|
|
25
|
-
"""Returns the model properties as a dict
|
|
26
|
-
|
|
27
|
-
:rtype: dict
|
|
28
|
-
"""
|
|
29
|
-
result = {}
|
|
30
|
-
|
|
31
|
-
for attr in self.openapi_types:
|
|
32
|
-
value = getattr(self, attr)
|
|
33
|
-
if isinstance(value, list):
|
|
34
|
-
result[attr] = list(map(
|
|
35
|
-
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
|
|
36
|
-
value
|
|
37
|
-
))
|
|
38
|
-
elif hasattr(value, "to_dict"):
|
|
39
|
-
result[attr] = value.to_dict()
|
|
40
|
-
elif isinstance(value, dict):
|
|
41
|
-
result[attr] = dict(map(
|
|
42
|
-
lambda item: (item[0], item[1].to_dict())
|
|
43
|
-
if hasattr(item[1], "to_dict") else item,
|
|
44
|
-
value.items()
|
|
45
|
-
))
|
|
46
|
-
else:
|
|
47
|
-
result[attr] = value
|
|
48
|
-
|
|
49
|
-
return result
|
|
50
|
-
|
|
51
|
-
def to_str(self):
|
|
52
|
-
"""Returns the string representation of the model
|
|
53
|
-
|
|
54
|
-
:rtype: str
|
|
55
|
-
"""
|
|
56
|
-
return pprint.pformat(self.to_dict())
|
|
57
|
-
|
|
58
|
-
def __repr__(self):
|
|
59
|
-
"""For `print` and `pprint`"""
|
|
60
|
-
return self.to_str()
|
|
61
|
-
|
|
62
|
-
def __eq__(self, other):
|
|
63
|
-
"""Returns true if both objects are equal"""
|
|
64
|
-
return self.__dict__ == other.__dict__
|
|
65
|
-
|
|
66
|
-
def __ne__(self, other):
|
|
67
|
-
"""Returns true if both objects are not equal"""
|
|
68
|
-
return not self == other
|