flock-core 0.4.509__py3-none-any.whl → 0.4.510__py3-none-any.whl
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.
Potentially problematic release.
This version of flock-core might be problematic. Click here for more details.
- flock/core/logging/logging.py +2 -2
- flock/tools/__init__.py +0 -188
- flock/tools/zendesk_tools.py +52 -4
- {flock_core-0.4.509.dist-info → flock_core-0.4.510.dist-info}/METADATA +1 -1
- {flock_core-0.4.509.dist-info → flock_core-0.4.510.dist-info}/RECORD +8 -8
- {flock_core-0.4.509.dist-info → flock_core-0.4.510.dist-info}/WHEEL +0 -0
- {flock_core-0.4.509.dist-info → flock_core-0.4.510.dist-info}/entry_points.txt +0 -0
- {flock_core-0.4.509.dist-info → flock_core-0.4.510.dist-info}/licenses/LICENSE +0 -0
flock/core/logging/logging.py
CHANGED
|
@@ -250,7 +250,7 @@ loguru_logger.add(
|
|
|
250
250
|
colorize=True,
|
|
251
251
|
format=custom_format,
|
|
252
252
|
)
|
|
253
|
-
logging.basicConfig(level=LOG_LEVELS["
|
|
253
|
+
logging.basicConfig(level=LOG_LEVELS["ERROR"]) # Default to ERROR level for fallback
|
|
254
254
|
# Optionally add a file handler, e.g.:
|
|
255
255
|
# loguru_logger.add("logs/flock.log", rotation="100 MB", retention="30 days", level="DEBUG")
|
|
256
256
|
|
|
@@ -515,7 +515,7 @@ def get_logger(name: str = "flock") -> FlockLogger:
|
|
|
515
515
|
if name not in _LOGGER_CACHE:
|
|
516
516
|
# New loggers default to errors-only (min_level_severity = ERROR_SEVERITY)
|
|
517
517
|
# until explicitly configured by configure_logging()
|
|
518
|
-
_LOGGER_CACHE[name] = FlockLogger(name, LOG_LEVELS["
|
|
518
|
+
_LOGGER_CACHE[name] = FlockLogger(name, LOG_LEVELS["ERROR"])
|
|
519
519
|
# The min_level_severity state of existing or newly created loggers
|
|
520
520
|
# should be managed by the configure_logging() function.
|
|
521
521
|
return _LOGGER_CACHE[name]
|
flock/tools/__init__.py
CHANGED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
from .azure_tools import (
|
|
2
|
-
azure_search_create_index,
|
|
3
|
-
azure_search_create_vector_index,
|
|
4
|
-
azure_search_delete_documents,
|
|
5
|
-
azure_search_get_document,
|
|
6
|
-
azure_search_get_index_statistics,
|
|
7
|
-
azure_search_initialize_clients,
|
|
8
|
-
azure_search_list_indexes,
|
|
9
|
-
azure_search_query,
|
|
10
|
-
azure_search_upload_documents,
|
|
11
|
-
azure_storage_create_container,
|
|
12
|
-
azure_storage_delete_blob,
|
|
13
|
-
azure_storage_delete_container,
|
|
14
|
-
azure_storage_download_blob_to_bytes,
|
|
15
|
-
azure_storage_download_blob_to_file,
|
|
16
|
-
azure_storage_download_blob_to_text,
|
|
17
|
-
azure_storage_get_blob_properties,
|
|
18
|
-
azure_storage_list_blobs,
|
|
19
|
-
azure_storage_list_containers,
|
|
20
|
-
azure_storage_upload_blob_bytes,
|
|
21
|
-
azure_storage_upload_blob_from_file,
|
|
22
|
-
azure_storage_upload_blob_text,
|
|
23
|
-
)
|
|
24
|
-
from .code_tools import code_code_eval, code_evaluate_math
|
|
25
|
-
from .file_tools import (
|
|
26
|
-
file_get_anything_as_markdown,
|
|
27
|
-
file_json_parse_safe,
|
|
28
|
-
file_json_search,
|
|
29
|
-
file_read_from_file,
|
|
30
|
-
file_save_to_file,
|
|
31
|
-
)
|
|
32
|
-
from .github_tools import (
|
|
33
|
-
github_create_files,
|
|
34
|
-
github_create_user_stories_as_github_issue,
|
|
35
|
-
github_upload_readme,
|
|
36
|
-
)
|
|
37
|
-
from .markdown_tools import (
|
|
38
|
-
markdown_extract_code_blocks,
|
|
39
|
-
markdown_extract_links,
|
|
40
|
-
markdown_extract_tables,
|
|
41
|
-
markdown_split_by_headers,
|
|
42
|
-
markdown_to_plain_text,
|
|
43
|
-
)
|
|
44
|
-
from .text_tools import (
|
|
45
|
-
text_calculate_hash,
|
|
46
|
-
text_chunking_for_embedding,
|
|
47
|
-
text_clean_text,
|
|
48
|
-
text_count_tokens,
|
|
49
|
-
text_count_tokens_estimate,
|
|
50
|
-
text_count_words,
|
|
51
|
-
text_detect_language,
|
|
52
|
-
text_extract_json_from_text,
|
|
53
|
-
text_extract_keywords,
|
|
54
|
-
text_extract_numbers,
|
|
55
|
-
text_extract_urls,
|
|
56
|
-
text_format_chat_history,
|
|
57
|
-
text_format_table_from_dicts,
|
|
58
|
-
text_recursive_splitter,
|
|
59
|
-
text_split_by_characters,
|
|
60
|
-
text_split_by_sentences,
|
|
61
|
-
text_split_by_separator,
|
|
62
|
-
text_split_by_tokens,
|
|
63
|
-
text_split_code_by_functions,
|
|
64
|
-
text_tiktoken_split,
|
|
65
|
-
text_truncate_to_token_limit,
|
|
66
|
-
)
|
|
67
|
-
from .web_tools import (
|
|
68
|
-
web_content_as_markdown,
|
|
69
|
-
web_search_bing,
|
|
70
|
-
web_search_duckduckgo,
|
|
71
|
-
web_search_tavily,
|
|
72
|
-
)
|
|
73
|
-
from .zendesk_tools import (
|
|
74
|
-
zendesk_get_article_by_id,
|
|
75
|
-
zendesk_get_articles,
|
|
76
|
-
zendesk_get_comments_by_ticket_id,
|
|
77
|
-
zendesk_get_ticket_by_id,
|
|
78
|
-
zendesk_get_tickets,
|
|
79
|
-
zendesk_search_articles,
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
storage_tools = [
|
|
83
|
-
azure_storage_list_containers,
|
|
84
|
-
azure_storage_create_container,
|
|
85
|
-
azure_storage_delete_container,
|
|
86
|
-
azure_storage_list_blobs,
|
|
87
|
-
azure_storage_upload_blob_text,
|
|
88
|
-
azure_storage_upload_blob_bytes,
|
|
89
|
-
azure_storage_upload_blob_from_file,
|
|
90
|
-
azure_storage_download_blob_to_text,
|
|
91
|
-
azure_storage_download_blob_to_bytes,
|
|
92
|
-
azure_storage_download_blob_to_file,
|
|
93
|
-
azure_storage_delete_blob,
|
|
94
|
-
azure_storage_get_blob_properties,
|
|
95
|
-
]
|
|
96
|
-
|
|
97
|
-
azure_search_tools = [
|
|
98
|
-
azure_search_initialize_clients,
|
|
99
|
-
azure_search_create_index,
|
|
100
|
-
azure_search_upload_documents,
|
|
101
|
-
azure_search_query,
|
|
102
|
-
azure_search_get_document,
|
|
103
|
-
azure_search_delete_documents,
|
|
104
|
-
azure_search_list_indexes,
|
|
105
|
-
azure_search_get_index_statistics,
|
|
106
|
-
azure_search_create_vector_index,
|
|
107
|
-
]
|
|
108
|
-
|
|
109
|
-
file_tools_collection = [
|
|
110
|
-
file_get_anything_as_markdown,
|
|
111
|
-
file_save_to_file,
|
|
112
|
-
file_read_from_file,
|
|
113
|
-
file_json_parse_safe,
|
|
114
|
-
file_json_search,
|
|
115
|
-
]
|
|
116
|
-
|
|
117
|
-
code_tools_collection = [code_evaluate_math, code_code_eval]
|
|
118
|
-
|
|
119
|
-
web_tools_collection = [
|
|
120
|
-
web_content_as_markdown,
|
|
121
|
-
web_search_bing,
|
|
122
|
-
web_search_duckduckgo,
|
|
123
|
-
web_search_tavily,
|
|
124
|
-
]
|
|
125
|
-
|
|
126
|
-
github_tools_collection = [
|
|
127
|
-
github_create_user_stories_as_github_issue,
|
|
128
|
-
github_upload_readme,
|
|
129
|
-
github_create_files,
|
|
130
|
-
]
|
|
131
|
-
|
|
132
|
-
llm_processing_tools = [
|
|
133
|
-
text_split_by_sentences,
|
|
134
|
-
text_split_by_characters,
|
|
135
|
-
text_split_by_tokens,
|
|
136
|
-
text_split_by_separator,
|
|
137
|
-
text_recursive_splitter,
|
|
138
|
-
text_chunking_for_embedding,
|
|
139
|
-
text_split_code_by_functions,
|
|
140
|
-
text_count_tokens,
|
|
141
|
-
text_count_tokens_estimate,
|
|
142
|
-
text_truncate_to_token_limit,
|
|
143
|
-
text_extract_keywords,
|
|
144
|
-
text_clean_text,
|
|
145
|
-
text_format_chat_history,
|
|
146
|
-
text_extract_json_from_text,
|
|
147
|
-
text_calculate_hash,
|
|
148
|
-
text_format_table_from_dicts,
|
|
149
|
-
text_detect_language,
|
|
150
|
-
text_tiktoken_split,
|
|
151
|
-
text_count_words,
|
|
152
|
-
text_extract_urls,
|
|
153
|
-
text_extract_numbers,
|
|
154
|
-
]
|
|
155
|
-
|
|
156
|
-
markdown_processing_tools = [
|
|
157
|
-
markdown_split_by_headers,
|
|
158
|
-
markdown_extract_code_blocks,
|
|
159
|
-
markdown_extract_links,
|
|
160
|
-
markdown_extract_tables,
|
|
161
|
-
markdown_to_plain_text,
|
|
162
|
-
]
|
|
163
|
-
|
|
164
|
-
zendesk_tools_collection = [
|
|
165
|
-
zendesk_get_tickets,
|
|
166
|
-
zendesk_get_ticket_by_id,
|
|
167
|
-
zendesk_get_comments_by_ticket_id,
|
|
168
|
-
zendesk_get_article_by_id,
|
|
169
|
-
zendesk_get_articles,
|
|
170
|
-
zendesk_search_articles,
|
|
171
|
-
]
|
|
172
|
-
|
|
173
|
-
__all__ = [
|
|
174
|
-
"azure_search_tools",
|
|
175
|
-
"code_tools_collection",
|
|
176
|
-
"file_tools_collection",
|
|
177
|
-
"github_tools_collection",
|
|
178
|
-
"llm_processing_tools",
|
|
179
|
-
"markdown_processing_tools",
|
|
180
|
-
"storage_tools",
|
|
181
|
-
"web_tools_collection",
|
|
182
|
-
"zendesk_tools_collection",
|
|
183
|
-
]
|
|
184
|
-
|
|
185
|
-
# If there was existing content in __init__.py, this approach might overwrite it.
|
|
186
|
-
# A safer approach if __init__.py might exist and have other critical initializations
|
|
187
|
-
# would be to read it first, then append/modify.
|
|
188
|
-
# For now, assuming a fresh creation or simple __init__.py.
|
flock/tools/zendesk_tools.py
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
5
|
import httpx
|
|
6
|
+
from mcp.server.fastmcp import FastMCP
|
|
7
|
+
|
|
8
|
+
mcp = FastMCP("ZendeskTools")
|
|
9
|
+
|
|
6
10
|
|
|
7
11
|
ZENDESK_BEARER_TOKEN = os.getenv("ZENDESK_BEARER_TOKEN")
|
|
8
12
|
|
|
@@ -12,6 +16,7 @@ HEADERS = {
|
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
|
|
19
|
+
@mcp.tool()
|
|
15
20
|
def zendesk_get_tickets(number_of_tickets: int = 10) -> list[dict]:
|
|
16
21
|
"""Get all tickets."""
|
|
17
22
|
ZENDESK_SUBDOMAIN = os.getenv("ZENDESK_SUBDOMAIN_TICKET")
|
|
@@ -30,7 +35,7 @@ def zendesk_get_tickets(number_of_tickets: int = 10) -> list[dict]:
|
|
|
30
35
|
url = data.get("next_page")
|
|
31
36
|
return all_tickets
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
@mcp.tool()
|
|
34
39
|
def zendesk_get_ticket_by_id(ticket_id: str) -> dict:
|
|
35
40
|
"""Get a ticket by ID."""
|
|
36
41
|
ZENDESK_SUBDOMAIN = os.getenv("ZENDESK_SUBDOMAIN_TICKET")
|
|
@@ -41,7 +46,7 @@ def zendesk_get_ticket_by_id(ticket_id: str) -> dict:
|
|
|
41
46
|
response.raise_for_status()
|
|
42
47
|
return response.json()["ticket"]
|
|
43
48
|
|
|
44
|
-
|
|
49
|
+
@mcp.tool()
|
|
45
50
|
def zendesk_get_comments_by_ticket_id(ticket_id: str) -> list[dict]:
|
|
46
51
|
"""Get all comments for a ticket."""
|
|
47
52
|
ZENDESK_SUBDOMAIN = os.getenv("ZENDESK_SUBDOMAIN_TICKET")
|
|
@@ -52,7 +57,7 @@ def zendesk_get_comments_by_ticket_id(ticket_id: str) -> list[dict]:
|
|
|
52
57
|
response.raise_for_status()
|
|
53
58
|
return response.json()["comments"]
|
|
54
59
|
|
|
55
|
-
|
|
60
|
+
@mcp.tool()
|
|
56
61
|
def zendesk_get_article_by_id(article_id: str) -> dict:
|
|
57
62
|
"""Get an article by ID."""
|
|
58
63
|
ZENDESK_LOCALE = os.getenv("ZENDESK_ARTICLE_LOCALE")
|
|
@@ -66,7 +71,7 @@ def zendesk_get_article_by_id(article_id: str) -> dict:
|
|
|
66
71
|
response.raise_for_status()
|
|
67
72
|
return response.json()["article"]
|
|
68
73
|
|
|
69
|
-
|
|
74
|
+
@mcp.tool()
|
|
70
75
|
def zendesk_get_articles() -> list[dict]:
|
|
71
76
|
"""Get all articles."""
|
|
72
77
|
ZENDESK_LOCALE = os.getenv("ZENDESK_ARTICLE_LOCALE")
|
|
@@ -78,7 +83,45 @@ def zendesk_get_articles() -> list[dict]:
|
|
|
78
83
|
response.raise_for_status()
|
|
79
84
|
return response.json()["articles"]
|
|
80
85
|
|
|
86
|
+
@mcp.tool()
|
|
87
|
+
def zendesk_get_articles_count() -> int:
|
|
88
|
+
"""
|
|
89
|
+
Count every Help-Center article in the configured locale.
|
|
90
|
+
|
|
91
|
+
Uses cursor pagination (page[size]=100) because it’s faster and
|
|
92
|
+
has no 10 000-record ceiling. Falls back to offset pagination
|
|
93
|
+
if the account hasn’t been migrated yet.
|
|
94
|
+
"""
|
|
95
|
+
ZENDESK_LOCALE = os.getenv("ZENDESK_ARTICLE_LOCALE") # e.g. "en-us"
|
|
96
|
+
ZENDESK_SUBDOMAIN = os.getenv("ZENDESK_SUBDOMAIN_ARTICLE")
|
|
97
|
+
BASE_URL = f"https://{ZENDESK_SUBDOMAIN}.zendesk.com"
|
|
98
|
+
url = (
|
|
99
|
+
f"{BASE_URL}/api/v2/help_center/{ZENDESK_LOCALE}/articles.json"
|
|
100
|
+
"?page[size]=100" # max page size for HC APIs
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
total = 0
|
|
104
|
+
with httpx.Client(headers=HEADERS, timeout=30.0) as client:
|
|
105
|
+
while url:
|
|
106
|
+
resp = client.get(url)
|
|
107
|
+
resp.raise_for_status()
|
|
108
|
+
data = resp.json()
|
|
109
|
+
|
|
110
|
+
total += len(data.get("articles", []))
|
|
111
|
+
print(f"Locale: {ZENDESK_LOCALE}")
|
|
112
|
+
print(f"Number of articles: {total}")
|
|
113
|
+
|
|
114
|
+
# Cursor pagination (preferred)
|
|
115
|
+
if data.get("meta", {}).get("has_more"):
|
|
116
|
+
url = data.get("links", {}).get("next")
|
|
117
|
+
continue
|
|
118
|
+
|
|
119
|
+
# Offset pagination fallback
|
|
120
|
+
url = data.get("next_page")
|
|
121
|
+
|
|
122
|
+
return total
|
|
81
123
|
|
|
124
|
+
@mcp.tool()
|
|
82
125
|
def zendesk_search_articles(query: str) -> list[dict]:
|
|
83
126
|
"""Search Zendesk Help Center articles using a query string."""
|
|
84
127
|
ZENDESK_LOCALE = os.getenv("ZENDESK_ARTICLE_LOCALE") # e.g., "en-us"
|
|
@@ -97,3 +140,8 @@ def zendesk_search_articles(query: str) -> list[dict]:
|
|
|
97
140
|
response = client.get(url, params=params)
|
|
98
141
|
response.raise_for_status()
|
|
99
142
|
return response.json().get("results", [])
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
if __name__ == "__main__":
|
|
146
|
+
transport = os.getenv("ZENDESK_MCP_TRANSPORT", "stdio")
|
|
147
|
+
mcp.run(transport=transport)
|
|
@@ -52,7 +52,7 @@ flock/core/execution/local_executor.py,sha256=rnIQvaJOs6zZORUcR3vvyS6LPREDJTjayg
|
|
|
52
52
|
flock/core/execution/temporal_executor.py,sha256=dHcb0xuzPFWU_wbwTgI7glLNyyppei93Txs2sapjhaw,6283
|
|
53
53
|
flock/core/interpreter/python_interpreter.py,sha256=RaUMZuufsKBNQ4FAeSaOgUuxzs8VYu5TgUUs-xwaxxM,26376
|
|
54
54
|
flock/core/logging/__init__.py,sha256=xn5fC-8IgsdIv0ywe_cICK1KVhTrVD8t-jYORg0ETUA,155
|
|
55
|
-
flock/core/logging/logging.py,sha256
|
|
55
|
+
flock/core/logging/logging.py,sha256=-fYk4rv41LUbSLCzaSApg3cFTAk04bDR64-4ve-2mHk,19541
|
|
56
56
|
flock/core/logging/telemetry.py,sha256=Trssqx02SBovTL843YwY3L-ZGj3KvcfMHLMU7Syk8L0,6561
|
|
57
57
|
flock/core/logging/trace_and_logged.py,sha256=5vNrK1kxuPMoPJ0-QjQg-EDJL1oiEzvU6UNi6X8FiMs,2117
|
|
58
58
|
flock/core/logging/formatters/enum_builder.py,sha256=LgEYXUv84wK5vwHflZ5h8HBGgvLH3sByvUQe8tZiyY0,981
|
|
@@ -473,7 +473,7 @@ flock/themes/zenburn.toml,sha256=NxOAR3cx-Z9PVErEKHFZ6jsjfKBtPmfyN_vGSri5_qo,171
|
|
|
473
473
|
flock/themes/zenburned.toml,sha256=UEmquBbcAO3Zj652XKUwCsNoC2iQSlIh-q5c6DH-7Kc,1664
|
|
474
474
|
flock/themes/zenwritten-dark.toml,sha256=To5l6520_3UqAGiEumpzGWsHhXxqu9ThrMildXKgIO0,1669
|
|
475
475
|
flock/themes/zenwritten-light.toml,sha256=G1iEheCPfBNsMTGaVpEVpDzYBHA_T-MV27rolUYolmE,1666
|
|
476
|
-
flock/tools/__init__.py,sha256=
|
|
476
|
+
flock/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
477
477
|
flock/tools/azure_tools.py,sha256=OTJsb0B4l70GcD1W3ZMDHWd3X8nEnszhhz2sllD2z9E,30187
|
|
478
478
|
flock/tools/code_tools.py,sha256=CRDi3iIN4NQcgz4TJ4b-thFq7uXW_gIXPk-iEoWhF4E,1356
|
|
479
479
|
flock/tools/file_tools.py,sha256=zbXo5SxyKYLvrE7k3vLF5tGxCeuaeJtCCdWQ1fXJMAA,4626
|
|
@@ -482,7 +482,7 @@ flock/tools/markdown_tools.py,sha256=94fjGAJ5DEutoioD0ke-YRbxF6IWJQKuPVBLkNqdBo4
|
|
|
482
482
|
flock/tools/system_tools.py,sha256=IUB8MiSxtQH5ZfTGOck3vl4TKva8m1lfU4-W5D5b-4w,202
|
|
483
483
|
flock/tools/text_tools.py,sha256=mMQ8tkyYDxIorqqzl9ccGyWYjrSynYiYFIeP9qypfdg,22491
|
|
484
484
|
flock/tools/web_tools.py,sha256=Wl3qO5lKq4PYtmYahgeFGBQ8tDC0uKY4k9A1Zn-MqFw,2588
|
|
485
|
-
flock/tools/zendesk_tools.py,sha256=
|
|
485
|
+
flock/tools/zendesk_tools.py,sha256=e7KMfHVl7wGbstwdz9CvoChyuoZfpS9n4TEtvrxawgI,5162
|
|
486
486
|
flock/webapp/__init__.py,sha256=YtRbbyciN3Z2oMB9fdXZuvM3e49R8m2mY5qHLDoapRA,37
|
|
487
487
|
flock/webapp/run.py,sha256=Ekg-mQSl7RUDJAEDTBJMIlLyvhWqWPMjg8hPqmgFREE,8945
|
|
488
488
|
flock/webapp/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -554,8 +554,8 @@ flock/workflow/agent_execution_activity.py,sha256=Gy6FtuVAjf0NiUXmC3syS2eJpNQF4R
|
|
|
554
554
|
flock/workflow/flock_workflow.py,sha256=iSUF_soFvWar0ffpkzE4irkDZRx0p4HnwmEBi_Ne2sY,9666
|
|
555
555
|
flock/workflow/temporal_config.py,sha256=3_8O7SDEjMsSMXsWJBfnb6XTp0TFaz39uyzSlMTSF_I,3988
|
|
556
556
|
flock/workflow/temporal_setup.py,sha256=YIHnSBntzOchHfMSh8hoLeNXrz3B1UbR14YrR6soM7A,1606
|
|
557
|
-
flock_core-0.4.
|
|
558
|
-
flock_core-0.4.
|
|
559
|
-
flock_core-0.4.
|
|
560
|
-
flock_core-0.4.
|
|
561
|
-
flock_core-0.4.
|
|
557
|
+
flock_core-0.4.510.dist-info/METADATA,sha256=dvIk6QrWRGCj3KgVkZWt6Lzi_d5eoAGbM_zRZLlLlnA,22584
|
|
558
|
+
flock_core-0.4.510.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
559
|
+
flock_core-0.4.510.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
|
|
560
|
+
flock_core-0.4.510.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
|
|
561
|
+
flock_core-0.4.510.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|