openrewrite-remote 0.14.0__py3-none-any.whl → 0.15.0__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.
- {openrewrite_remote-0.14.0.dist-info → openrewrite_remote-0.15.0.dist-info}/METADATA +2 -2
- {openrewrite_remote-0.14.0.dist-info → openrewrite_remote-0.15.0.dist-info}/RECORD +6 -6
- {openrewrite_remote-0.14.0.dist-info → openrewrite_remote-0.15.0.dist-info}/WHEEL +1 -1
- rewrite_remote/server.py +31 -29
- {openrewrite_remote-0.14.0.dist-info → openrewrite_remote-0.15.0.dist-info}/entry_points.txt +0 -0
- {openrewrite_remote-0.14.0.dist-info → openrewrite_remote-0.15.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: openrewrite-remote
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.15.0
|
4
4
|
Summary: Remoting functionality for the OpenRewrite library.
|
5
5
|
Author-email: "Moderne Inc." <support@moderne.io>
|
6
6
|
License: Moderne, Inc. Commercial License
|
@@ -5,7 +5,7 @@ rewrite_remote/receiver.py,sha256=b2jMNwTfnWM0oDNjJQSWV1z_ahJ0kDZEXYdwNc4riIw,20
|
|
5
5
|
rewrite_remote/remote_utils.py,sha256=gU9hN-aHxy9NF4uRqjd4OhvgPrNfDyCt3y1PtrWMCgA,10677
|
6
6
|
rewrite_remote/remoting.py,sha256=yS2sYMPPBq0gt1xalmCTLbH4VXbBqNl-EXj8ZfgA5UM,13525
|
7
7
|
rewrite_remote/sender.py,sha256=PXX0hrmeHKEge_7qWEMqNn4KYleDrFUQqhBDWTq1pus,18993
|
8
|
-
rewrite_remote/server.py,sha256=
|
8
|
+
rewrite_remote/server.py,sha256=0-Y0e2eoXZctVELWK0M1VfsV8pPGFxwmzAL35dWb47E,9576
|
9
9
|
rewrite_remote/type_utils.py,sha256=qzQ2X97U8yRskjOo3F5qcFVebW2bPYFU32EpCKL-KNU,4400
|
10
10
|
rewrite_remote/handlers/__init__.py,sha256=ED6jHcYiuYpr_0vjGz0zx2lrrmJT9sDJCzIljoDfmlM,65
|
11
11
|
rewrite_remote/handlers/handler_helpers.py,sha256=xvAKAVGH56Hrjp9sbilp4v1a2_ra0L63YjXurF5K5o0,512
|
@@ -17,8 +17,8 @@ rewrite_remote/handlers/pypi_manager.py,sha256=XulTdZUm5aTme7Qn-jaUvlgO6N9bKS03U
|
|
17
17
|
rewrite_remote/handlers/recipe_install_handler.py,sha256=SsY7oXEJqE3mKUM_msnV0i-aUXmeUWpYjq_121ui3Z8,4920
|
18
18
|
rewrite_remote/handlers/run_recipe_load_and_visitor_handler.py,sha256=BmsKjV38LenewWvun8cknGk_oR3GoinmmsXtWKUWUak,4085
|
19
19
|
rewrite_remote/handlers/types.py,sha256=5TK_oFp-7iy1iACWisuQJsa_WHTsqcPrV9nQTZ-_xgo,518
|
20
|
-
openrewrite_remote-0.
|
21
|
-
openrewrite_remote-0.
|
22
|
-
openrewrite_remote-0.
|
23
|
-
openrewrite_remote-0.
|
24
|
-
openrewrite_remote-0.
|
20
|
+
openrewrite_remote-0.15.0.dist-info/METADATA,sha256=N19AOSrTQ4rSurzMUOfn4YBg0caA-a5fNMRPzy9H0VI,386
|
21
|
+
openrewrite_remote-0.15.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
22
|
+
openrewrite_remote-0.15.0.dist-info/entry_points.txt,sha256=SMukuF7TPjQr3IZIcH8f98-_QBCqYSbYXYrVv-5UzRI,69
|
23
|
+
openrewrite_remote-0.15.0.dist-info/top_level.txt,sha256=ansTioSZ-62aH3F2L3d1Bua0pJF4GOtgQ1PpG-CzcP0,15
|
24
|
+
openrewrite_remote-0.15.0.dist-info/RECORD,,
|
rewrite_remote/server.py
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# type: ignore
|
2
2
|
import importlib
|
3
3
|
import importlib.resources
|
4
|
+
import logging
|
4
5
|
import os
|
6
|
+
import select
|
5
7
|
import socket
|
6
8
|
import sys
|
7
9
|
import time
|
@@ -10,21 +12,7 @@ import zipfile
|
|
10
12
|
from io import BytesIO, StringIO
|
11
13
|
|
12
14
|
import cbor2
|
13
|
-
import select
|
14
15
|
from cbor2 import dumps
|
15
|
-
from rewrite import (
|
16
|
-
ParserInput,
|
17
|
-
InMemoryExecutionContext,
|
18
|
-
ExecutionContext,
|
19
|
-
ParseError,
|
20
|
-
Recipe,
|
21
|
-
)
|
22
|
-
from rewrite.java.remote import *
|
23
|
-
from rewrite.python import Py
|
24
|
-
from rewrite.python.parser import PythonParserBuilder
|
25
|
-
from rewrite.python.remote.receiver import PythonReceiver
|
26
|
-
from rewrite.python.remote.sender import PythonSender
|
27
|
-
|
28
16
|
from rewrite_remote.handlers.hello_world_handler import hello_world_handler
|
29
17
|
from rewrite_remote.handlers.list_projects_handler import list_projects_handler
|
30
18
|
from rewrite_remote.handlers.parse_project_sources_handler import (
|
@@ -37,20 +25,40 @@ from rewrite_remote.handlers.recipe_install_handler import (
|
|
37
25
|
from rewrite_remote.handlers.run_recipe_load_and_visitor_handler import (
|
38
26
|
run_recipe_load_and_visitor_handler,
|
39
27
|
)
|
40
|
-
from rewrite_remote.receiver import ReceiverContext
|
41
28
|
from rewrite_remote.remoting import (
|
42
29
|
RemotePrinterFactory,
|
43
30
|
RemotingContext,
|
44
31
|
RemotingMessageType,
|
45
32
|
RemotingMessenger,
|
46
33
|
)
|
47
|
-
from rewrite_remote.sender import ParseErrorSender
|
34
|
+
from rewrite_remote.sender import ParseErrorSender
|
35
|
+
|
36
|
+
from rewrite import (
|
37
|
+
ParserInput,
|
38
|
+
InMemoryExecutionContext,
|
39
|
+
ExecutionContext,
|
40
|
+
ParseError,
|
41
|
+
Recipe,
|
42
|
+
)
|
43
|
+
from rewrite.java.remote import *
|
44
|
+
from rewrite.python import Py
|
45
|
+
from rewrite.python.parser import PythonParserBuilder
|
46
|
+
from rewrite.python.remote.receiver import PythonReceiver
|
47
|
+
from rewrite.python.remote.sender import PythonSender
|
48
48
|
|
49
49
|
INACTIVITY_TIMEOUT = 300 # 5 minutes
|
50
50
|
_OK: int = 0
|
51
51
|
_ERROR: int = 1
|
52
52
|
|
53
53
|
|
54
|
+
# Configure logging
|
55
|
+
logging.basicConfig(
|
56
|
+
level=logging.DEBUG,
|
57
|
+
format='%(asctime)s - %(levelname)s - %(message)s',
|
58
|
+
)
|
59
|
+
logger = logging.getLogger('server')
|
60
|
+
logger.setLevel(logging.DEBUG)
|
61
|
+
|
54
62
|
def register_remoting_factories() -> None:
|
55
63
|
SenderContext.register(ParseError, ParseErrorSender)
|
56
64
|
SenderContext.register(Py, PythonSender)
|
@@ -109,7 +117,7 @@ class Server:
|
|
109
117
|
with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s:
|
110
118
|
s.bind(self._path)
|
111
119
|
s.listen()
|
112
|
-
|
120
|
+
logger.info(f"Server listening on Unix domain socket: {self._path}")
|
113
121
|
while True:
|
114
122
|
conn, _ = s.accept()
|
115
123
|
with conn:
|
@@ -119,7 +127,7 @@ class Server:
|
|
119
127
|
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
120
128
|
s.bind(("localhost", self._port))
|
121
129
|
s.listen(5)
|
122
|
-
|
130
|
+
logger.info(f"Server listening on port {self._port}")
|
123
131
|
last_activity_time = time.time()
|
124
132
|
while True:
|
125
133
|
s.settimeout(5)
|
@@ -132,7 +140,7 @@ class Server:
|
|
132
140
|
except socket.timeout:
|
133
141
|
current_time = time.time()
|
134
142
|
if current_time - last_activity_time >= self.timeout:
|
135
|
-
|
143
|
+
logger.info("No new connections for 5 minutes, shutting down server.")
|
136
144
|
break
|
137
145
|
|
138
146
|
def handle_client(self, sock: socket.socket) -> None:
|
@@ -148,15 +156,11 @@ class Server:
|
|
148
156
|
assert cbor2.load(BytesIO(message_type)) == RemotingMessageType.Request
|
149
157
|
self._messenger.process_request(sock)
|
150
158
|
|
151
|
-
readable, _, _ = select.select([sock], [], [], 0.01)
|
152
|
-
if sock not in readable:
|
153
|
-
return
|
154
|
-
|
155
159
|
except (OSError, IOError):
|
156
|
-
|
160
|
+
logger.error("Socket was closed unexpectedly")
|
157
161
|
return
|
158
162
|
except Exception as e:
|
159
|
-
|
163
|
+
logger.error(f"An error occurred while handling client: {e}")
|
160
164
|
traceback.print_exc()
|
161
165
|
if sock.fileno() != -1:
|
162
166
|
try:
|
@@ -165,12 +169,10 @@ class Server:
|
|
165
169
|
sock.send(dumps(_ERROR))
|
166
170
|
sock.send(dumps(traceback.format_exc()))
|
167
171
|
except (OSError, IOError):
|
168
|
-
|
172
|
+
logger.error("Failed to send error response, socket was closed")
|
169
173
|
return
|
170
174
|
except Exception as inner_exception:
|
171
|
-
|
172
|
-
finally:
|
173
|
-
sock.close()
|
175
|
+
logger.error(f"An error occurred while sending error response: {inner_exception}")
|
174
176
|
|
175
177
|
def parse_python_source(
|
176
178
|
self,
|
{openrewrite_remote-0.14.0.dist-info → openrewrite_remote-0.15.0.dist-info}/entry_points.txt
RENAMED
File without changes
|
File without changes
|