rccn-gen 1.0.1__py3-none-any.whl → 1.0.2__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.
rccn_gen/systems.py CHANGED
@@ -2,6 +2,7 @@ from yamcs.pymdb import System, Subsystem, Command
2
2
  import shutil
3
3
  import difflib
4
4
  import datetime
5
+ from caseconverter import *
5
6
  from importlib.resources import files
6
7
  from .utils import *
7
8
  from .telemetry import *
@@ -47,12 +48,12 @@ class Application(Subsystem):
47
48
 
48
49
  def file_paths(self):
49
50
  paths = {
50
- 'main': os.path.join(self.export_file_path, 'rccn_usr_'+to_snake_case(self.name), 'src', 'main.rs'),
51
- 'main_generated_snapshot': os.path.join(self.snapshot_file_path, 'generated', 'rccn_usr_'+to_snake_case(self.name), 'src', 'main.rs'),
52
- 'main_user_snapshot': os.path.join(self.user_snapshot_path(), 'rccn_usr_'+to_snake_case(self.name), 'src', 'main.rs'),
53
- 'main_diff': os.path.join(self.diff_file_path, 'rccn_usr_'+to_snake_case(self.name), 'src', 'main.diff'),
51
+ 'main': os.path.join(self.export_file_path, 'rccn_usr_'+snakecase(self.name), 'src', 'main.rs'),
52
+ 'main_generated_snapshot': os.path.join(self.snapshot_file_path, 'generated', 'rccn_usr_'+snakecase(self.name), 'src', 'main.rs'),
53
+ 'main_user_snapshot': os.path.join(self.user_snapshot_path(), 'rccn_usr_'+snakecase(self.name), 'src', 'main.rs'),
54
+ 'main_diff': os.path.join(self.diff_file_path, 'rccn_usr_'+snakecase(self.name), 'src', 'main.diff'),
54
55
  'main_template': os.path.join(self.text_modules_main_path, 'main.txt'),
55
- 'cargo_toml': os.path.join(self.export_file_path, 'rccn_usr_'+to_snake_case(self.name), 'Cargo.toml'),
56
+ 'cargo_toml': os.path.join(self.export_file_path, 'rccn_usr_'+snakecase(self.name), 'Cargo.toml'),
56
57
  'cargo_toml_template': os.path.join(self.text_modules_path, 'cargo_toml', 'cargo.txt'),
57
58
  }
58
59
  return paths
@@ -64,11 +65,11 @@ class Application(Subsystem):
64
65
  return [subsystem for subsystem in self.subsystems if isinstance(subsystem, Service)]
65
66
 
66
67
  def create_rccn_directories(self):
67
- app_src_dir = os.path.join(self.export_file_path, 'rccn_usr_'+to_snake_case(self.name), 'src')
68
+ app_src_dir = os.path.join(self.export_file_path, 'rccn_usr_'+snakecase(self.name), 'src')
68
69
  if not os.path.exists(app_src_dir):
69
70
  os.makedirs(app_src_dir)
70
71
  for service in self.services():
71
- service_dir = os.path.join(app_src_dir, to_snake_case(service.name))
72
+ service_dir = os.path.join(app_src_dir, snakecase(service.name))
72
73
  if not os.path.exists(service_dir):
73
74
  os.makedirs(service_dir)
74
75
 
@@ -101,7 +102,7 @@ class Application(Subsystem):
101
102
  var_translation = {
102
103
  '<<VAR_APID>>':str(self.apid),
103
104
  '<<VAR_VCID>>':str(self.vcid),
104
- '<<VAR_APP_NAME_SCASE>>':to_snake_case(self.name),
105
+ '<<VAR_APP_NAME_SCASE>>':snakecase(self.name),
105
106
  }
106
107
  var_keywords = get_var_keywords(text)
107
108
  for var_keyword in var_keywords:
@@ -128,7 +129,7 @@ class Application(Subsystem):
128
129
  if not os.path.exists(service.file_paths()['mod']):
129
130
  service.generate_mod_file()
130
131
  service.generate_telemetry_file()
131
- service.generate_rccn_command_file(os.path.join(self.export_file_path, 'rccn_usr_'+to_snake_case(self.name), 'src'), os.path.join(self.text_modules_path, 'command'))
132
+ service.generate_rccn_command_file(os.path.join(self.export_file_path, 'rccn_usr_'+snakecase(self.name), 'src'), os.path.join(self.text_modules_path, 'command'))
132
133
  self.delete_old_snapshots()
133
134
 
134
135
  def generate_snapshot(self, current_file_reference, snapshot_file_reference):
@@ -236,22 +237,22 @@ class Service(Subsystem):
236
237
 
237
238
  def file_paths(self):
238
239
  paths = {
239
- 'service': os.path.join(self.export_file_path, 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'service.rs'),
240
- 'service_generated_snapshot': os.path.join(self.snapshot_file_path, 'generated', 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'service.rs'),
241
- 'service_user_snapshot': os.path.join(self.snapshot_file_path, 'user', datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S"), 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'service.rs'),
242
- 'service_diff': os.path.join(self.diff_file_path, 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'service.diff'),
240
+ 'service': os.path.join(self.export_file_path, 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'service.rs'),
241
+ 'service_generated_snapshot': os.path.join(self.snapshot_file_path, 'generated', 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'service.rs'),
242
+ 'service_user_snapshot': os.path.join(self.snapshot_file_path, 'user', datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S"), 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'service.rs'),
243
+ 'service_diff': os.path.join(self.diff_file_path, 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'service.diff'),
243
244
  'service_template': os.path.join(self.text_modules_service_path, 'service.txt'),
244
- 'command': os.path.join(self.export_file_path, 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'command.rs'),
245
- 'command_generated_snapshot': os.path.join(self.snapshot_file_path, 'generated', 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'command.rs'),
246
- 'command_user_snapshot': os.path.join(self.snapshot_file_path, 'user', datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S"), 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'command.rs'),
247
- 'command_diff': os.path.join(self.diff_file_path, 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'command.diff'),
245
+ 'command': os.path.join(self.export_file_path, 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'command.rs'),
246
+ 'command_generated_snapshot': os.path.join(self.snapshot_file_path, 'generated', 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'command.rs'),
247
+ 'command_user_snapshot': os.path.join(self.snapshot_file_path, 'user', datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S"), 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'command.rs'),
248
+ 'command_diff': os.path.join(self.diff_file_path, 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'command.diff'),
248
249
  'command_template': os.path.join(self.text_modules_command_path, 'command.txt'),
249
- 'mod': os.path.join(self.export_file_path, 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'mod.rs'),
250
+ 'mod': os.path.join(self.export_file_path, 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'mod.rs'),
250
251
  'mod_template': os.path.join(self.text_modules_path, 'mod', 'mod.txt'),
251
- 'telemetry': os.path.join(self.export_file_path, 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'telemetry.rs'),
252
- 'telemetry_generated_snapshot': os.path.join(self.snapshot_file_path, 'generated', 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'telemetry.rs'),
253
- 'telemetry_user_snapshot': os.path.join(self.snapshot_file_path, 'user', datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S"), 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'command.rs'),
254
- 'telemetry_diff': os.path.join(self.diff_file_path, 'rccn_usr_'+to_snake_case(self.system.name), 'src', to_snake_case(self.name), 'telemetry.diff'),
252
+ 'telemetry': os.path.join(self.export_file_path, 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'telemetry.rs'),
253
+ 'telemetry_generated_snapshot': os.path.join(self.snapshot_file_path, 'generated', 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'telemetry.rs'),
254
+ 'telemetry_user_snapshot': os.path.join(self.snapshot_file_path, 'user', datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S"), 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'command.rs'),
255
+ 'telemetry_diff': os.path.join(self.diff_file_path, 'rccn_usr_'+snakecase(self.system.name), 'src', snakecase(self.name), 'telemetry.diff'),
255
256
  'telemetry_template': os.path.join(self.text_modules_telemetry_path, 'telemetry.txt'),
256
257
  }
257
258
  return paths
@@ -284,7 +285,7 @@ class Service(Subsystem):
284
285
  service_var_translation = {
285
286
  '<<VAR_SERVICE_NAME>>': self.name,
286
287
  '<<VAR_SERVICE_ID>>': str(self.service_id),
287
- '<<VAR_SERVICE_NAME_UCASE>>': to_upper_camel_case(self.name),
288
+ '<<VAR_SERVICE_NAME_UCASE>>': pascalcase(self.name),
288
289
  '<<VAR_SERVICE_TELEMETRY>>': self.generate_rust_telemetry_definition(),
289
290
  }
290
291
  for var_keyword in var_keywords:
@@ -331,7 +332,7 @@ class Service(Subsystem):
331
332
  command_file_path = self.file_paths()['command_template']
332
333
  with open(command_file_path, 'r') as file:
333
334
  command_file_text = file.read()
334
- command_export_file_path = os.path.join(export_file_dir, to_snake_case(self.name), 'command.rs')
335
+ command_export_file_path = os.path.join(export_file_dir, snakecase(self.name), 'command.rs')
335
336
  with open(command_export_file_path, 'w') as file:
336
337
  file.write(self.find_and_replace_keywords(command_file_text, text_modules_path))
337
338
  # Create snapshot of command.rs if instructed
@@ -430,7 +431,7 @@ class RCCNCommand(Command):
430
431
  # Find and replace command variable keywords
431
432
  command_var_keywords = get_var_keywords(text)
432
433
  command_var_translation = {
433
- '<<VAR_COMMAND_NAME_UCASE>>': to_upper_camel_case(self.name),
434
+ '<<VAR_COMMAND_NAME_UCASE>>': pascalcase(self.name),
434
435
  '<<VAR_COMMAND_NAME>>': self.name,
435
436
  '<<VAR_COMMAND_SUBTYPE>>': str(self.assignments['subtype']),
436
437
  '<<VAR_COMMAND_STRUCT>>': self.struct_definition()
@@ -450,7 +451,7 @@ class RCCNCommand(Command):
450
451
  def struct_definition(self):
451
452
  if len(self.arguments) == 0:
452
453
  return ''
453
- struct_definition_text = "#[derive(BitStruct, Debug, PartialEq)]\npub struct "+to_upper_camel_case(self.name)+" {\n"
454
+ struct_definition_text = "#[derive(BitStruct, Debug, PartialEq)]\npub struct "+pascalcase(self.name)+" {\n"
454
455
  for argument in self.arguments:
455
456
  struct_definition_text += rust_type_definition(argument)[0]
456
457
  struct_definition_text += "}\n"
rccn_gen/utils.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import re
2
2
  import inflect
3
3
  import os
4
+ from caseconverter import *
4
5
  from yamcs.pymdb import IntegerArgument, FloatArgument, BooleanArgument, EnumeratedArgument, StringArgument
5
6
 
6
7
 
@@ -130,8 +131,8 @@ def rust_type_definition(pymdb_data_instance, parent_name="MyStruct"):
130
131
  pymdb_data_instance.name = parent_name
131
132
  else:
132
133
  pymdb_data_instance.name = singular_name
133
- print("RCCN-Gen: Information: An unnamed "+base_type+" has been named \""+to_upper_camel_case(pymdb_data_instance.name)+"\" in the generated RCCN code.")
134
- sc_instance_name = to_snake_case(pymdb_data_instance.name)
134
+ print("RCCN-Gen: Information: An unnamed "+base_type+" has been named \""+pascalcase(pymdb_data_instance.name)+"\" in the generated RCCN code.")
135
+ sc_instance_name = snakecase(pymdb_data_instance.name)
135
136
 
136
137
  if data_type == 'IntegerDataType':
137
138
  if pymdb_data_instance.encoding is None or pymdb_data_instance.encoding.bits is None:
@@ -161,14 +162,14 @@ def rust_type_definition(pymdb_data_instance, parent_name="MyStruct"):
161
162
  definition_text[0] = definition_text[0].replace(': ', ': Vec<').replace(',\n', '>,\n')
162
163
 
163
164
  elif data_type == 'EnumeratedDataType':
164
- definition_text = ["\tpub "+pymdb_data_instance.name+": "+to_upper_camel_case(pymdb_data_instance.name)+",\n"]
165
- definition_text.append("pub enum "+to_upper_camel_case(pymdb_data_instance.name)+" {\n")
165
+ definition_text = ["\tpub "+pymdb_data_instance.name+": "+pascalcase(pymdb_data_instance.name)+",\n"]
166
+ definition_text.append("pub enum "+pascalcase(pymdb_data_instance.name)+" {\n")
166
167
  for choice in pymdb_data_instance.choices:
167
168
  definition_text[1] += "\t"+str(choice[1])+" = "+str(choice[0])+",\n"
168
169
  definition_text[1] += "}\n"
169
170
 
170
171
  elif data_type == 'AggregateDataType':
171
- struct_name = to_upper_camel_case(pymdb_data_instance.name)
172
+ struct_name = pascalcase(pymdb_data_instance.name)
172
173
  definition_text = ["\tpub "+sc_instance_name+": "+struct_name+",\n"]
173
174
  definition_text.append("pub struct "+struct_name+" {\n")
174
175
  for member in pymdb_data_instance.members:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rccn_gen
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: A python based generator for RACCOON OS source files in Rust from yamcs-pymdb config files.
5
5
  Project-URL: Homepage, https://gitlab.com/rccn/pymdb_code_generation
6
6
  Project-URL: Issues, https://gitlab.com/rccn/pymdb_code_generation/issues
@@ -9,6 +9,8 @@ License-Expression: GPL-3.0
9
9
  Classifier: Operating System :: OS Independent
10
10
  Classifier: Programming Language :: Python :: 3
11
11
  Requires-Python: >=3.8
12
+ Requires-Dist: case-converter>=1.2.0
13
+ Requires-Dist: inflect>=7.5.0
12
14
  Requires-Dist: yamcs-pymdb>=0.1.0
13
15
  Description-Content-Type: text/markdown
14
16
 
@@ -2,9 +2,9 @@ rccn_gen/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
2
2
  rccn_gen/__init__.py,sha256=XVvKYcWw9K1P3J1BTbzbODY71Nc1FApCc0wf7ezd4Gc,193
3
3
  rccn_gen/application.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  rccn_gen/service.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- rccn_gen/systems.py,sha256=oLm0_jcxV0MZ3Bg7YsCraQ_zTj_yD_geoQpdJs_ATys,26898
5
+ rccn_gen/systems.py,sha256=ibpegtBKPF-w6hmiWC_-TgJII6uvWP8wRSDpwEq8rjY,26755
6
6
  rccn_gen/telemetry.py,sha256=huVcqGs95IXlpETWdlIyR9lK4ctZUsq7czgJwvTYtBk,3855
7
- rccn_gen/utils.py,sha256=tBzL6ZCSpjYnz4vtV7vzIAT6lcemCtIqxrmWMtzPEZU,7302
7
+ rccn_gen/utils.py,sha256=HF79aMpovRdqLdVjL1w0iEPTEvOl7VSPrf_9QifUyoc,7290
8
8
  rccn_gen/text_modules/cargo_toml/cargo.txt,sha256=2e6xKomkml6-onfQ0QHNqvKnhGLYMUl8zYgbykmm83Y,292
9
9
  rccn_gen/text_modules/command/command.txt,sha256=8Y-uJilhFLoinftIbn7uKfia9LLMZno2LkoDJ-4Y-9M,345
10
10
  rccn_gen/text_modules/command/command_module_enum.txt,sha256=ApzRDQIs-BHJHtFA4ysfpYuWElGntXakkzZkgy57b74,94
@@ -17,6 +17,6 @@ rccn_gen/text_modules/mod/mod.txt,sha256=BF8LablBE4ddutdl5m0prvpvLdBRejueVOujkyr
17
17
  rccn_gen/text_modules/service/command_module_match_cmd.txt,sha256=eVGo6ltuerG37rVxpXtL-JYuLyLW4c0i6NXb5g1_U-A,89
18
18
  rccn_gen/text_modules/service/service.txt,sha256=0KwwrfrjXuY4e3VNpCdTTzgW8bmYRQ21i-Lvhkz3hVA,691
19
19
  rccn_gen/text_modules/telemetry/telemetry.txt,sha256=Re1d3BfpyXT_CEe7jJzLF3MARik0-J-K98K85iPOE40,193
20
- rccn_gen-1.0.1.dist-info/METADATA,sha256=dm4UtqPyzUKNv_hnmprPaSmQtRrjE-lCuU-X_O9wnHc,8193
21
- rccn_gen-1.0.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
22
- rccn_gen-1.0.1.dist-info/RECORD,,
20
+ rccn_gen-1.0.2.dist-info/METADATA,sha256=SmSD9_-46j9ZXvYAhuVPr2hINx0_xHOihSPJ31vfwVc,8260
21
+ rccn_gen-1.0.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
22
+ rccn_gen-1.0.2.dist-info/RECORD,,