ReForma 0.27__tar.gz → 0.29__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ReForma
3
- Version: 0.27
3
+ Version: 0.29
4
4
  Summary: Python bindings for the RePA/ReForma probabilistic automaton tool
5
5
  Author-email: Joshua Dourado <joshuadourado@ua.pt>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ReForma
3
- Version: 0.27
3
+ Version: 0.29
4
4
  Summary: Python bindings for the RePA/ReForma probabilistic automaton tool
5
5
  Author-email: Joshua Dourado <joshuadourado@ua.pt>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ReForma"
7
- version = "0.27"
7
+ version = "0.29"
8
8
  description = "Python bindings for the RePA/ReForma probabilistic automaton tool"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -869,15 +869,16 @@ class ReForma:
869
869
  enabled: list[Transition] = []
870
870
  variables: dict[str, int] = {}
871
871
 
872
- import re
872
+ import re
873
873
 
874
874
  for line in lines:
875
875
  if line.startswith("Estado Atual:"):
876
- parts = line.split(":", 1)[1].strip()
877
- current_states = [s.strip() for s in parts.split(",")]
876
+ st_parts = line.split(":", 1)[1].strip()
877
+ current_states = [s.strip() for s in st_parts.split(",")]
878
878
 
879
879
  elif line.startswith("Variaveis:"):
880
- matches = re.finditer(r"([a-zA-Z0-9_]+)\s*=\s*(?:VInt\(\s*([^,)]+)|VFloat\(\s*([^,)]+)|VBool\(\s*([^,)]+)|([^,]+))", parts)
880
+ var_parts = line.split(":", 1)[1].strip()
881
+ matches = re.finditer(r"([a-zA-Z0-9_]+)\s*=\s*(?:VInt\(\s*([^,)]+)|VFloat\(\s*([^,)]+)|VBool\(\s*([^,)]+)|([^,]+))", var_parts)
881
882
 
882
883
  for m in matches:
883
884
  k = m.group(1)
@@ -912,7 +913,6 @@ class ReForma:
912
913
  raw={},
913
914
  )
914
915
 
915
-
916
916
  def _get_local_js(filename: str) -> str:
917
917
  """Reads the local JS file to be injected into HTML."""
918
918
  base_dir = os.path.dirname(__file__)
@@ -99,13 +99,15 @@ class JarBridge:
99
99
  Run: java -jar <jar> <args...>
100
100
  Returns stdout. Raises JarError on non-zero exit.
101
101
  """
102
- cmd = [self.java_bin, "-jar", self.jar_path, *args]
102
+ # Forçamos o Java a usar UTF-8 no Windows
103
+ cmd = [self.java_bin, "-Dfile.encoding=UTF-8", "-jar", self.jar_path, *args]
103
104
  result = subprocess.run(
104
105
  cmd,
105
106
  input=stdin_data,
106
107
  capture_output=True,
107
108
  text=True,
108
109
  encoding="utf-8",
110
+ errors="replace"
109
111
  )
110
112
  if result.returncode != 0:
111
113
  raise JarError(
@@ -179,12 +181,13 @@ class JarBridge:
179
181
  Reads and returns the content of this output file.
180
182
  JAR progress/logs go to stderr — ignored here.
181
183
  """
182
- cmd = [self.java_bin, "-jar", self.jar_path, *args]
184
+ cmd = [self.java_bin, "-Dfile.encoding=UTF-8", "-jar", self.jar_path, *args]
183
185
  result = subprocess.run(
184
186
  cmd,
185
187
  capture_output=True,
186
188
  text=True,
187
189
  encoding="utf-8",
190
+ errors="replace"
188
191
  )
189
192
  if result.returncode != 0:
190
193
  raise JarError(
@@ -196,7 +199,7 @@ class JarBridge:
196
199
  f"JAR did not generate the expected output file: {out_path}\n"
197
200
  f"stderr: {result.stderr.strip()}"
198
201
  )
199
- with open(out_path, "r", encoding="utf-8") as f:
202
+ with open(out_path, "r", encoding="utf-8", errors="replace") as f:
200
203
  return f.read()
201
204
 
202
205
  def merge_models(self, sourceA: str, sourceB: str, op_type: str, agg: str) -> str:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes