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.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: openrewrite-remote
3
- Version: 0.14.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=TQ1cK6eAiJgY0ZAGl4huu5urI2Cm9DJpl-k8Is-IM1M,9466
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.14.0.dist-info/METADATA,sha256=ydjRf-SRkjLYHaWICk1zDeKw8gKDhL11Y_hm_kB29AM,386
21
- openrewrite_remote-0.14.0.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
22
- openrewrite_remote-0.14.0.dist-info/entry_points.txt,sha256=SMukuF7TPjQr3IZIcH8f98-_QBCqYSbYXYrVv-5UzRI,69
23
- openrewrite_remote-0.14.0.dist-info/top_level.txt,sha256=ansTioSZ-62aH3F2L3d1Bua0pJF4GOtgQ1PpG-CzcP0,15
24
- openrewrite_remote-0.14.0.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.7.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
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, SenderContext
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
- print(f"Server listening on Unix domain socket: {self._path}")
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
- print(f"Server listening on port {self._port}")
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
- print("No new connections for 5 minutes, shutting down server.")
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
- # the socket was closed
160
+ logger.error("Socket was closed unexpectedly")
157
161
  return
158
162
  except Exception as e:
159
- print(f"An error occurred while handling client: {e}")
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
- # the socket was closed
172
+ logger.error("Failed to send error response, socket was closed")
169
173
  return
170
174
  except Exception as inner_exception:
171
- print(inner_exception)
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,