dagster-dingtalk 0.1.29a1__tar.gz → 0.1.30__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.
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/workspace.xml +66 -18
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/PKG-INFO +2 -2
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/pyproject.toml +2 -2
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/src/dagster_dingtalk/app_client.py +20 -13
- dagster_dingtalk-0.1.30/test.py +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.gitignore +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/.gitignore +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/dagster-dingtalk.iml +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/deployment.xml +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/dictionaries/admin.xml +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/inspectionProfiles/Project_Default.xml +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/misc.xml +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/modules.xml +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/vcs.xml +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.python-version +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/README.md +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/src/dagster_dingtalk/__init__.py +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/src/dagster_dingtalk/operations.py +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/src/dagster_dingtalk/py.typed +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/src/dagster_dingtalk/resources.py +0 -0
- {dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/src/dagster_dingtalk/version.py +0 -0
@@ -4,7 +4,10 @@
|
|
4
4
|
<option name="autoReloadType" value="SELECTIVE" />
|
5
5
|
</component>
|
6
6
|
<component name="ChangeListManager">
|
7
|
-
<list default="true" id="d56e898e-6e80-4770-9a14-5869f3cdca54" name="更改" comment="
|
7
|
+
<list default="true" id="d56e898e-6e80-4770-9a14-5869f3cdca54" name="更改" comment="修复:线程锁死锁问题">
|
8
|
+
<change beforePath="$PROJECT_DIR$/pyproject.toml" beforeDir="false" afterPath="$PROJECT_DIR$/pyproject.toml" afterDir="false" />
|
9
|
+
<change beforePath="$PROJECT_DIR$/src/dagster_dingtalk/app_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/dagster_dingtalk/app_client.py" afterDir="false" />
|
10
|
+
</list>
|
8
11
|
<option name="SHOW_DIALOG" value="false" />
|
9
12
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
10
13
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
@@ -14,6 +17,7 @@
|
|
14
17
|
<option name="RECENT_TEMPLATES">
|
15
18
|
<list>
|
16
19
|
<option value="Python Script" />
|
20
|
+
<option value="Python Unit Test" />
|
17
21
|
</list>
|
18
22
|
</option>
|
19
23
|
</component>
|
@@ -43,22 +47,23 @@
|
|
43
47
|
<option name="hideEmptyMiddlePackages" value="true" />
|
44
48
|
<option name="showLibraryContents" value="true" />
|
45
49
|
</component>
|
46
|
-
<component name="PropertiesComponent"
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
50
|
+
<component name="PropertiesComponent"><![CDATA[{
|
51
|
+
"keyToString": {
|
52
|
+
"Python.test.executor": "Run",
|
53
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
54
|
+
"RunOnceActivity.git.unshallow": "true",
|
55
|
+
"git-widget-placeholder": "master",
|
56
|
+
"ignore.virus.scanning.warn.message": "true",
|
57
|
+
"last_opened_file_path": "M:/dagster",
|
58
|
+
"node.js.detected.package.eslint": "true",
|
59
|
+
"node.js.detected.package.tslint": "true",
|
60
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
61
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
62
|
+
"nodejs_package_manager_path": "npm",
|
63
|
+
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
|
64
|
+
"vue.rearranger.settings.migration": "true"
|
60
65
|
}
|
61
|
-
}
|
66
|
+
}]]></component>
|
62
67
|
<component name="RecentsManager">
|
63
68
|
<key name="CopyFile.RECENT_KEYS">
|
64
69
|
<recent name="C:\Users\admin\PycharmProjects\dagster-dingtalk\dagster-dingtalk\src\dagster_dingtalk" />
|
@@ -70,6 +75,36 @@
|
|
70
75
|
<recent name="C:\Users\admin\PycharmProjects\dagster-dingtalk\dagster-dingtalk\src\dagster_dingtalk" />
|
71
76
|
</key>
|
72
77
|
</component>
|
78
|
+
<component name="RunManager">
|
79
|
+
<configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
80
|
+
<module name="dagster-dingtalk" />
|
81
|
+
<option name="ENV_FILES" value="" />
|
82
|
+
<option name="INTERPRETER_OPTIONS" value="" />
|
83
|
+
<option name="PARENT_ENVS" value="true" />
|
84
|
+
<envs>
|
85
|
+
<env name="PYTHONUNBUFFERED" value="1" />
|
86
|
+
</envs>
|
87
|
+
<option name="SDK_HOME" value="" />
|
88
|
+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
89
|
+
<option name="IS_MODULE_SDK" value="true" />
|
90
|
+
<option name="ADD_CONTENT_ROOTS" value="true" />
|
91
|
+
<option name="ADD_SOURCE_ROOTS" value="true" />
|
92
|
+
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
93
|
+
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/test.py" />
|
94
|
+
<option name="PARAMETERS" value="" />
|
95
|
+
<option name="SHOW_COMMAND_LINE" value="false" />
|
96
|
+
<option name="EMULATE_TERMINAL" value="false" />
|
97
|
+
<option name="MODULE_MODE" value="false" />
|
98
|
+
<option name="REDIRECT_INPUT" value="false" />
|
99
|
+
<option name="INPUT_FILE" value="" />
|
100
|
+
<method v="2" />
|
101
|
+
</configuration>
|
102
|
+
<recent_temporary>
|
103
|
+
<list>
|
104
|
+
<item itemvalue="Python.test" />
|
105
|
+
</list>
|
106
|
+
</recent_temporary>
|
107
|
+
</component>
|
73
108
|
<component name="SharedIndexes">
|
74
109
|
<attachedChunks>
|
75
110
|
<set>
|
@@ -92,6 +127,7 @@
|
|
92
127
|
<workItem from="1739478013799" duration="20000" />
|
93
128
|
<workItem from="1739478384641" duration="3306000" />
|
94
129
|
<workItem from="1739521248423" duration="1733000" />
|
130
|
+
<workItem from="1739562869457" duration="2403000" />
|
95
131
|
</task>
|
96
132
|
<task id="LOCAL-00001" summary="更改目录结构以便于使用 uv 构建和发布包">
|
97
133
|
<option name="closed" value="true" />
|
@@ -117,7 +153,15 @@
|
|
117
153
|
<option name="project" value="LOCAL" />
|
118
154
|
<updated>1739480448632</updated>
|
119
155
|
</task>
|
120
|
-
<
|
156
|
+
<task id="LOCAL-00004" summary="修复:线程锁死锁问题">
|
157
|
+
<option name="closed" value="true" />
|
158
|
+
<created>1739564430669</created>
|
159
|
+
<option name="number" value="00004" />
|
160
|
+
<option name="presentableId" value="LOCAL-00004" />
|
161
|
+
<option name="project" value="LOCAL" />
|
162
|
+
<updated>1739564430669</updated>
|
163
|
+
</task>
|
164
|
+
<option name="localTasksCounter" value="5" />
|
121
165
|
<servers />
|
122
166
|
</component>
|
123
167
|
<component name="TypeScriptGeneratedFilesManager">
|
@@ -127,6 +171,10 @@
|
|
127
171
|
<MESSAGE value="更改目录结构以便于使用 uv 构建和发布包" />
|
128
172
|
<MESSAGE value="修复相对路径引用问题" />
|
129
173
|
<MESSAGE value="新增[待办任务]API" />
|
130
|
-
<
|
174
|
+
<MESSAGE value="修复:线程锁死锁问题" />
|
175
|
+
<option name="LAST_COMMIT_MESSAGE" value="修复:线程锁死锁问题" />
|
176
|
+
</component>
|
177
|
+
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
178
|
+
<SUITE FILE_PATH="coverage/dagster_dingtalk$test.coverage" NAME="test 覆盖结果" MODIFIED="1739565257857" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
131
179
|
</component>
|
132
180
|
</project>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dagster-dingtalk
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.30
|
4
4
|
Summary: A dagster plugin for the DingTalk
|
5
5
|
Author-email: YiZixuan <sqkkyzx@qq.com>
|
6
6
|
Requires-Python: >=3.11
|
7
|
-
Requires-Dist: dagster
|
7
|
+
Requires-Dist: dagster==1.10.0
|
8
8
|
Requires-Dist: httpx
|
9
9
|
Requires-Dist: pydantic
|
10
10
|
Description-Content-Type: text/markdown
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "dagster-dingtalk"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.30"
|
4
4
|
description = "A dagster plugin for the DingTalk"
|
5
5
|
readme = "README.md"
|
6
6
|
authors = [
|
@@ -10,7 +10,7 @@ requires-python = ">=3.11"
|
|
10
10
|
dependencies = [
|
11
11
|
"httpx",
|
12
12
|
"pydantic",
|
13
|
-
"dagster"
|
13
|
+
"dagster==1.10.0"
|
14
14
|
]
|
15
15
|
|
16
16
|
[build-system]
|
@@ -48,10 +48,17 @@ class DingTalkClient:
|
|
48
48
|
|
49
49
|
|
50
50
|
def __init_clients(self):
|
51
|
-
self.__oapi_client = httpx.Client(
|
52
|
-
|
53
|
-
|
51
|
+
self.__oapi_client = httpx.Client(
|
52
|
+
base_url="https://oapi.dingtalk.com/",
|
53
|
+
timeout=httpx.Timeout(60.0),
|
54
|
+
limits=httpx.Limits(max_connections=100),
|
55
|
+
)
|
54
56
|
|
57
|
+
self.__api_client = httpx.Client(
|
58
|
+
base_url="https://api.dingtalk.com/",
|
59
|
+
timeout=httpx.Timeout(10.0),
|
60
|
+
limits=httpx.Limits(max_connections=100),
|
61
|
+
)
|
55
62
|
|
56
63
|
def __file_cache_read(self) -> dict:
|
57
64
|
if self.__access_token_file_cache.exists():
|
@@ -64,13 +71,12 @@ class DingTalkClient:
|
|
64
71
|
else:
|
65
72
|
return {}
|
66
73
|
|
67
|
-
def __file_cache_write(self):
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
logging.error(f"AccessToken 缓存写入失败: {e}")
|
74
|
+
def __file_cache_write(self, access_token_cache: dict):
|
75
|
+
try:
|
76
|
+
with open(self.__access_token_file_cache, 'wb') as f:
|
77
|
+
f.write(pickle.dumps(access_token_cache))
|
78
|
+
except Exception as e:
|
79
|
+
logging.error(f"AccessToken 缓存写入失败: {e}")
|
74
80
|
|
75
81
|
def __get_access_token(self) -> str:
|
76
82
|
with self.__token_lock:
|
@@ -87,16 +93,17 @@ class DingTalkClient:
|
|
87
93
|
json={"appKey": self.__client_id, "appSecret": self.__client_secret},
|
88
94
|
).json()
|
89
95
|
# 提前 1 分钟进行续期
|
90
|
-
|
96
|
+
access_token_cache = {
|
91
97
|
"access_token": response.get("accessToken"),
|
92
98
|
"expire_in": response.get("expireIn") + int(time.time()) - 60
|
93
99
|
}
|
94
|
-
self.
|
100
|
+
self.__access_token_cache = access_token_cache
|
101
|
+
self.__file_cache_write(self.__access_token_cache)
|
95
102
|
except Exception as e:
|
96
103
|
logging.error(f"AccessToken 获取失败: {e}")
|
97
104
|
raise
|
98
105
|
|
99
|
-
return
|
106
|
+
return access_token_cache["access_token"]
|
100
107
|
|
101
108
|
def oapi(self, method: str, path: str, **kwargs) -> httpx.Response:
|
102
109
|
params = kwargs.get("params", {})
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/inspectionProfiles/Project_Default.xml
RENAMED
File without changes
|
{dagster_dingtalk-0.1.29a1 → dagster_dingtalk-0.1.30}/.idea/inspectionProfiles/profiles_settings.xml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|