gpp-client 26.7.3.dev3__tar.gz → 26.7.3.dev4__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.
Files changed (112) hide show
  1. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/PKG-INFO +1 -1
  2. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/scheduler.py +29 -17
  3. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/__init__.py +2 -0
  4. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/client.py +0 -33
  5. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/custom_fields.py +64 -12
  6. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/custom_typing_fields.py +6 -0
  7. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/enums.py +2 -0
  8. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/fragments.py +0 -3
  9. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/input_types.py +19 -4
  10. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/.gitignore +0 -0
  11. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/LICENSE +0 -0
  12. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/README.md +0 -0
  13. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/graphql/README.md +0 -0
  14. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/pyproject.toml +0 -0
  15. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/__init__.py +0 -0
  16. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/__init__.py +0 -0
  17. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/cli.py +0 -0
  18. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/__init__.py +0 -0
  19. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/attachment.py +0 -0
  20. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/goats.py +0 -0
  21. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/observation.py +0 -0
  22. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/program.py +0 -0
  23. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/scheduler.py +0 -0
  24. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/site_status.py +0 -0
  25. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/target.py +0 -0
  26. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/commands/workflow_state.py +0 -0
  27. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/console.py +0 -0
  28. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/output.py +0 -0
  29. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/cli/utils.py +0 -0
  30. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/client.py +0 -0
  31. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/constants.py +0 -0
  32. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/__init__.py +0 -0
  33. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/atom.py +0 -0
  34. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/attachment.py +0 -0
  35. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/base.py +0 -0
  36. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/goats.py +0 -0
  37. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/observation.py +0 -0
  38. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/program.py +0 -0
  39. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/site_status.py +0 -0
  40. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/target.py +0 -0
  41. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/domains/workflow_state.py +0 -0
  42. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/environment.py +0 -0
  43. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/exceptions.py +0 -0
  44. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/async_base_client.py +0 -0
  45. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/base_model.py +0 -0
  46. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/base_operation.py +0 -0
  47. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/clone_observation.py +0 -0
  48. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/clone_target.py +0 -0
  49. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/create_call_for_proposals.py +0 -0
  50. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/create_observation.py +0 -0
  51. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/create_program.py +0 -0
  52. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/create_target_by_program_id.py +0 -0
  53. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/create_target_by_program_reference.py +0 -0
  54. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/create_target_by_proposal_reference.py +0 -0
  55. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/custom_mutations.py +0 -0
  56. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/custom_queries.py +0 -0
  57. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/delete_call_for_proposals_by_id.py +0 -0
  58. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/delete_observation_by_id.py +0 -0
  59. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/delete_observation_by_reference.py +0 -0
  60. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/delete_program_by_id.py +0 -0
  61. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/delete_target_by_id.py +0 -0
  62. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/exceptions.py +0 -0
  63. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_call_for_proposals.py +0 -0
  64. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_calls_for_proposals.py +0 -0
  65. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_goats_observations.py +0 -0
  66. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_goats_programs.py +0 -0
  67. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_observation.py +0 -0
  68. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_observation_attachments_by_id.py +0 -0
  69. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_observation_attachments_by_reference.py +0 -0
  70. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_observation_workflow_state_by_id.py +0 -0
  71. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_observation_workflow_state_by_reference.py +0 -0
  72. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_observations.py +0 -0
  73. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_program_attachments_by_id.py +0 -0
  74. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_program_attachments_by_proposal_reference.py +0 -0
  75. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_program_attachments_by_reference.py +0 -0
  76. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_program_by_id.py +0 -0
  77. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_program_by_proposal_reference.py +0 -0
  78. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_program_by_reference.py +0 -0
  79. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_programs.py +0 -0
  80. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_scheduler_all_programs_id.py +0 -0
  81. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_scheduler_programs.py +0 -0
  82. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_target_by_id.py +0 -0
  83. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/get_targets.py +0 -0
  84. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/obs_calculation_update.py +0 -0
  85. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/observation_edit.py +0 -0
  86. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/package_environment.py +0 -0
  87. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/ping.py +0 -0
  88. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/program_edit.py +0 -0
  89. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/restore_call_for_proposals_by_id.py +0 -0
  90. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/restore_observation_by_id.py +0 -0
  91. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/restore_observation_by_reference.py +0 -0
  92. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/restore_program_by_id.py +0 -0
  93. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/restore_target_by_id.py +0 -0
  94. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/scheduler_observations_updates.py +0 -0
  95. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/set_observation_workflow_state.py +0 -0
  96. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/target_edit.py +0 -0
  97. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_call_for_proposals_by_id.py +0 -0
  98. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_calls_for_proposals.py +0 -0
  99. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_observation_by_id.py +0 -0
  100. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_observation_by_reference.py +0 -0
  101. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_observations.py +0 -0
  102. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_program_by_id.py +0 -0
  103. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_programs.py +0 -0
  104. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_target_by_id.py +0 -0
  105. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/generated/update_targets.py +0 -0
  106. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/logging_utils.py +0 -0
  107. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/rest/__init__.py +0 -0
  108. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/rest/client.py +0 -0
  109. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/rest/models.py +0 -0
  110. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/rest/utils.py +0 -0
  111. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/settings.py +0 -0
  112. {gpp_client-26.7.3.dev3 → gpp_client-26.7.3.dev4}/src/gpp_client/urls.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gpp-client
3
- Version: 26.7.3.dev3
3
+ Version: 26.7.3.dev4
4
4
  Summary: Gemini Program Platform client.
5
5
  Project-URL: Homepage, https://github.com/gemini-hlsw/gpp-client
6
6
  Project-URL: Source, https://github.com/gemini-hlsw/gpp-client
@@ -122,10 +122,10 @@ class SchedulerDomain(BaseDomain):
122
122
  node: dict[str, Any],
123
123
  obs_map: dict[str, Any],
124
124
  obs_sequence: dict[str, list],
125
- ) -> None:
125
+ ) -> bool:
126
126
  """
127
127
  Maps the information between the groups tree and the observations retrieved
128
- from a different query.
128
+ from a different query, dropping the elements that carry no observation.
129
129
 
130
130
  Parameters
131
131
  ----------
@@ -135,33 +135,45 @@ class SchedulerDomain(BaseDomain):
135
135
  Mapping of observation ids with observation raw data.
136
136
  obs_sequence: dict[str, list]
137
137
  Mapping of the atoms sequence with the observation id.
138
+
139
+ Returns
140
+ -------
141
+ bool
142
+ ``True`` if the node was filled with observation data, ``False`` if it
143
+ is an observation missing from the ODB response or a group left empty
144
+ once its children were trimmed.
138
145
  """
139
146
  obs = node.get("observation")
140
147
  group = node.get("group")
141
148
  if obs is not None:
142
149
  obs_id = obs["id"]
143
150
  obs_data = obs_map.get(obs_id)
144
- if obs_data is not None:
145
- obs_data["sequence"] = obs_sequence.get(obs_id)
146
- node["observation"] = obs_data
147
- else:
151
+ if obs_data is None:
148
152
  # No information on the ODB about the observation but the structure
149
153
  # remains in the program.
150
154
  # Put to None so observation doesn't get parse.
151
155
  node["observation"] = None
156
+ return False
152
157
 
153
- elif group is not None:
154
- if group.get("elements"):
155
- for child in group["elements"]:
156
- self._traverse_for_observation(child, obs_map, obs_sequence)
157
- else:
158
- # Empty groups like Calibration might add elements later.
159
- group["elements"] = []
158
+ obs_data["sequence"] = obs_sequence.get(obs_id)
159
+ node["observation"] = obs_data
160
+ return True
160
161
 
161
- else:
162
- # is the root
163
- for child in node["elements"]:
164
- self._traverse_for_observation(child, obs_map, obs_sequence)
162
+ if group is not None:
163
+ group["elements"] = [
164
+ child
165
+ for child in group.get("elements") or []
166
+ if self._traverse_for_observation(child, obs_map, obs_sequence)
167
+ ]
168
+ return bool(group["elements"])
169
+
170
+ # is the root
171
+ node["elements"] = [
172
+ child
173
+ for child in node["elements"]
174
+ if self._traverse_for_observation(child, obs_map, obs_sequence)
175
+ ]
176
+ return bool(node["elements"])
165
177
 
166
178
  async def get_all(
167
179
  self,
@@ -984,6 +984,7 @@ from .input_types import (
984
984
  Igrins2LongSlitInput,
985
985
  Igrins2StaticInput,
986
986
  Igrins2StepInput,
987
+ Igrins2SvcInput,
987
988
  ImagingScienceRequirementsInput,
988
989
  ImagingVariantInput,
989
990
  InterleavedImagingVariantInput,
@@ -2145,6 +2146,7 @@ __all__ = [
2145
2146
  "Igrins2LongSlitInput",
2146
2147
  "Igrins2StaticInput",
2147
2148
  "Igrins2StepInput",
2149
+ "Igrins2SvcInput",
2148
2150
  "ImageQualityPreset",
2149
2151
  "ImagingCapability",
2150
2152
  "ImagingScienceRequirementsInput",
@@ -2168,9 +2168,6 @@ class GraphQLClient(AsyncBaseClient):
2168
2168
  }
2169
2169
  }
2170
2170
  }
2171
- saveSVCImages
2172
- defaultSaveSVCImages
2173
- explicitSaveSVCImages
2174
2171
  telluricType {
2175
2172
  tag
2176
2173
  starTypes
@@ -2780,9 +2777,6 @@ class GraphQLClient(AsyncBaseClient):
2780
2777
  }
2781
2778
  }
2782
2779
  }
2783
- saveSVCImages
2784
- defaultSaveSVCImages
2785
- explicitSaveSVCImages
2786
2780
  telluricType {
2787
2781
  tag
2788
2782
  starTypes
@@ -3393,9 +3387,6 @@ class GraphQLClient(AsyncBaseClient):
3393
3387
  }
3394
3388
  }
3395
3389
  }
3396
- saveSVCImages
3397
- defaultSaveSVCImages
3398
- explicitSaveSVCImages
3399
3390
  telluricType {
3400
3391
  tag
3401
3392
  starTypes
@@ -4008,9 +3999,6 @@ class GraphQLClient(AsyncBaseClient):
4008
3999
  }
4009
4000
  }
4010
4001
  }
4011
- saveSVCImages
4012
- defaultSaveSVCImages
4013
- explicitSaveSVCImages
4014
4002
  telluricType {
4015
4003
  tag
4016
4004
  starTypes
@@ -4626,9 +4614,6 @@ class GraphQLClient(AsyncBaseClient):
4626
4614
  }
4627
4615
  }
4628
4616
  }
4629
- saveSVCImages
4630
- defaultSaveSVCImages
4631
- explicitSaveSVCImages
4632
4617
  telluricType {
4633
4618
  tag
4634
4619
  starTypes
@@ -5244,9 +5229,6 @@ class GraphQLClient(AsyncBaseClient):
5244
5229
  }
5245
5230
  }
5246
5231
  }
5247
- saveSVCImages
5248
- defaultSaveSVCImages
5249
- explicitSaveSVCImages
5250
5232
  telluricType {
5251
5233
  tag
5252
5234
  starTypes
@@ -5859,9 +5841,6 @@ class GraphQLClient(AsyncBaseClient):
5859
5841
  }
5860
5842
  }
5861
5843
  }
5862
- saveSVCImages
5863
- defaultSaveSVCImages
5864
- explicitSaveSVCImages
5865
5844
  telluricType {
5866
5845
  tag
5867
5846
  starTypes
@@ -6474,9 +6453,6 @@ class GraphQLClient(AsyncBaseClient):
6474
6453
  }
6475
6454
  }
6476
6455
  }
6477
- saveSVCImages
6478
- defaultSaveSVCImages
6479
- explicitSaveSVCImages
6480
6456
  telluricType {
6481
6457
  tag
6482
6458
  starTypes
@@ -7089,9 +7065,6 @@ class GraphQLClient(AsyncBaseClient):
7089
7065
  }
7090
7066
  }
7091
7067
  }
7092
- saveSVCImages
7093
- defaultSaveSVCImages
7094
- explicitSaveSVCImages
7095
7068
  telluricType {
7096
7069
  tag
7097
7070
  starTypes
@@ -7705,9 +7678,6 @@ class GraphQLClient(AsyncBaseClient):
7705
7678
  }
7706
7679
  }
7707
7680
  }
7708
- saveSVCImages
7709
- defaultSaveSVCImages
7710
- explicitSaveSVCImages
7711
7681
  telluricType {
7712
7682
  tag
7713
7683
  starTypes
@@ -8328,9 +8298,6 @@ class GraphQLClient(AsyncBaseClient):
8328
8298
  }
8329
8299
  }
8330
8300
  }
8331
- saveSVCImages
8332
- defaultSaveSVCImages
8333
- explicitSaveSVCImages
8334
8301
  telluricType {
8335
8302
  tag
8336
8303
  starTypes
@@ -206,6 +206,7 @@ from .custom_typing_fields import (
206
206
  Igrins2LongSlitGraphQLField,
207
207
  Igrins2StaticGraphQLField,
208
208
  Igrins2StepGraphQLField,
209
+ Igrins2SvcConfigGraphQLField,
209
210
  ImagingConfigOptionFlamingos2GraphQLField,
210
211
  ImagingConfigOptionGmosNorthGraphQLField,
211
212
  ImagingConfigOptionGmosSouthGraphQLField,
@@ -7343,18 +7344,13 @@ class Igrins2LongSlitFields(GraphQLField):
7343
7344
  """The exposure time mode used for ITC lookup for the science sequence."""
7344
7345
  return ExposureTimeModeFields("exposureTimeMode")
7345
7346
 
7346
- save_svc_images: "Igrins2LongSlitGraphQLField" = Igrins2LongSlitGraphQLField(
7347
- "saveSVCImages"
7348
- )
7349
- "Whether to save SVC images, either explicitly specified in\nexplicitSaveSVCImages or else taken from defaultSaveSVCImages"
7350
- default_save_svc_images: "Igrins2LongSlitGraphQLField" = (
7351
- Igrins2LongSlitGraphQLField("defaultSaveSVCImages")
7352
- )
7353
- "Default save SVC images setting"
7354
- explicit_save_svc_images: "Igrins2LongSlitGraphQLField" = (
7355
- Igrins2LongSlitGraphQLField("explicitSaveSVCImages")
7356
- )
7357
- "Optional explicitly specified save SVC images setting. If set it overrides\nthe default."
7347
+ @classmethod
7348
+ def svc(cls) -> "Igrins2SvcConfigFields":
7349
+ """Slit-Viewing Camera (SVC) acquisition configuration. Null (the default) means
7350
+ SVC images are not saved.
7351
+ A non-null value means SVC images are saved using the
7352
+ given exposure time and telescope offset positions."""
7353
+ return Igrins2SvcConfigFields("svc")
7358
7354
 
7359
7355
  @classmethod
7360
7356
  def telescope_configs(cls) -> "SlitTelescopeConfigsFields":
@@ -7383,6 +7379,7 @@ class Igrins2LongSlitFields(GraphQLField):
7383
7379
  *subfields: Union[
7384
7380
  Igrins2LongSlitGraphQLField,
7385
7381
  "ExposureTimeModeFields",
7382
+ "Igrins2SvcConfigFields",
7386
7383
  "SlitTelescopeConfigsFields",
7387
7384
  "TelluricTypeFields",
7388
7385
  ],
@@ -7466,6 +7463,59 @@ class Igrins2StepFields(GraphQLField):
7466
7463
  return self
7467
7464
 
7468
7465
 
7466
+ class Igrins2SvcConfigFields(GraphQLField):
7467
+ """IGRINS-2 Slit-Viewing Camera (SVC) acquisition configuration. A non-null value
7468
+ means SVC images are saved using the given exposure duration and telescope dither
7469
+ positions; null means SVC images are not saved."""
7470
+
7471
+ @classmethod
7472
+ def exposure(cls) -> "TimeSpanFields":
7473
+ """SVC exposure time, either explicitly specified in explicitExposure or else
7474
+ taken from defaultExposure."""
7475
+ return TimeSpanFields("exposure")
7476
+
7477
+ @classmethod
7478
+ def default_exposure(cls) -> "TimeSpanFields":
7479
+ """Default SVC exposure time (3.08 s)."""
7480
+ return TimeSpanFields("defaultExposure")
7481
+
7482
+ @classmethod
7483
+ def explicit_exposure(cls) -> "TimeSpanFields":
7484
+ """Optional explicitly specified SVC exposure time. If set it overrides the default."""
7485
+ return TimeSpanFields("explicitExposure")
7486
+
7487
+ @classmethod
7488
+ def telescope_configs(cls) -> "TelescopeConfigFields":
7489
+ """Effective SVC telescope configs (explicit override coalesced with the default)."""
7490
+ return TelescopeConfigFields("telescopeConfigs")
7491
+
7492
+ @classmethod
7493
+ def default_telescope_configs(cls) -> "TelescopeConfigFields":
7494
+ """Default SVC telescope configs: the p-offset dither (0,0) and (5,0) arcsec,
7495
+ both guided."""
7496
+ return TelescopeConfigFields("defaultTelescopeConfigs")
7497
+
7498
+ @classmethod
7499
+ def explicit_telescope_configs(cls) -> "TelescopeConfigFields":
7500
+ """Optional explicitly specified SVC telescope configs. If set they override the
7501
+ default."""
7502
+ return TelescopeConfigFields("explicitTelescopeConfigs")
7503
+
7504
+ def fields(
7505
+ self,
7506
+ *subfields: Union[
7507
+ Igrins2SvcConfigGraphQLField, "TelescopeConfigFields", "TimeSpanFields"
7508
+ ],
7509
+ ) -> "Igrins2SvcConfigFields":
7510
+ """Subfields should come from the Igrins2SvcConfigFields class"""
7511
+ self._subfields.extend(subfields)
7512
+ return self
7513
+
7514
+ def alias(self, alias: str) -> "Igrins2SvcConfigFields":
7515
+ self._alias = alias
7516
+ return self
7517
+
7518
+
7469
7519
  class ImagingConfigOptionFields(GraphQLField):
7470
7520
  """Describes an instrument configuration option for imaging."""
7471
7521
 
@@ -10799,6 +10849,7 @@ class SpectroscopyConfigOptionGmosNorthFields(GraphQLField):
10799
10849
  fpu: "SpectroscopyConfigOptionGmosNorthGraphQLField" = (
10800
10850
  SpectroscopyConfigOptionGmosNorthGraphQLField("fpu")
10801
10851
  )
10852
+ "The builtin FPU, present for single-slit configurations. Null for multislit\n(MOS) configurations, where the focal-plane unit is a custom mask."
10802
10853
  grating: "SpectroscopyConfigOptionGmosNorthGraphQLField" = (
10803
10854
  SpectroscopyConfigOptionGmosNorthGraphQLField("grating")
10804
10855
  )
@@ -10822,6 +10873,7 @@ class SpectroscopyConfigOptionGmosSouthFields(GraphQLField):
10822
10873
  fpu: "SpectroscopyConfigOptionGmosSouthGraphQLField" = (
10823
10874
  SpectroscopyConfigOptionGmosSouthGraphQLField("fpu")
10824
10875
  )
10876
+ "The builtin FPU, present for single-slit configurations. Null for multislit\n(MOS) configurations, where the focal-plane unit is a custom mask."
10825
10877
  grating: "SpectroscopyConfigOptionGmosSouthGraphQLField" = (
10826
10878
  SpectroscopyConfigOptionGmosSouthGraphQLField("grating")
10827
10879
  )
@@ -1285,6 +1285,12 @@ class Igrins2LongSlitGraphQLField(GraphQLField):
1285
1285
  return self
1286
1286
 
1287
1287
 
1288
+ class Igrins2SvcConfigGraphQLField(GraphQLField):
1289
+ def alias(self, alias: str) -> "Igrins2SvcConfigGraphQLField":
1290
+ self._alias = alias
1291
+ return self
1292
+
1293
+
1288
1294
  class GnirsImagingFilterGraphQLField(GraphQLField):
1289
1295
  def alias(self, alias: str) -> "GnirsImagingFilterGraphQLField":
1290
1296
  self._alias = alias
@@ -324,10 +324,12 @@ class TimeAccountingCategory(str, Enum):
324
324
  AR = "AR"
325
325
  BR = "BR"
326
326
  CA = "CA"
327
+ CAL = "CAL"
327
328
  CFHT = "CFHT"
328
329
  CL = "CL"
329
330
  DD = "DD"
330
331
  DS = "DS"
332
+ ENG = "ENG"
331
333
  GT = "GT"
332
334
  JP = "JP"
333
335
  KECK = "KECK"
@@ -659,9 +659,6 @@ class Igrins2LongSlitDetails(BaseModel):
659
659
  exposure_time_mode: "Igrins2LongSlitDetailsExposureTimeMode" = Field(
660
660
  alias="exposureTimeMode"
661
661
  )
662
- save_svc_images: bool = Field(alias="saveSVCImages")
663
- default_save_svc_images: bool = Field(alias="defaultSaveSVCImages")
664
- explicit_save_svc_images: Optional[bool] = Field(alias="explicitSaveSVCImages")
665
662
  telluric_type: "Igrins2LongSlitDetailsTelluricType" = Field(alias="telluricType")
666
663
 
667
664
 
@@ -2727,10 +2727,8 @@ class Igrins2LongSlitInput(BaseModel):
2727
2727
  alias=str("exposureTimeMode"), default=None
2728
2728
  )
2729
2729
  "The exposureTimeMode field may be unset by assigning a null value, or ignored\nby skipping it altogether"
2730
- explicit_save_svc_images: Optional[bool] = Field(
2731
- alias=str("explicitSaveSVCImages"), default=None
2732
- )
2733
- "The save SVC images field may be unset by assigning a null value, or ignored\nby skipping it altogether"
2730
+ svc: Optional["Igrins2SvcInput"] = None
2731
+ "Slit-Viewing Camera (SVC) configuration."
2734
2732
  explicit_telescope_configs: Optional["SlitTelescopeConfigsInput"] = Field(
2735
2733
  alias=str("explicitTelescopeConfigs"), default=None
2736
2734
  )
@@ -2741,6 +2739,22 @@ class Igrins2LongSlitInput(BaseModel):
2741
2739
  "The telluricType field must be either specified or skipped altogether. It cannot be unset with a null value.\nOn create the default is HOT."
2742
2740
 
2743
2741
 
2742
+ class Igrins2SvcInput(BaseModel):
2743
+ """Edit or create IGRINS-2 Slit-Viewing Camera (SVC) configuration. A non-null
2744
+ object enables SVC image saving (turning it on if necessary) and applies the
2745
+ given sub-field overrides; a null value disables SVC image saving. Omitting the
2746
+ field leaves SVC state unchanged."""
2747
+
2748
+ explicit_exposure: Optional["TimeSpanInput"] = Field(
2749
+ alias=str("explicitExposure"), default=None
2750
+ )
2751
+ "The SVC exposure time may be unset by assigning a null value, or ignored by\nskipping it altogether."
2752
+ explicit_telescope_configs: Optional[list["TelescopeConfigInput"]] = Field(
2753
+ alias=str("explicitTelescopeConfigs"), default=None
2754
+ )
2755
+ "Explicit SVC telescope configs. May be unset by assigning a null value, or\nignored by skipping."
2756
+
2757
+
2744
2758
  class GnirsImagingFilterInput(BaseModel):
2745
2759
  """Defines a GNIRS imaging filter to use along with its exposure time mode."""
2746
2760
 
@@ -5152,6 +5166,7 @@ Flamingos2ImagingInput.model_rebuild()
5152
5166
  GhostDetectorConfigInput.model_rebuild()
5153
5167
  GhostIfuInput.model_rebuild()
5154
5168
  Igrins2LongSlitInput.model_rebuild()
5169
+ Igrins2SvcInput.model_rebuild()
5155
5170
  GnirsImagingFilterInput.model_rebuild()
5156
5171
  GnirsImagingInput.model_rebuild()
5157
5172
  GnirsSpectroscopyAcquisitionInput.model_rebuild()