-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathsetup.py
More file actions
141 lines (118 loc) · 6.87 KB
/
setup.py
File metadata and controls
141 lines (118 loc) · 6.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# coding=utf-8
#
# This is not an installer script!
# If you're trying to install OctoApp for Klipper, you want to use the ./install.sh script!
#
# This PY script is required for the OctoPrint plugin install process.
#
# If you need help, feel free to contact us at hello@octoapp.eu
#
# The plugin's identifier, has to be unique
plugin_identifier = "octoapp"
# The plugin's python package, should be "octoprint_<plugin identifier>", has to be unique
plugin_package = "octoprint_octoapp"
# The plugin's human readable name. Can be overwritten within OctoPrint's internal data via __plugin_name__ in the
# plugin module
plugin_name = "OctoApp"
# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
# Note that this is also parsed by the moonraker module to pull the version, so the string and format must remain the same!
plugin_version = "3.1.0"
# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
# module
plugin_description = """The Companion Plugin for OctoApp"""
# The plugin's author. Can be overwritten within OctoPrint's internal data via __plugin_author__ in the plugin module
plugin_author = "Christian Würthner"
# The plugin's author's mail address.
plugin_author_email = "hello@octoapp.eu"
# The plugin's homepage URL. Can be overwritten within OctoPrint's internal data via __plugin_url__ in the plugin module
plugin_url = "https://github.com/crysxd/OctoApp-Plugin/"
# The plugin's license. Can be overwritten within OctoPrint's internal data via __plugin_license__ in the plugin module
plugin_license = "AGPLv3"
# Any additional requirements besides OctoPrint should be listed here.
#
# On 4/13/2023 we updated to only support PY3, which frees us up from a lot of package issues. A lot the packages we depend on only support PY3 now.
#
# octowebsocket_client
# We forked this package so we could add a flag to disable websocket frame masking when sending messages, which got us a 30% CPU reduction.
# For a full list of changes, reasons, and version details, see the repo readme.md
# For the source lib, we must be on version 1.6 due to a bug before that version.
# We also must remain compatible with Python 3.7 for the Sonic pad. For now we are pulling the latest changes and fixing any 3.7 issues.
# dnspython
# We depend on a feature that was released with 2.3.0, so we need to require at least that.
# For the same reason as websocket_client for the sonic pad, we also need to include at least 2.3.0, since 2.3.0 is the last version to support python 3.7.8.
# urllib3
# There is a bug with parsing headers in versions older than 1.26.? (https://github.com/diyan/pywinrm/issues/269). At least 1.26.6 fixes it, ubt we decide to just stick with a newer version.
# The sonic pad can't support anything newer than 2.0.0, so we need to stay below that. But we moved the sonic pad to it's own requirements file, so we can go higher.
#
# Other lib version notes:
# pillow - We don't require a version of pillow because we don't want to mess with other plugins and we use basic, long lived APIs.\
# certifi - We use to keep certs on the device that we need for let's encrypt. So we want to keep it fresh.
# rsa - OctoPrint 1.5.3 requires RAS>=4.0, so we must leave it at 4.0.
# httpx - Is an asyncio http lib. It seems to be required by dnspython, but dnspython doesn't enforce it.
# sentry-sdk - We don't use Sentry right now, so we disabled it. It was conflicting with the new OctoPrint RC, so if we add it back, we need to address that.
#
# Note! These also need to stay in sync with requirements.txt, for the most part they should be the exact same!
plugin_requires = [
"octowebsocket_client==1.8.3",
"requests>=2.31.0",
"octoflatbuffers==24.3.27",
"pillow",
"certifi>=2025.1.31",
"pycryptodome>=3.15.0",
"rsa>=4.9",
"dnspython>=2.3.0",
"httpx>=0.24.1",
"urllib3>=2.0.0",
#"sentry-sdk>=TODO",
#"zstandard" - optional lib see notes
]
### --------------------------------------------------------------------------------------------------------------------
### More advanced options that you usually shouldn't have to touch follow after this point
### --------------------------------------------------------------------------------------------------------------------
# Additional package data to install for this plugin. The sub folders "templates", "static" and "translations" will
# already be installed automatically if they exist. Note that if you add something here you'll also need to update
# MANIFEST.in to match to ensure that python setup.py sdist produces a source distribution that contains all your
# files. This is sadly due to how python's setup.py works, see also http://stackoverflow.com/a/14159430/2028598
plugin_additional_data = []
# Any additional python packages you need to install with your plugin that are not contained in <plugin_package>.*
# For OctoApp, we need to include or common packages shared between hosts, so OctoPrint copies them into the package folder as well.
plugin_additional_packages = [ "octoapp", "octoapp.Proto" ]
# Any python packages within <plugin_package>.* you do NOT want to install with your plugin
plugin_ignored_packages = []
# Additional parameters for the call to setuptools.setup. If your plugin wants to register additional entry points,
# define dependency links or other things like that, this is the place to go. Will be merged recursively with the
# default setup parameters as provided by octoprint_setuptools.create_plugin_setup_parameters using
# octoprint.util.dict_merge.
#
# Example:
# plugin_requires = ["someDependency==dev"]
# additional_setup_parameters = {"dependency_links": ["https://github.com/someUser/someRepo/archive/master.zip#egg=someDependency-dev"]}
additional_setup_parameters = {}
########################################################################################################################
from setuptools import setup
try:
import octoprint_setuptools
except Exception as e:
print(f"Could not import OctoPrint's setuptools: {e}. Are you sure you are running that under "
"the same python installation that OctoPrint is installed under?")
import sys
sys.exit(-1)
setup_parameters = octoprint_setuptools.create_plugin_setup_parameters( #pyright: ignore[reportUnknownMemberType] octoprint is non-typed
identifier=plugin_identifier,
package=plugin_package,
name=plugin_name,
version=plugin_version,
description=plugin_description,
author=plugin_author,
mail=plugin_author_email,
url=plugin_url,
license=plugin_license,
requires=plugin_requires,
additional_packages=plugin_additional_packages,
ignored_packages=plugin_ignored_packages,
additional_data=plugin_additional_data
)
if len(additional_setup_parameters):
from octoprint.util import dict_merge
setup_parameters = dict_merge(setup_parameters, additional_setup_parameters)
setup(**setup_parameters)