openrewrite-remote 0.18.1__py3-none-any.whl → 0.19.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
1
  Metadata-Version: 2.2
2
2
  Name: openrewrite-remote
3
- Version: 0.18.1
3
+ Version: 0.19.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,20 +5,21 @@ rewrite_remote/receiver.py,sha256=XgRhhOBW_77lV34nHkWbrdojajLfWfX38NdzuKJDj8A,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=gzouNamoxR_RHh8uxAPZ-q07Wfv4h3yhygH2U9BDp7M,9623
8
+ rewrite_remote/server.py,sha256=5pCqHHaHkI2pGBgFeZC6HWx5YmyU6XqZEbMt4W_He_g,9964
9
9
  rewrite_remote/type_utils.py,sha256=MHfEhbtpvN1jXNG_l2X4jTBVJZsbkmbaJIZEOHpeMTA,4400
10
10
  rewrite_remote/handlers/__init__.py,sha256=ED6jHcYiuYpr_0vjGz0zx2lrrmJT9sDJCzIljoDfmlM,65
11
11
  rewrite_remote/handlers/handler_helpers.py,sha256=xvAKAVGH56Hrjp9sbilp4v1a2_ra0L63YjXurF5K5o0,512
12
12
  rewrite_remote/handlers/hello_world_handler.py,sha256=HLVukS16-PRRidlnfABT6ETXURhQYIJnTSb09PJnDek,1284
13
- rewrite_remote/handlers/list_projects_handler.py,sha256=MBCCWc6h8FX8fVxtMHbPo4bNxU2TVgcPRzfLZJrVC3k,2024
13
+ rewrite_remote/handlers/list_projects_handler.py,sha256=jJ39BXXdbZ43YeL-23gpRzravYQQaSgTM3aIMdR4CzI,2039
14
14
  rewrite_remote/handlers/parse_project_sources_handler.py,sha256=VeRmBrQKtWuOLdDT1CDku9xa998nl-c1RDQCAAJPipM,3153
15
+ rewrite_remote/handlers/parse_source_handler.py,sha256=5GAarluCBGq8YjDIN9ddlUK7o0uhr29xBXvxAs8EoME,1431
15
16
  rewrite_remote/handlers/project_helper.py,sha256=La2lQnS158PevXE1z2Jnx_RNQwQtioelthzdNEJnIew,8711
16
17
  rewrite_remote/handlers/pypi_manager.py,sha256=XulTdZUm5aTme7Qn-jaUvlgO6N9bKS03UUQtbxv9kYE,10247
17
- rewrite_remote/handlers/recipe_install_handler.py,sha256=dUS50wzSUGbeET4VMOwjPyfB883MfF7QsN5Lhf71ylk,4974
18
- rewrite_remote/handlers/run_recipe_load_and_visitor_handler.py,sha256=uF08S7ug1ZeXde6RjPlitjEUFKj7ijN9Agnsv0tZ8u4,4163
18
+ rewrite_remote/handlers/recipe_install_handler.py,sha256=brUAeQeGsXHBLMG1TXfdF8q0x7vx_foY5UfLgOBHQ6c,4976
19
+ rewrite_remote/handlers/run_recipe_load_and_visitor_handler.py,sha256=TEo7HgNXthtIapSgeW-xogwfXfWxXov-_xktJNT--E8,4239
19
20
  rewrite_remote/handlers/types.py,sha256=5TK_oFp-7iy1iACWisuQJsa_WHTsqcPrV9nQTZ-_xgo,518
20
- openrewrite_remote-0.18.1.dist-info/METADATA,sha256=2wmDafKYy516AxuANUfZ73D0avG29FLzi0gjc9iy50M,386
21
- openrewrite_remote-0.18.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
22
- openrewrite_remote-0.18.1.dist-info/entry_points.txt,sha256=SMukuF7TPjQr3IZIcH8f98-_QBCqYSbYXYrVv-5UzRI,69
23
- openrewrite_remote-0.18.1.dist-info/top_level.txt,sha256=ansTioSZ-62aH3F2L3d1Bua0pJF4GOtgQ1PpG-CzcP0,15
24
- openrewrite_remote-0.18.1.dist-info/RECORD,,
21
+ openrewrite_remote-0.19.0.dist-info/METADATA,sha256=ASazrsUKUgLmm7vlfyYCPrOvQqIMjYx02WbkGJYBKdU,386
22
+ openrewrite_remote-0.19.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
23
+ openrewrite_remote-0.19.0.dist-info/entry_points.txt,sha256=SMukuF7TPjQr3IZIcH8f98-_QBCqYSbYXYrVv-5UzRI,69
24
+ openrewrite_remote-0.19.0.dist-info/top_level.txt,sha256=ansTioSZ-62aH3F2L3d1Bua0pJF4GOtgQ1PpG-CzcP0,15
25
+ openrewrite_remote-0.19.0.dist-info/RECORD,,
@@ -54,11 +54,11 @@ def list_projects_handler(
54
54
  )
55
55
 
56
56
  # 5. Write response to stream
57
- encoded_response = b""
58
- encoded_response += dumps(RemotingMessageType.Response)
59
- encoded_response += dumps(OK)
60
- encoded_response += dumps(project_config_files)
61
- encoded_response += COMMAND_END
62
- sock.sendall(encoded_response)
57
+ response_data = BytesIO()
58
+ response_data.write(dumps(RemotingMessageType.Response))
59
+ response_data.write(dumps(OK))
60
+ response_data.write(dumps(project_config_files))
61
+ response_data.write(COMMAND_END)
62
+ sock.sendall(response_data.getvalue())
63
63
 
64
64
  logger.info("Request completed.")
@@ -0,0 +1,49 @@
1
+ import logging
2
+ import socket
3
+ from io import BytesIO, StringIO
4
+ from pathlib import Path
5
+
6
+ import cbor2
7
+ from rewrite import (
8
+ ExecutionContext,
9
+ InMemoryExecutionContext,
10
+ ParserInput,
11
+ )
12
+ from rewrite.python.parser import PythonParserBuilder
13
+
14
+ from rewrite_remote.remote_utils import COMMAND_END
15
+ from rewrite_remote.remoting import (
16
+ OK,
17
+ RemotingContext,
18
+ RemotingMessageType,
19
+ )
20
+
21
+ logger = logging.getLogger("parse_source_handler")
22
+ logger.setLevel(logging.DEBUG)
23
+
24
+
25
+ def parse_source_handler(
26
+ stream: BytesIO, sock: socket.socket, remoting_ctx: RemotingContext
27
+ ) -> None:
28
+ remoting_ctx.reset()
29
+
30
+ # Read input from stream
31
+ parser = PythonParserBuilder().build()
32
+ source = cbor2.load(stream)
33
+ ctx = InMemoryExecutionContext()
34
+ ctx.put_message(ExecutionContext.REQUIRE_PRINT_EQUALS_INPUT, False)
35
+ for cu in parser.parse_inputs(
36
+ [ParserInput(Path("source.py"), None, True, lambda: StringIO(source))],
37
+ None,
38
+ ctx,
39
+ ):
40
+ response_stream = BytesIO()
41
+ cbor2.dump(RemotingMessageType.Response, response_stream)
42
+ cbor2.dump(OK, response_stream)
43
+ source_stream = BytesIO()
44
+ remoting_ctx.new_sender_context(source_stream).send_any_tree(cu, None)
45
+ cbor2.dump(source_stream.getvalue(), response_stream)
46
+ cbor2.dump(COMMAND_END, response_stream)
47
+ sock.sendall(response_stream.getvalue())
48
+
49
+ logger.info("Request completed.")
@@ -84,14 +84,12 @@ def recipe_install_handler(
84
84
  return
85
85
 
86
86
  # 2. Log the request
87
- logger.info(
88
- f"""Handling install-recipe request: {{
87
+ logger.info(f"""Handling install-recipe request: {{
89
88
  packageId: {package_id},
90
89
  packageVersion: {package_version},
91
90
  packageSources: {package_sources},
92
91
  includeDefaultRepository: {include_default_repository},
93
- }}"""
94
- )
92
+ }}""")
95
93
 
96
94
  # 3. Validate sources
97
95
  sources: List[Source] = [
@@ -143,11 +141,12 @@ def recipe_install_handler(
143
141
  }
144
142
 
145
143
  # Encode the response using CBOR
146
- encoded_response = b""
147
- encoded_response += dumps(RemotingMessageType.Response)
148
- encoded_response += dumps(OK)
149
- encoded_response += dumps(response)
150
- encoded_response += COMMAND_END
151
- sock.sendall(encoded_response)
144
+ response_data = BytesIO()
145
+ response_data.write(dumps(RemotingMessageType.Response))
146
+ response_data.write(dumps(OK))
147
+ response_data.write(dumps(response))
148
+ response_data.write(COMMAND_END)
149
+
150
+ sock.sendall(response_data.getvalue())
152
151
 
153
152
  logger.info("Request completed.")
@@ -18,6 +18,7 @@ from rewrite_remote.handlers.handler_helpers import respond_with_error
18
18
 
19
19
  from rewrite import InMemoryExecutionContext
20
20
 
21
+
21
22
  logger = logging.getLogger("run_recipe_load_and_visitor_handler")
22
23
  logger.setLevel(logging.DEBUG)
23
24
 
@@ -71,13 +72,11 @@ def run_recipe_load_and_visitor_handler(
71
72
  return
72
73
 
73
74
  # Log the request
74
- logger.info(
75
- f"""Handling run-recipe-load-and-visitor request: {{
75
+ logger.info(f"""Handling run-recipe-load-and-visitor request: {{
76
76
  recipe_name: {recipe_name},
77
77
  recipe_source: {recipe_source},
78
78
  recipe_options: {recipe_options},
79
- }}"""
80
- )
79
+ }}""")
81
80
 
82
81
  # Receive the tree
83
82
  if not hasattr(RemotingMessenger, "_state"):
@@ -89,7 +88,7 @@ def run_recipe_load_and_visitor_handler(
89
88
  received = None
90
89
  try:
91
90
  received = RemotingMessenger.receive_tree(
92
- RemotingMessenger, stream, RemotingMessenger._state
91
+ RemotingMessenger, decoder, RemotingMessenger._state
93
92
  )
94
93
  except Exception as e:
95
94
  # logging.error(f"Failed to receive tree: {e}")
@@ -123,12 +122,17 @@ def run_recipe_load_and_visitor_handler(
123
122
 
124
123
  # 5. Write the response
125
124
  response_encoder = BytesIO()
126
- RemotingMessenger.send_tree(remoting_ctx, response_encoder, RemotingMessenger._state, received)
125
+ RemotingMessenger.send_tree(
126
+ RemotingMessenger, response_encoder, RemotingMessenger._state, received
127
+ )
128
+
129
+ response_data = BytesIO()
130
+ response_data.write(dumps(RemotingMessageType.Response))
131
+ response_data.write(dumps(OK))
132
+
133
+ response_data.write(response_encoder.getvalue())
127
134
 
128
- encoded_response = b""
129
- encoded_response += dumps(RemotingMessageType.Response)
130
- encoded_response += dumps(OK)
131
- encoded_response += COMMAND_END
132
- sock.sendall(encoded_response)
135
+ response_data.write(COMMAND_END)
133
136
 
137
+ sock.sendall(response_data.getvalue())
134
138
  logger.info("Request completed.")
rewrite_remote/server.py CHANGED
@@ -3,7 +3,6 @@ import importlib
3
3
  import importlib.resources
4
4
  import logging
5
5
  import os
6
- import select
7
6
  import socket
8
7
  import sys
9
8
  import time
@@ -25,6 +24,12 @@ from rewrite_remote.handlers.recipe_install_handler import (
25
24
  from rewrite_remote.handlers.run_recipe_load_and_visitor_handler import (
26
25
  run_recipe_load_and_visitor_handler,
27
26
  )
27
+
28
+ from rewrite_remote.handlers.parse_source_handler import (
29
+ parse_source_handler,
30
+ )
31
+
32
+ from rewrite_remote.remote_utils import COMMAND_END
28
33
  from rewrite_remote.remoting import (
29
34
  RemotePrinterFactory,
30
35
  RemotingContext,
@@ -102,6 +107,8 @@ class Server:
102
107
  {
103
108
  "parse-python-source": self.parse_python_source,
104
109
  "parse-python-file": self.parse_python_file,
110
+ "parse-source": parse_source_handler,
111
+ "parse-file": self.parse_python_file,
105
112
  "hello-world": hello_world_handler,
106
113
  "recipe-install": recipe_install_handler,
107
114
  "run-recipe-load-and-visitor": run_recipe_load_and_visitor_handler,
@@ -202,6 +209,7 @@ class Server:
202
209
  source_stream = BytesIO()
203
210
  remoting_ctx.new_sender_context(source_stream).send_any_tree(cu, None)
204
211
  cbor2.dump(source_stream.getvalue(), response_stream)
212
+ cbor2.dump(COMMAND_END, response_stream)
205
213
  sock.sendall(response_stream.getvalue())
206
214
 
207
215
  def parse_python_file(
@@ -236,6 +244,7 @@ class Server:
236
244
  source_stream = BytesIO()
237
245
  remoting_ctx.new_sender_context(source_stream).send_any_tree(cu, None)
238
246
  cbor2.dump(source_stream.getvalue(), response_stream)
247
+ cbor2.dump(COMMAND_END, response_stream)
239
248
  sock.sendall(response_stream.getvalue())
240
249
 
241
250