qnty 0.1.1__py3-none-any.whl → 0.1.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.
@@ -8,8 +8,11 @@ Auto-generated by codegen/generators/field_vars.py
8
8
  DO NOT EDIT MANUALLY - changes will be overwritten.
9
9
  """
10
10
 
11
+ from typing import Self
12
+
11
13
  from ..dimensions import field_dims as dim
12
- from . import field_setter as ts
14
+ from . import field_setter
15
+ from .base_qnty import TypeSafeSetter
13
16
  from .field_qnty import FieldQnty
14
17
 
15
18
  # ===== QUANTITY CLASSES =====
@@ -33,7 +36,7 @@ class AbsorbedDose(FieldQnty):
33
36
  """
34
37
 
35
38
  __slots__ = ()
36
- _setter_class = ts.AbsorbedDoseSetter
39
+ _setter_class = field_setter.AbsorbedDoseSetter
37
40
  _dimension = dim.ABSORBED_DOSE
38
41
 
39
42
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -56,7 +59,7 @@ class AbsorbedDose(FieldQnty):
56
59
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
57
60
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
58
61
 
59
- def set(self, value: float, unit: str | None = None) -> ts.AbsorbedDoseSetter:
62
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AbsorbedDoseSetter':
60
63
  """
61
64
  Create a setter for this absorbed radiation dose quantity.
62
65
 
@@ -71,7 +74,17 @@ class AbsorbedDose(FieldQnty):
71
74
  >>> length = Length("beam_length")
72
75
  >>> length.set(100).millimeters # Sets to 100 mm
73
76
  """
74
- return ts.AbsorbedDoseSetter(self, value)
77
+ if unit is not None:
78
+ # Direct setting with unit
79
+ setter = field_setter.AbsorbedDoseSetter(self, value)
80
+ # Get the unit property and call it to set the value
81
+ if hasattr(setter, unit):
82
+ getattr(setter, unit)
83
+ else:
84
+ raise ValueError(f"Unknown unit: {unit}")
85
+ return self
86
+ else:
87
+ return field_setter.AbsorbedDoseSetter(self, value)
75
88
 
76
89
 
77
90
  class Acceleration(FieldQnty):
@@ -92,7 +105,7 @@ class Acceleration(FieldQnty):
92
105
  """
93
106
 
94
107
  __slots__ = ()
95
- _setter_class = ts.AccelerationSetter
108
+ _setter_class = field_setter.AccelerationSetter
96
109
  _dimension = dim.ACCELERATION
97
110
 
98
111
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -115,7 +128,7 @@ class Acceleration(FieldQnty):
115
128
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
116
129
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
117
130
 
118
- def set(self, value: float, unit: str | None = None) -> ts.AccelerationSetter:
131
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AccelerationSetter':
119
132
  """
120
133
  Create a setter for this acceleration quantity.
121
134
 
@@ -130,7 +143,17 @@ class Acceleration(FieldQnty):
130
143
  >>> length = Length("beam_length")
131
144
  >>> length.set(100).millimeters # Sets to 100 mm
132
145
  """
133
- return ts.AccelerationSetter(self, value)
146
+ if unit is not None:
147
+ # Direct setting with unit
148
+ setter = field_setter.AccelerationSetter(self, value)
149
+ # Get the unit property and call it to set the value
150
+ if hasattr(setter, unit):
151
+ getattr(setter, unit)
152
+ else:
153
+ raise ValueError(f"Unknown unit: {unit}")
154
+ return self
155
+ else:
156
+ return field_setter.AccelerationSetter(self, value)
134
157
 
135
158
 
136
159
  class ActivationEnergy(FieldQnty):
@@ -151,7 +174,7 @@ class ActivationEnergy(FieldQnty):
151
174
  """
152
175
 
153
176
  __slots__ = ()
154
- _setter_class = ts.ActivationEnergySetter
177
+ _setter_class = field_setter.ActivationEnergySetter
155
178
  _dimension = dim.ACTIVATION_ENERGY
156
179
 
157
180
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -174,7 +197,7 @@ class ActivationEnergy(FieldQnty):
174
197
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
175
198
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
176
199
 
177
- def set(self, value: float, unit: str | None = None) -> ts.ActivationEnergySetter:
200
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ActivationEnergySetter':
178
201
  """
179
202
  Create a setter for this activation energy quantity.
180
203
 
@@ -189,7 +212,17 @@ class ActivationEnergy(FieldQnty):
189
212
  >>> length = Length("beam_length")
190
213
  >>> length.set(100).millimeters # Sets to 100 mm
191
214
  """
192
- return ts.ActivationEnergySetter(self, value)
215
+ if unit is not None:
216
+ # Direct setting with unit
217
+ setter = field_setter.ActivationEnergySetter(self, value)
218
+ # Get the unit property and call it to set the value
219
+ if hasattr(setter, unit):
220
+ getattr(setter, unit)
221
+ else:
222
+ raise ValueError(f"Unknown unit: {unit}")
223
+ return self
224
+ else:
225
+ return field_setter.ActivationEnergySetter(self, value)
193
226
 
194
227
 
195
228
  class AmountOfSubstance(FieldQnty):
@@ -210,7 +243,7 @@ class AmountOfSubstance(FieldQnty):
210
243
  """
211
244
 
212
245
  __slots__ = ()
213
- _setter_class = ts.AmountOfSubstanceSetter
246
+ _setter_class = field_setter.AmountOfSubstanceSetter
214
247
  _dimension = dim.AMOUNT_OF_SUBSTANCE
215
248
 
216
249
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -233,7 +266,7 @@ class AmountOfSubstance(FieldQnty):
233
266
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
234
267
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
235
268
 
236
- def set(self, value: float, unit: str | None = None) -> ts.AmountOfSubstanceSetter:
269
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AmountOfSubstanceSetter':
237
270
  """
238
271
  Create a setter for this amount of substance quantity.
239
272
 
@@ -248,7 +281,17 @@ class AmountOfSubstance(FieldQnty):
248
281
  >>> length = Length("beam_length")
249
282
  >>> length.set(100).millimeters # Sets to 100 mm
250
283
  """
251
- return ts.AmountOfSubstanceSetter(self, value)
284
+ if unit is not None:
285
+ # Direct setting with unit
286
+ setter = field_setter.AmountOfSubstanceSetter(self, value)
287
+ # Get the unit property and call it to set the value
288
+ if hasattr(setter, unit):
289
+ getattr(setter, unit)
290
+ else:
291
+ raise ValueError(f"Unknown unit: {unit}")
292
+ return self
293
+ else:
294
+ return field_setter.AmountOfSubstanceSetter(self, value)
252
295
 
253
296
 
254
297
  class AnglePlane(FieldQnty):
@@ -269,7 +312,7 @@ class AnglePlane(FieldQnty):
269
312
  """
270
313
 
271
314
  __slots__ = ()
272
- _setter_class = ts.AnglePlaneSetter
315
+ _setter_class = field_setter.AnglePlaneSetter
273
316
  _dimension = dim.ANGLE_PLANE
274
317
 
275
318
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -292,7 +335,7 @@ class AnglePlane(FieldQnty):
292
335
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
293
336
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
294
337
 
295
- def set(self, value: float, unit: str | None = None) -> ts.AnglePlaneSetter:
338
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AnglePlaneSetter':
296
339
  """
297
340
  Create a setter for this angle, plane quantity.
298
341
 
@@ -307,7 +350,17 @@ class AnglePlane(FieldQnty):
307
350
  >>> length = Length("beam_length")
308
351
  >>> length.set(100).millimeters # Sets to 100 mm
309
352
  """
310
- return ts.AnglePlaneSetter(self, value)
353
+ if unit is not None:
354
+ # Direct setting with unit
355
+ setter = field_setter.AnglePlaneSetter(self, value)
356
+ # Get the unit property and call it to set the value
357
+ if hasattr(setter, unit):
358
+ getattr(setter, unit)
359
+ else:
360
+ raise ValueError(f"Unknown unit: {unit}")
361
+ return self
362
+ else:
363
+ return field_setter.AnglePlaneSetter(self, value)
311
364
 
312
365
 
313
366
  class AngleSolid(FieldQnty):
@@ -328,7 +381,7 @@ class AngleSolid(FieldQnty):
328
381
  """
329
382
 
330
383
  __slots__ = ()
331
- _setter_class = ts.AngleSolidSetter
384
+ _setter_class = field_setter.AngleSolidSetter
332
385
  _dimension = dim.ANGLE_SOLID
333
386
 
334
387
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -351,7 +404,7 @@ class AngleSolid(FieldQnty):
351
404
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
352
405
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
353
406
 
354
- def set(self, value: float, unit: str | None = None) -> ts.AngleSolidSetter:
407
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AngleSolidSetter':
355
408
  """
356
409
  Create a setter for this angle, solid quantity.
357
410
 
@@ -366,7 +419,17 @@ class AngleSolid(FieldQnty):
366
419
  >>> length = Length("beam_length")
367
420
  >>> length.set(100).millimeters # Sets to 100 mm
368
421
  """
369
- return ts.AngleSolidSetter(self, value)
422
+ if unit is not None:
423
+ # Direct setting with unit
424
+ setter = field_setter.AngleSolidSetter(self, value)
425
+ # Get the unit property and call it to set the value
426
+ if hasattr(setter, unit):
427
+ getattr(setter, unit)
428
+ else:
429
+ raise ValueError(f"Unknown unit: {unit}")
430
+ return self
431
+ else:
432
+ return field_setter.AngleSolidSetter(self, value)
370
433
 
371
434
 
372
435
  class AngularAcceleration(FieldQnty):
@@ -387,7 +450,7 @@ class AngularAcceleration(FieldQnty):
387
450
  """
388
451
 
389
452
  __slots__ = ()
390
- _setter_class = ts.AngularAccelerationSetter
453
+ _setter_class = field_setter.AngularAccelerationSetter
391
454
  _dimension = dim.ANGULAR_ACCELERATION
392
455
 
393
456
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -410,7 +473,7 @@ class AngularAcceleration(FieldQnty):
410
473
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
411
474
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
412
475
 
413
- def set(self, value: float, unit: str | None = None) -> ts.AngularAccelerationSetter:
476
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AngularAccelerationSetter':
414
477
  """
415
478
  Create a setter for this angular acceleration quantity.
416
479
 
@@ -425,7 +488,17 @@ class AngularAcceleration(FieldQnty):
425
488
  >>> length = Length("beam_length")
426
489
  >>> length.set(100).millimeters # Sets to 100 mm
427
490
  """
428
- return ts.AngularAccelerationSetter(self, value)
491
+ if unit is not None:
492
+ # Direct setting with unit
493
+ setter = field_setter.AngularAccelerationSetter(self, value)
494
+ # Get the unit property and call it to set the value
495
+ if hasattr(setter, unit):
496
+ getattr(setter, unit)
497
+ else:
498
+ raise ValueError(f"Unknown unit: {unit}")
499
+ return self
500
+ else:
501
+ return field_setter.AngularAccelerationSetter(self, value)
429
502
 
430
503
 
431
504
  class AngularMomentum(FieldQnty):
@@ -446,7 +519,7 @@ class AngularMomentum(FieldQnty):
446
519
  """
447
520
 
448
521
  __slots__ = ()
449
- _setter_class = ts.AngularMomentumSetter
522
+ _setter_class = field_setter.AngularMomentumSetter
450
523
  _dimension = dim.ANGULAR_MOMENTUM
451
524
 
452
525
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -469,7 +542,7 @@ class AngularMomentum(FieldQnty):
469
542
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
470
543
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
471
544
 
472
- def set(self, value: float, unit: str | None = None) -> ts.AngularMomentumSetter:
545
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AngularMomentumSetter':
473
546
  """
474
547
  Create a setter for this angular momentum quantity.
475
548
 
@@ -484,7 +557,17 @@ class AngularMomentum(FieldQnty):
484
557
  >>> length = Length("beam_length")
485
558
  >>> length.set(100).millimeters # Sets to 100 mm
486
559
  """
487
- return ts.AngularMomentumSetter(self, value)
560
+ if unit is not None:
561
+ # Direct setting with unit
562
+ setter = field_setter.AngularMomentumSetter(self, value)
563
+ # Get the unit property and call it to set the value
564
+ if hasattr(setter, unit):
565
+ getattr(setter, unit)
566
+ else:
567
+ raise ValueError(f"Unknown unit: {unit}")
568
+ return self
569
+ else:
570
+ return field_setter.AngularMomentumSetter(self, value)
488
571
 
489
572
 
490
573
  class Area(FieldQnty):
@@ -505,7 +588,7 @@ class Area(FieldQnty):
505
588
  """
506
589
 
507
590
  __slots__ = ()
508
- _setter_class = ts.AreaSetter
591
+ _setter_class = field_setter.AreaSetter
509
592
  _dimension = dim.AREA
510
593
 
511
594
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -528,7 +611,7 @@ class Area(FieldQnty):
528
611
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
529
612
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
530
613
 
531
- def set(self, value: float, unit: str | None = None) -> ts.AreaSetter:
614
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AreaSetter':
532
615
  """
533
616
  Create a setter for this area quantity.
534
617
 
@@ -543,7 +626,17 @@ class Area(FieldQnty):
543
626
  >>> length = Length("beam_length")
544
627
  >>> length.set(100).millimeters # Sets to 100 mm
545
628
  """
546
- return ts.AreaSetter(self, value)
629
+ if unit is not None:
630
+ # Direct setting with unit
631
+ setter = field_setter.AreaSetter(self, value)
632
+ # Get the unit property and call it to set the value
633
+ if hasattr(setter, unit):
634
+ getattr(setter, unit)
635
+ else:
636
+ raise ValueError(f"Unknown unit: {unit}")
637
+ return self
638
+ else:
639
+ return field_setter.AreaSetter(self, value)
547
640
 
548
641
 
549
642
  class AreaPerUnitVolume(FieldQnty):
@@ -564,7 +657,7 @@ class AreaPerUnitVolume(FieldQnty):
564
657
  """
565
658
 
566
659
  __slots__ = ()
567
- _setter_class = ts.AreaPerUnitVolumeSetter
660
+ _setter_class = field_setter.AreaPerUnitVolumeSetter
568
661
  _dimension = dim.AREA_PER_UNIT_VOLUME
569
662
 
570
663
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -587,7 +680,7 @@ class AreaPerUnitVolume(FieldQnty):
587
680
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
588
681
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
589
682
 
590
- def set(self, value: float, unit: str | None = None) -> ts.AreaPerUnitVolumeSetter:
683
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AreaPerUnitVolumeSetter':
591
684
  """
592
685
  Create a setter for this area per unit volume quantity.
593
686
 
@@ -602,7 +695,17 @@ class AreaPerUnitVolume(FieldQnty):
602
695
  >>> length = Length("beam_length")
603
696
  >>> length.set(100).millimeters # Sets to 100 mm
604
697
  """
605
- return ts.AreaPerUnitVolumeSetter(self, value)
698
+ if unit is not None:
699
+ # Direct setting with unit
700
+ setter = field_setter.AreaPerUnitVolumeSetter(self, value)
701
+ # Get the unit property and call it to set the value
702
+ if hasattr(setter, unit):
703
+ getattr(setter, unit)
704
+ else:
705
+ raise ValueError(f"Unknown unit: {unit}")
706
+ return self
707
+ else:
708
+ return field_setter.AreaPerUnitVolumeSetter(self, value)
606
709
 
607
710
 
608
711
  class AtomicWeight(FieldQnty):
@@ -623,7 +726,7 @@ class AtomicWeight(FieldQnty):
623
726
  """
624
727
 
625
728
  __slots__ = ()
626
- _setter_class = ts.AtomicWeightSetter
729
+ _setter_class = field_setter.AtomicWeightSetter
627
730
  _dimension = dim.ATOMIC_WEIGHT
628
731
 
629
732
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -646,7 +749,7 @@ class AtomicWeight(FieldQnty):
646
749
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
647
750
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
648
751
 
649
- def set(self, value: float, unit: str | None = None) -> ts.AtomicWeightSetter:
752
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.AtomicWeightSetter':
650
753
  """
651
754
  Create a setter for this atomic weight quantity.
652
755
 
@@ -661,7 +764,17 @@ class AtomicWeight(FieldQnty):
661
764
  >>> length = Length("beam_length")
662
765
  >>> length.set(100).millimeters # Sets to 100 mm
663
766
  """
664
- return ts.AtomicWeightSetter(self, value)
767
+ if unit is not None:
768
+ # Direct setting with unit
769
+ setter = field_setter.AtomicWeightSetter(self, value)
770
+ # Get the unit property and call it to set the value
771
+ if hasattr(setter, unit):
772
+ getattr(setter, unit)
773
+ else:
774
+ raise ValueError(f"Unknown unit: {unit}")
775
+ return self
776
+ else:
777
+ return field_setter.AtomicWeightSetter(self, value)
665
778
 
666
779
 
667
780
  class Concentration(FieldQnty):
@@ -682,7 +795,7 @@ class Concentration(FieldQnty):
682
795
  """
683
796
 
684
797
  __slots__ = ()
685
- _setter_class = ts.ConcentrationSetter
798
+ _setter_class = field_setter.ConcentrationSetter
686
799
  _dimension = dim.CONCENTRATION
687
800
 
688
801
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -705,7 +818,7 @@ class Concentration(FieldQnty):
705
818
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
706
819
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
707
820
 
708
- def set(self, value: float, unit: str | None = None) -> ts.ConcentrationSetter:
821
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ConcentrationSetter':
709
822
  """
710
823
  Create a setter for this concentration quantity.
711
824
 
@@ -720,7 +833,17 @@ class Concentration(FieldQnty):
720
833
  >>> length = Length("beam_length")
721
834
  >>> length.set(100).millimeters # Sets to 100 mm
722
835
  """
723
- return ts.ConcentrationSetter(self, value)
836
+ if unit is not None:
837
+ # Direct setting with unit
838
+ setter = field_setter.ConcentrationSetter(self, value)
839
+ # Get the unit property and call it to set the value
840
+ if hasattr(setter, unit):
841
+ getattr(setter, unit)
842
+ else:
843
+ raise ValueError(f"Unknown unit: {unit}")
844
+ return self
845
+ else:
846
+ return field_setter.ConcentrationSetter(self, value)
724
847
 
725
848
 
726
849
  class Dimensionless(FieldQnty):
@@ -739,7 +862,7 @@ class Dimensionless(FieldQnty):
739
862
  """
740
863
 
741
864
  __slots__ = ()
742
- _setter_class = ts.DimensionlessSetter
865
+ _setter_class = field_setter.DimensionlessSetter
743
866
  _dimension = dim.DIMENSIONLESS
744
867
 
745
868
  def __init__(self, name_or_value: str | int | float, name: str | None = None, is_known: bool = True):
@@ -759,40 +882,32 @@ class Dimensionless(FieldQnty):
759
882
  super().__init__(name_or_value, name, is_known=is_known)
760
883
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
761
884
 
762
- def set(self, value: float, unit: str | None = None) -> ts.DimensionlessSetter:
885
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.DimensionlessSetter':
763
886
  """
764
887
  Create a setter for this dimensionless quantity.
765
888
 
766
889
  Args:
767
890
  value: The numeric value to set
768
- unit: Optional unit string (for direct setting)
891
+ unit: Optional unit string (for compatibility with base class)
769
892
 
770
893
  Returns:
771
- DimensionlessSetter: A setter with unit properties like .dimensionless
894
+ DimensionlessSetter: A setter with unit properties like .meters, .inches, etc.
772
895
 
773
896
  Example:
774
- >>> factor = Dimensionless("factor")
775
- >>> factor.set(2.5).dimensionless # Sets to 2.5
776
- >>> factor.set(2.5, "dimensionless") # Direct setting
897
+ >>> length = Length("beam_length")
898
+ >>> length.set(100).millimeters # Sets to 100 mm
777
899
  """
778
900
  if unit is not None:
779
901
  # Direct setting with unit
780
- setter = ts.DimensionlessSetter(self, value)
902
+ setter = field_setter.DimensionlessSetter(self, value)
781
903
  # Get the unit property and call it to set the value
782
904
  if hasattr(setter, unit):
783
905
  getattr(setter, unit)
784
906
  else:
785
- # Try common aliases
786
- unit_aliases = {
787
- "dimensionless": "dimensionless", "": "dimensionless"
788
- }
789
- if unit in unit_aliases and hasattr(setter, unit_aliases[unit]):
790
- getattr(setter, unit_aliases[unit])
791
- else:
792
- raise ValueError(f"Unknown unit: {unit}")
793
- return self # Return the variable itself for consistency
907
+ raise ValueError(f"Unknown unit: {unit}")
908
+ return self
794
909
  else:
795
- return ts.DimensionlessSetter(self, value)
910
+ return field_setter.DimensionlessSetter(self, value)
796
911
 
797
912
 
798
913
  class DynamicFluidity(FieldQnty):
@@ -813,7 +928,7 @@ class DynamicFluidity(FieldQnty):
813
928
  """
814
929
 
815
930
  __slots__ = ()
816
- _setter_class = ts.DynamicFluiditySetter
931
+ _setter_class = field_setter.DynamicFluiditySetter
817
932
  _dimension = dim.DYNAMIC_FLUIDITY
818
933
 
819
934
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -836,7 +951,7 @@ class DynamicFluidity(FieldQnty):
836
951
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
837
952
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
838
953
 
839
- def set(self, value: float, unit: str | None = None) -> ts.DynamicFluiditySetter:
954
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.DynamicFluiditySetter':
840
955
  """
841
956
  Create a setter for this dynamic fluidity quantity.
842
957
 
@@ -851,7 +966,17 @@ class DynamicFluidity(FieldQnty):
851
966
  >>> length = Length("beam_length")
852
967
  >>> length.set(100).millimeters # Sets to 100 mm
853
968
  """
854
- return ts.DynamicFluiditySetter(self, value)
969
+ if unit is not None:
970
+ # Direct setting with unit
971
+ setter = field_setter.DynamicFluiditySetter(self, value)
972
+ # Get the unit property and call it to set the value
973
+ if hasattr(setter, unit):
974
+ getattr(setter, unit)
975
+ else:
976
+ raise ValueError(f"Unknown unit: {unit}")
977
+ return self
978
+ else:
979
+ return field_setter.DynamicFluiditySetter(self, value)
855
980
 
856
981
 
857
982
  class ElectricCapacitance(FieldQnty):
@@ -872,7 +997,7 @@ class ElectricCapacitance(FieldQnty):
872
997
  """
873
998
 
874
999
  __slots__ = ()
875
- _setter_class = ts.ElectricCapacitanceSetter
1000
+ _setter_class = field_setter.ElectricCapacitanceSetter
876
1001
  _dimension = dim.ELECTRIC_CAPACITANCE
877
1002
 
878
1003
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -895,7 +1020,7 @@ class ElectricCapacitance(FieldQnty):
895
1020
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
896
1021
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
897
1022
 
898
- def set(self, value: float, unit: str | None = None) -> ts.ElectricCapacitanceSetter:
1023
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricCapacitanceSetter':
899
1024
  """
900
1025
  Create a setter for this electric capacitance quantity.
901
1026
 
@@ -910,7 +1035,17 @@ class ElectricCapacitance(FieldQnty):
910
1035
  >>> length = Length("beam_length")
911
1036
  >>> length.set(100).millimeters # Sets to 100 mm
912
1037
  """
913
- return ts.ElectricCapacitanceSetter(self, value)
1038
+ if unit is not None:
1039
+ # Direct setting with unit
1040
+ setter = field_setter.ElectricCapacitanceSetter(self, value)
1041
+ # Get the unit property and call it to set the value
1042
+ if hasattr(setter, unit):
1043
+ getattr(setter, unit)
1044
+ else:
1045
+ raise ValueError(f"Unknown unit: {unit}")
1046
+ return self
1047
+ else:
1048
+ return field_setter.ElectricCapacitanceSetter(self, value)
914
1049
 
915
1050
 
916
1051
  class ElectricCharge(FieldQnty):
@@ -931,7 +1066,7 @@ class ElectricCharge(FieldQnty):
931
1066
  """
932
1067
 
933
1068
  __slots__ = ()
934
- _setter_class = ts.ElectricChargeSetter
1069
+ _setter_class = field_setter.ElectricChargeSetter
935
1070
  _dimension = dim.ELECTRIC_CHARGE
936
1071
 
937
1072
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -954,7 +1089,7 @@ class ElectricCharge(FieldQnty):
954
1089
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
955
1090
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
956
1091
 
957
- def set(self, value: float, unit: str | None = None) -> ts.ElectricChargeSetter:
1092
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricChargeSetter':
958
1093
  """
959
1094
  Create a setter for this electric charge quantity.
960
1095
 
@@ -969,7 +1104,17 @@ class ElectricCharge(FieldQnty):
969
1104
  >>> length = Length("beam_length")
970
1105
  >>> length.set(100).millimeters # Sets to 100 mm
971
1106
  """
972
- return ts.ElectricChargeSetter(self, value)
1107
+ if unit is not None:
1108
+ # Direct setting with unit
1109
+ setter = field_setter.ElectricChargeSetter(self, value)
1110
+ # Get the unit property and call it to set the value
1111
+ if hasattr(setter, unit):
1112
+ getattr(setter, unit)
1113
+ else:
1114
+ raise ValueError(f"Unknown unit: {unit}")
1115
+ return self
1116
+ else:
1117
+ return field_setter.ElectricChargeSetter(self, value)
973
1118
 
974
1119
 
975
1120
  class ElectricCurrentIntensity(FieldQnty):
@@ -990,7 +1135,7 @@ class ElectricCurrentIntensity(FieldQnty):
990
1135
  """
991
1136
 
992
1137
  __slots__ = ()
993
- _setter_class = ts.ElectricCurrentIntensitySetter
1138
+ _setter_class = field_setter.ElectricCurrentIntensitySetter
994
1139
  _dimension = dim.ELECTRIC_CURRENT_INTENSITY
995
1140
 
996
1141
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1013,7 +1158,7 @@ class ElectricCurrentIntensity(FieldQnty):
1013
1158
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1014
1159
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1015
1160
 
1016
- def set(self, value: float, unit: str | None = None) -> ts.ElectricCurrentIntensitySetter:
1161
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricCurrentIntensitySetter':
1017
1162
  """
1018
1163
  Create a setter for this electric current intensity quantity.
1019
1164
 
@@ -1028,7 +1173,17 @@ class ElectricCurrentIntensity(FieldQnty):
1028
1173
  >>> length = Length("beam_length")
1029
1174
  >>> length.set(100).millimeters # Sets to 100 mm
1030
1175
  """
1031
- return ts.ElectricCurrentIntensitySetter(self, value)
1176
+ if unit is not None:
1177
+ # Direct setting with unit
1178
+ setter = field_setter.ElectricCurrentIntensitySetter(self, value)
1179
+ # Get the unit property and call it to set the value
1180
+ if hasattr(setter, unit):
1181
+ getattr(setter, unit)
1182
+ else:
1183
+ raise ValueError(f"Unknown unit: {unit}")
1184
+ return self
1185
+ else:
1186
+ return field_setter.ElectricCurrentIntensitySetter(self, value)
1032
1187
 
1033
1188
 
1034
1189
  class ElectricDipoleMoment(FieldQnty):
@@ -1049,7 +1204,7 @@ class ElectricDipoleMoment(FieldQnty):
1049
1204
  """
1050
1205
 
1051
1206
  __slots__ = ()
1052
- _setter_class = ts.ElectricDipoleMomentSetter
1207
+ _setter_class = field_setter.ElectricDipoleMomentSetter
1053
1208
  _dimension = dim.ELECTRIC_DIPOLE_MOMENT
1054
1209
 
1055
1210
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1072,7 +1227,7 @@ class ElectricDipoleMoment(FieldQnty):
1072
1227
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1073
1228
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1074
1229
 
1075
- def set(self, value: float, unit: str | None = None) -> ts.ElectricDipoleMomentSetter:
1230
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricDipoleMomentSetter':
1076
1231
  """
1077
1232
  Create a setter for this electric dipole moment quantity.
1078
1233
 
@@ -1087,7 +1242,17 @@ class ElectricDipoleMoment(FieldQnty):
1087
1242
  >>> length = Length("beam_length")
1088
1243
  >>> length.set(100).millimeters # Sets to 100 mm
1089
1244
  """
1090
- return ts.ElectricDipoleMomentSetter(self, value)
1245
+ if unit is not None:
1246
+ # Direct setting with unit
1247
+ setter = field_setter.ElectricDipoleMomentSetter(self, value)
1248
+ # Get the unit property and call it to set the value
1249
+ if hasattr(setter, unit):
1250
+ getattr(setter, unit)
1251
+ else:
1252
+ raise ValueError(f"Unknown unit: {unit}")
1253
+ return self
1254
+ else:
1255
+ return field_setter.ElectricDipoleMomentSetter(self, value)
1091
1256
 
1092
1257
 
1093
1258
  class ElectricFieldStrength(FieldQnty):
@@ -1108,7 +1273,7 @@ class ElectricFieldStrength(FieldQnty):
1108
1273
  """
1109
1274
 
1110
1275
  __slots__ = ()
1111
- _setter_class = ts.ElectricFieldStrengthSetter
1276
+ _setter_class = field_setter.ElectricFieldStrengthSetter
1112
1277
  _dimension = dim.ELECTRIC_FIELD_STRENGTH
1113
1278
 
1114
1279
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1131,7 +1296,7 @@ class ElectricFieldStrength(FieldQnty):
1131
1296
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1132
1297
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1133
1298
 
1134
- def set(self, value: float, unit: str | None = None) -> ts.ElectricFieldStrengthSetter:
1299
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricFieldStrengthSetter':
1135
1300
  """
1136
1301
  Create a setter for this electric field strength quantity.
1137
1302
 
@@ -1146,7 +1311,17 @@ class ElectricFieldStrength(FieldQnty):
1146
1311
  >>> length = Length("beam_length")
1147
1312
  >>> length.set(100).millimeters # Sets to 100 mm
1148
1313
  """
1149
- return ts.ElectricFieldStrengthSetter(self, value)
1314
+ if unit is not None:
1315
+ # Direct setting with unit
1316
+ setter = field_setter.ElectricFieldStrengthSetter(self, value)
1317
+ # Get the unit property and call it to set the value
1318
+ if hasattr(setter, unit):
1319
+ getattr(setter, unit)
1320
+ else:
1321
+ raise ValueError(f"Unknown unit: {unit}")
1322
+ return self
1323
+ else:
1324
+ return field_setter.ElectricFieldStrengthSetter(self, value)
1150
1325
 
1151
1326
 
1152
1327
  class ElectricInductance(FieldQnty):
@@ -1167,7 +1342,7 @@ class ElectricInductance(FieldQnty):
1167
1342
  """
1168
1343
 
1169
1344
  __slots__ = ()
1170
- _setter_class = ts.ElectricInductanceSetter
1345
+ _setter_class = field_setter.ElectricInductanceSetter
1171
1346
  _dimension = dim.ELECTRIC_INDUCTANCE
1172
1347
 
1173
1348
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1190,7 +1365,7 @@ class ElectricInductance(FieldQnty):
1190
1365
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1191
1366
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1192
1367
 
1193
- def set(self, value: float, unit: str | None = None) -> ts.ElectricInductanceSetter:
1368
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricInductanceSetter':
1194
1369
  """
1195
1370
  Create a setter for this electric inductance quantity.
1196
1371
 
@@ -1205,7 +1380,17 @@ class ElectricInductance(FieldQnty):
1205
1380
  >>> length = Length("beam_length")
1206
1381
  >>> length.set(100).millimeters # Sets to 100 mm
1207
1382
  """
1208
- return ts.ElectricInductanceSetter(self, value)
1383
+ if unit is not None:
1384
+ # Direct setting with unit
1385
+ setter = field_setter.ElectricInductanceSetter(self, value)
1386
+ # Get the unit property and call it to set the value
1387
+ if hasattr(setter, unit):
1388
+ getattr(setter, unit)
1389
+ else:
1390
+ raise ValueError(f"Unknown unit: {unit}")
1391
+ return self
1392
+ else:
1393
+ return field_setter.ElectricInductanceSetter(self, value)
1209
1394
 
1210
1395
 
1211
1396
  class ElectricPotential(FieldQnty):
@@ -1226,7 +1411,7 @@ class ElectricPotential(FieldQnty):
1226
1411
  """
1227
1412
 
1228
1413
  __slots__ = ()
1229
- _setter_class = ts.ElectricPotentialSetter
1414
+ _setter_class = field_setter.ElectricPotentialSetter
1230
1415
  _dimension = dim.ELECTRIC_POTENTIAL
1231
1416
 
1232
1417
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1249,7 +1434,7 @@ class ElectricPotential(FieldQnty):
1249
1434
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1250
1435
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1251
1436
 
1252
- def set(self, value: float, unit: str | None = None) -> ts.ElectricPotentialSetter:
1437
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricPotentialSetter':
1253
1438
  """
1254
1439
  Create a setter for this electric potential quantity.
1255
1440
 
@@ -1264,7 +1449,17 @@ class ElectricPotential(FieldQnty):
1264
1449
  >>> length = Length("beam_length")
1265
1450
  >>> length.set(100).millimeters # Sets to 100 mm
1266
1451
  """
1267
- return ts.ElectricPotentialSetter(self, value)
1452
+ if unit is not None:
1453
+ # Direct setting with unit
1454
+ setter = field_setter.ElectricPotentialSetter(self, value)
1455
+ # Get the unit property and call it to set the value
1456
+ if hasattr(setter, unit):
1457
+ getattr(setter, unit)
1458
+ else:
1459
+ raise ValueError(f"Unknown unit: {unit}")
1460
+ return self
1461
+ else:
1462
+ return field_setter.ElectricPotentialSetter(self, value)
1268
1463
 
1269
1464
 
1270
1465
  class ElectricResistance(FieldQnty):
@@ -1285,7 +1480,7 @@ class ElectricResistance(FieldQnty):
1285
1480
  """
1286
1481
 
1287
1482
  __slots__ = ()
1288
- _setter_class = ts.ElectricResistanceSetter
1483
+ _setter_class = field_setter.ElectricResistanceSetter
1289
1484
  _dimension = dim.ELECTRIC_RESISTANCE
1290
1485
 
1291
1486
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1308,7 +1503,7 @@ class ElectricResistance(FieldQnty):
1308
1503
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1309
1504
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1310
1505
 
1311
- def set(self, value: float, unit: str | None = None) -> ts.ElectricResistanceSetter:
1506
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricResistanceSetter':
1312
1507
  """
1313
1508
  Create a setter for this electric resistance quantity.
1314
1509
 
@@ -1323,7 +1518,17 @@ class ElectricResistance(FieldQnty):
1323
1518
  >>> length = Length("beam_length")
1324
1519
  >>> length.set(100).millimeters # Sets to 100 mm
1325
1520
  """
1326
- return ts.ElectricResistanceSetter(self, value)
1521
+ if unit is not None:
1522
+ # Direct setting with unit
1523
+ setter = field_setter.ElectricResistanceSetter(self, value)
1524
+ # Get the unit property and call it to set the value
1525
+ if hasattr(setter, unit):
1526
+ getattr(setter, unit)
1527
+ else:
1528
+ raise ValueError(f"Unknown unit: {unit}")
1529
+ return self
1530
+ else:
1531
+ return field_setter.ElectricResistanceSetter(self, value)
1327
1532
 
1328
1533
 
1329
1534
  class ElectricalConductance(FieldQnty):
@@ -1344,7 +1549,7 @@ class ElectricalConductance(FieldQnty):
1344
1549
  """
1345
1550
 
1346
1551
  __slots__ = ()
1347
- _setter_class = ts.ElectricalConductanceSetter
1552
+ _setter_class = field_setter.ElectricalConductanceSetter
1348
1553
  _dimension = dim.ELECTRICAL_CONDUCTANCE
1349
1554
 
1350
1555
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1367,7 +1572,7 @@ class ElectricalConductance(FieldQnty):
1367
1572
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1368
1573
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1369
1574
 
1370
- def set(self, value: float, unit: str | None = None) -> ts.ElectricalConductanceSetter:
1575
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricalConductanceSetter':
1371
1576
  """
1372
1577
  Create a setter for this electrical conductance quantity.
1373
1578
 
@@ -1382,7 +1587,17 @@ class ElectricalConductance(FieldQnty):
1382
1587
  >>> length = Length("beam_length")
1383
1588
  >>> length.set(100).millimeters # Sets to 100 mm
1384
1589
  """
1385
- return ts.ElectricalConductanceSetter(self, value)
1590
+ if unit is not None:
1591
+ # Direct setting with unit
1592
+ setter = field_setter.ElectricalConductanceSetter(self, value)
1593
+ # Get the unit property and call it to set the value
1594
+ if hasattr(setter, unit):
1595
+ getattr(setter, unit)
1596
+ else:
1597
+ raise ValueError(f"Unknown unit: {unit}")
1598
+ return self
1599
+ else:
1600
+ return field_setter.ElectricalConductanceSetter(self, value)
1386
1601
 
1387
1602
 
1388
1603
  class ElectricalPermittivity(FieldQnty):
@@ -1403,7 +1618,7 @@ class ElectricalPermittivity(FieldQnty):
1403
1618
  """
1404
1619
 
1405
1620
  __slots__ = ()
1406
- _setter_class = ts.ElectricalPermittivitySetter
1621
+ _setter_class = field_setter.ElectricalPermittivitySetter
1407
1622
  _dimension = dim.ELECTRICAL_PERMITTIVITY
1408
1623
 
1409
1624
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1426,7 +1641,7 @@ class ElectricalPermittivity(FieldQnty):
1426
1641
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1427
1642
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1428
1643
 
1429
- def set(self, value: float, unit: str | None = None) -> ts.ElectricalPermittivitySetter:
1644
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricalPermittivitySetter':
1430
1645
  """
1431
1646
  Create a setter for this electrical permittivity quantity.
1432
1647
 
@@ -1441,7 +1656,17 @@ class ElectricalPermittivity(FieldQnty):
1441
1656
  >>> length = Length("beam_length")
1442
1657
  >>> length.set(100).millimeters # Sets to 100 mm
1443
1658
  """
1444
- return ts.ElectricalPermittivitySetter(self, value)
1659
+ if unit is not None:
1660
+ # Direct setting with unit
1661
+ setter = field_setter.ElectricalPermittivitySetter(self, value)
1662
+ # Get the unit property and call it to set the value
1663
+ if hasattr(setter, unit):
1664
+ getattr(setter, unit)
1665
+ else:
1666
+ raise ValueError(f"Unknown unit: {unit}")
1667
+ return self
1668
+ else:
1669
+ return field_setter.ElectricalPermittivitySetter(self, value)
1445
1670
 
1446
1671
 
1447
1672
  class ElectricalResistivity(FieldQnty):
@@ -1462,7 +1687,7 @@ class ElectricalResistivity(FieldQnty):
1462
1687
  """
1463
1688
 
1464
1689
  __slots__ = ()
1465
- _setter_class = ts.ElectricalResistivitySetter
1690
+ _setter_class = field_setter.ElectricalResistivitySetter
1466
1691
  _dimension = dim.ELECTRICAL_RESISTIVITY
1467
1692
 
1468
1693
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1485,7 +1710,7 @@ class ElectricalResistivity(FieldQnty):
1485
1710
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1486
1711
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1487
1712
 
1488
- def set(self, value: float, unit: str | None = None) -> ts.ElectricalResistivitySetter:
1713
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ElectricalResistivitySetter':
1489
1714
  """
1490
1715
  Create a setter for this electrical resistivity quantity.
1491
1716
 
@@ -1500,7 +1725,17 @@ class ElectricalResistivity(FieldQnty):
1500
1725
  >>> length = Length("beam_length")
1501
1726
  >>> length.set(100).millimeters # Sets to 100 mm
1502
1727
  """
1503
- return ts.ElectricalResistivitySetter(self, value)
1728
+ if unit is not None:
1729
+ # Direct setting with unit
1730
+ setter = field_setter.ElectricalResistivitySetter(self, value)
1731
+ # Get the unit property and call it to set the value
1732
+ if hasattr(setter, unit):
1733
+ getattr(setter, unit)
1734
+ else:
1735
+ raise ValueError(f"Unknown unit: {unit}")
1736
+ return self
1737
+ else:
1738
+ return field_setter.ElectricalResistivitySetter(self, value)
1504
1739
 
1505
1740
 
1506
1741
  class EnergyFlux(FieldQnty):
@@ -1521,7 +1756,7 @@ class EnergyFlux(FieldQnty):
1521
1756
  """
1522
1757
 
1523
1758
  __slots__ = ()
1524
- _setter_class = ts.EnergyFluxSetter
1759
+ _setter_class = field_setter.EnergyFluxSetter
1525
1760
  _dimension = dim.ENERGY_FLUX
1526
1761
 
1527
1762
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1544,7 +1779,7 @@ class EnergyFlux(FieldQnty):
1544
1779
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1545
1780
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1546
1781
 
1547
- def set(self, value: float, unit: str | None = None) -> ts.EnergyFluxSetter:
1782
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.EnergyFluxSetter':
1548
1783
  """
1549
1784
  Create a setter for this energy flux quantity.
1550
1785
 
@@ -1559,7 +1794,17 @@ class EnergyFlux(FieldQnty):
1559
1794
  >>> length = Length("beam_length")
1560
1795
  >>> length.set(100).millimeters # Sets to 100 mm
1561
1796
  """
1562
- return ts.EnergyFluxSetter(self, value)
1797
+ if unit is not None:
1798
+ # Direct setting with unit
1799
+ setter = field_setter.EnergyFluxSetter(self, value)
1800
+ # Get the unit property and call it to set the value
1801
+ if hasattr(setter, unit):
1802
+ getattr(setter, unit)
1803
+ else:
1804
+ raise ValueError(f"Unknown unit: {unit}")
1805
+ return self
1806
+ else:
1807
+ return field_setter.EnergyFluxSetter(self, value)
1563
1808
 
1564
1809
 
1565
1810
  class EnergyHeatWork(FieldQnty):
@@ -1580,7 +1825,7 @@ class EnergyHeatWork(FieldQnty):
1580
1825
  """
1581
1826
 
1582
1827
  __slots__ = ()
1583
- _setter_class = ts.EnergyHeatWorkSetter
1828
+ _setter_class = field_setter.EnergyHeatWorkSetter
1584
1829
  _dimension = dim.ENERGY_HEAT_WORK
1585
1830
 
1586
1831
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1603,7 +1848,7 @@ class EnergyHeatWork(FieldQnty):
1603
1848
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1604
1849
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1605
1850
 
1606
- def set(self, value: float, unit: str | None = None) -> ts.EnergyHeatWorkSetter:
1851
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.EnergyHeatWorkSetter':
1607
1852
  """
1608
1853
  Create a setter for this energy, heat, work quantity.
1609
1854
 
@@ -1618,7 +1863,17 @@ class EnergyHeatWork(FieldQnty):
1618
1863
  >>> length = Length("beam_length")
1619
1864
  >>> length.set(100).millimeters # Sets to 100 mm
1620
1865
  """
1621
- return ts.EnergyHeatWorkSetter(self, value)
1866
+ if unit is not None:
1867
+ # Direct setting with unit
1868
+ setter = field_setter.EnergyHeatWorkSetter(self, value)
1869
+ # Get the unit property and call it to set the value
1870
+ if hasattr(setter, unit):
1871
+ getattr(setter, unit)
1872
+ else:
1873
+ raise ValueError(f"Unknown unit: {unit}")
1874
+ return self
1875
+ else:
1876
+ return field_setter.EnergyHeatWorkSetter(self, value)
1622
1877
 
1623
1878
 
1624
1879
  class EnergyPerUnitArea(FieldQnty):
@@ -1639,7 +1894,7 @@ class EnergyPerUnitArea(FieldQnty):
1639
1894
  """
1640
1895
 
1641
1896
  __slots__ = ()
1642
- _setter_class = ts.EnergyPerUnitAreaSetter
1897
+ _setter_class = field_setter.EnergyPerUnitAreaSetter
1643
1898
  _dimension = dim.ENERGY_PER_UNIT_AREA
1644
1899
 
1645
1900
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1662,7 +1917,7 @@ class EnergyPerUnitArea(FieldQnty):
1662
1917
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1663
1918
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1664
1919
 
1665
- def set(self, value: float, unit: str | None = None) -> ts.EnergyPerUnitAreaSetter:
1920
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.EnergyPerUnitAreaSetter':
1666
1921
  """
1667
1922
  Create a setter for this energy per unit area quantity.
1668
1923
 
@@ -1677,7 +1932,17 @@ class EnergyPerUnitArea(FieldQnty):
1677
1932
  >>> length = Length("beam_length")
1678
1933
  >>> length.set(100).millimeters # Sets to 100 mm
1679
1934
  """
1680
- return ts.EnergyPerUnitAreaSetter(self, value)
1935
+ if unit is not None:
1936
+ # Direct setting with unit
1937
+ setter = field_setter.EnergyPerUnitAreaSetter(self, value)
1938
+ # Get the unit property and call it to set the value
1939
+ if hasattr(setter, unit):
1940
+ getattr(setter, unit)
1941
+ else:
1942
+ raise ValueError(f"Unknown unit: {unit}")
1943
+ return self
1944
+ else:
1945
+ return field_setter.EnergyPerUnitAreaSetter(self, value)
1681
1946
 
1682
1947
 
1683
1948
  class Force(FieldQnty):
@@ -1698,7 +1963,7 @@ class Force(FieldQnty):
1698
1963
  """
1699
1964
 
1700
1965
  __slots__ = ()
1701
- _setter_class = ts.ForceSetter
1966
+ _setter_class = field_setter.ForceSetter
1702
1967
  _dimension = dim.FORCE
1703
1968
 
1704
1969
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1721,7 +1986,7 @@ class Force(FieldQnty):
1721
1986
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1722
1987
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1723
1988
 
1724
- def set(self, value: float, unit: str | None = None) -> ts.ForceSetter:
1989
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ForceSetter':
1725
1990
  """
1726
1991
  Create a setter for this force quantity.
1727
1992
 
@@ -1736,7 +2001,17 @@ class Force(FieldQnty):
1736
2001
  >>> length = Length("beam_length")
1737
2002
  >>> length.set(100).millimeters # Sets to 100 mm
1738
2003
  """
1739
- return ts.ForceSetter(self, value)
2004
+ if unit is not None:
2005
+ # Direct setting with unit
2006
+ setter = field_setter.ForceSetter(self, value)
2007
+ # Get the unit property and call it to set the value
2008
+ if hasattr(setter, unit):
2009
+ getattr(setter, unit)
2010
+ else:
2011
+ raise ValueError(f"Unknown unit: {unit}")
2012
+ return self
2013
+ else:
2014
+ return field_setter.ForceSetter(self, value)
1740
2015
 
1741
2016
 
1742
2017
  class ForceBody(FieldQnty):
@@ -1757,7 +2032,7 @@ class ForceBody(FieldQnty):
1757
2032
  """
1758
2033
 
1759
2034
  __slots__ = ()
1760
- _setter_class = ts.ForceBodySetter
2035
+ _setter_class = field_setter.ForceBodySetter
1761
2036
  _dimension = dim.FORCE_BODY
1762
2037
 
1763
2038
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1780,7 +2055,7 @@ class ForceBody(FieldQnty):
1780
2055
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1781
2056
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1782
2057
 
1783
- def set(self, value: float, unit: str | None = None) -> ts.ForceBodySetter:
2058
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ForceBodySetter':
1784
2059
  """
1785
2060
  Create a setter for this force (body) quantity.
1786
2061
 
@@ -1795,7 +2070,17 @@ class ForceBody(FieldQnty):
1795
2070
  >>> length = Length("beam_length")
1796
2071
  >>> length.set(100).millimeters # Sets to 100 mm
1797
2072
  """
1798
- return ts.ForceBodySetter(self, value)
2073
+ if unit is not None:
2074
+ # Direct setting with unit
2075
+ setter = field_setter.ForceBodySetter(self, value)
2076
+ # Get the unit property and call it to set the value
2077
+ if hasattr(setter, unit):
2078
+ getattr(setter, unit)
2079
+ else:
2080
+ raise ValueError(f"Unknown unit: {unit}")
2081
+ return self
2082
+ else:
2083
+ return field_setter.ForceBodySetter(self, value)
1799
2084
 
1800
2085
 
1801
2086
  class ForcePerUnitMass(FieldQnty):
@@ -1816,7 +2101,7 @@ class ForcePerUnitMass(FieldQnty):
1816
2101
  """
1817
2102
 
1818
2103
  __slots__ = ()
1819
- _setter_class = ts.ForcePerUnitMassSetter
2104
+ _setter_class = field_setter.ForcePerUnitMassSetter
1820
2105
  _dimension = dim.FORCE_PER_UNIT_MASS
1821
2106
 
1822
2107
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1839,7 +2124,7 @@ class ForcePerUnitMass(FieldQnty):
1839
2124
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1840
2125
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1841
2126
 
1842
- def set(self, value: float, unit: str | None = None) -> ts.ForcePerUnitMassSetter:
2127
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ForcePerUnitMassSetter':
1843
2128
  """
1844
2129
  Create a setter for this force per unit mass quantity.
1845
2130
 
@@ -1854,7 +2139,17 @@ class ForcePerUnitMass(FieldQnty):
1854
2139
  >>> length = Length("beam_length")
1855
2140
  >>> length.set(100).millimeters # Sets to 100 mm
1856
2141
  """
1857
- return ts.ForcePerUnitMassSetter(self, value)
2142
+ if unit is not None:
2143
+ # Direct setting with unit
2144
+ setter = field_setter.ForcePerUnitMassSetter(self, value)
2145
+ # Get the unit property and call it to set the value
2146
+ if hasattr(setter, unit):
2147
+ getattr(setter, unit)
2148
+ else:
2149
+ raise ValueError(f"Unknown unit: {unit}")
2150
+ return self
2151
+ else:
2152
+ return field_setter.ForcePerUnitMassSetter(self, value)
1858
2153
 
1859
2154
 
1860
2155
  class FrequencyVoltageRatio(FieldQnty):
@@ -1875,7 +2170,7 @@ class FrequencyVoltageRatio(FieldQnty):
1875
2170
  """
1876
2171
 
1877
2172
  __slots__ = ()
1878
- _setter_class = ts.FrequencyVoltageRatioSetter
2173
+ _setter_class = field_setter.FrequencyVoltageRatioSetter
1879
2174
  _dimension = dim.FREQUENCY_VOLTAGE_RATIO
1880
2175
 
1881
2176
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1898,7 +2193,7 @@ class FrequencyVoltageRatio(FieldQnty):
1898
2193
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1899
2194
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1900
2195
 
1901
- def set(self, value: float, unit: str | None = None) -> ts.FrequencyVoltageRatioSetter:
2196
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.FrequencyVoltageRatioSetter':
1902
2197
  """
1903
2198
  Create a setter for this frequency voltage ratio quantity.
1904
2199
 
@@ -1913,7 +2208,17 @@ class FrequencyVoltageRatio(FieldQnty):
1913
2208
  >>> length = Length("beam_length")
1914
2209
  >>> length.set(100).millimeters # Sets to 100 mm
1915
2210
  """
1916
- return ts.FrequencyVoltageRatioSetter(self, value)
2211
+ if unit is not None:
2212
+ # Direct setting with unit
2213
+ setter = field_setter.FrequencyVoltageRatioSetter(self, value)
2214
+ # Get the unit property and call it to set the value
2215
+ if hasattr(setter, unit):
2216
+ getattr(setter, unit)
2217
+ else:
2218
+ raise ValueError(f"Unknown unit: {unit}")
2219
+ return self
2220
+ else:
2221
+ return field_setter.FrequencyVoltageRatioSetter(self, value)
1917
2222
 
1918
2223
 
1919
2224
  class FuelConsumption(FieldQnty):
@@ -1934,7 +2239,7 @@ class FuelConsumption(FieldQnty):
1934
2239
  """
1935
2240
 
1936
2241
  __slots__ = ()
1937
- _setter_class = ts.FuelConsumptionSetter
2242
+ _setter_class = field_setter.FuelConsumptionSetter
1938
2243
  _dimension = dim.FUEL_CONSUMPTION
1939
2244
 
1940
2245
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1957,7 +2262,7 @@ class FuelConsumption(FieldQnty):
1957
2262
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1958
2263
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1959
2264
 
1960
- def set(self, value: float, unit: str | None = None) -> ts.FuelConsumptionSetter:
2265
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.FuelConsumptionSetter':
1961
2266
  """
1962
2267
  Create a setter for this fuel consumption quantity.
1963
2268
 
@@ -1972,7 +2277,17 @@ class FuelConsumption(FieldQnty):
1972
2277
  >>> length = Length("beam_length")
1973
2278
  >>> length.set(100).millimeters # Sets to 100 mm
1974
2279
  """
1975
- return ts.FuelConsumptionSetter(self, value)
2280
+ if unit is not None:
2281
+ # Direct setting with unit
2282
+ setter = field_setter.FuelConsumptionSetter(self, value)
2283
+ # Get the unit property and call it to set the value
2284
+ if hasattr(setter, unit):
2285
+ getattr(setter, unit)
2286
+ else:
2287
+ raise ValueError(f"Unknown unit: {unit}")
2288
+ return self
2289
+ else:
2290
+ return field_setter.FuelConsumptionSetter(self, value)
1976
2291
 
1977
2292
 
1978
2293
  class HeatOfCombustion(FieldQnty):
@@ -1993,7 +2308,7 @@ class HeatOfCombustion(FieldQnty):
1993
2308
  """
1994
2309
 
1995
2310
  __slots__ = ()
1996
- _setter_class = ts.HeatOfCombustionSetter
2311
+ _setter_class = field_setter.HeatOfCombustionSetter
1997
2312
  _dimension = dim.HEAT_OF_COMBUSTION
1998
2313
 
1999
2314
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2016,7 +2331,7 @@ class HeatOfCombustion(FieldQnty):
2016
2331
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2017
2332
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2018
2333
 
2019
- def set(self, value: float, unit: str | None = None) -> ts.HeatOfCombustionSetter:
2334
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.HeatOfCombustionSetter':
2020
2335
  """
2021
2336
  Create a setter for this heat of combustion quantity.
2022
2337
 
@@ -2031,7 +2346,17 @@ class HeatOfCombustion(FieldQnty):
2031
2346
  >>> length = Length("beam_length")
2032
2347
  >>> length.set(100).millimeters # Sets to 100 mm
2033
2348
  """
2034
- return ts.HeatOfCombustionSetter(self, value)
2349
+ if unit is not None:
2350
+ # Direct setting with unit
2351
+ setter = field_setter.HeatOfCombustionSetter(self, value)
2352
+ # Get the unit property and call it to set the value
2353
+ if hasattr(setter, unit):
2354
+ getattr(setter, unit)
2355
+ else:
2356
+ raise ValueError(f"Unknown unit: {unit}")
2357
+ return self
2358
+ else:
2359
+ return field_setter.HeatOfCombustionSetter(self, value)
2035
2360
 
2036
2361
 
2037
2362
  class HeatOfFusion(FieldQnty):
@@ -2052,7 +2377,7 @@ class HeatOfFusion(FieldQnty):
2052
2377
  """
2053
2378
 
2054
2379
  __slots__ = ()
2055
- _setter_class = ts.HeatOfFusionSetter
2380
+ _setter_class = field_setter.HeatOfFusionSetter
2056
2381
  _dimension = dim.HEAT_OF_FUSION
2057
2382
 
2058
2383
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2075,7 +2400,7 @@ class HeatOfFusion(FieldQnty):
2075
2400
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2076
2401
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2077
2402
 
2078
- def set(self, value: float, unit: str | None = None) -> ts.HeatOfFusionSetter:
2403
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.HeatOfFusionSetter':
2079
2404
  """
2080
2405
  Create a setter for this heat of fusion quantity.
2081
2406
 
@@ -2090,7 +2415,17 @@ class HeatOfFusion(FieldQnty):
2090
2415
  >>> length = Length("beam_length")
2091
2416
  >>> length.set(100).millimeters # Sets to 100 mm
2092
2417
  """
2093
- return ts.HeatOfFusionSetter(self, value)
2418
+ if unit is not None:
2419
+ # Direct setting with unit
2420
+ setter = field_setter.HeatOfFusionSetter(self, value)
2421
+ # Get the unit property and call it to set the value
2422
+ if hasattr(setter, unit):
2423
+ getattr(setter, unit)
2424
+ else:
2425
+ raise ValueError(f"Unknown unit: {unit}")
2426
+ return self
2427
+ else:
2428
+ return field_setter.HeatOfFusionSetter(self, value)
2094
2429
 
2095
2430
 
2096
2431
  class HeatOfVaporization(FieldQnty):
@@ -2111,7 +2446,7 @@ class HeatOfVaporization(FieldQnty):
2111
2446
  """
2112
2447
 
2113
2448
  __slots__ = ()
2114
- _setter_class = ts.HeatOfVaporizationSetter
2449
+ _setter_class = field_setter.HeatOfVaporizationSetter
2115
2450
  _dimension = dim.HEAT_OF_VAPORIZATION
2116
2451
 
2117
2452
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2134,7 +2469,7 @@ class HeatOfVaporization(FieldQnty):
2134
2469
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2135
2470
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2136
2471
 
2137
- def set(self, value: float, unit: str | None = None) -> ts.HeatOfVaporizationSetter:
2472
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.HeatOfVaporizationSetter':
2138
2473
  """
2139
2474
  Create a setter for this heat of vaporization quantity.
2140
2475
 
@@ -2149,7 +2484,17 @@ class HeatOfVaporization(FieldQnty):
2149
2484
  >>> length = Length("beam_length")
2150
2485
  >>> length.set(100).millimeters # Sets to 100 mm
2151
2486
  """
2152
- return ts.HeatOfVaporizationSetter(self, value)
2487
+ if unit is not None:
2488
+ # Direct setting with unit
2489
+ setter = field_setter.HeatOfVaporizationSetter(self, value)
2490
+ # Get the unit property and call it to set the value
2491
+ if hasattr(setter, unit):
2492
+ getattr(setter, unit)
2493
+ else:
2494
+ raise ValueError(f"Unknown unit: {unit}")
2495
+ return self
2496
+ else:
2497
+ return field_setter.HeatOfVaporizationSetter(self, value)
2153
2498
 
2154
2499
 
2155
2500
  class HeatTransferCoefficient(FieldQnty):
@@ -2170,7 +2515,7 @@ class HeatTransferCoefficient(FieldQnty):
2170
2515
  """
2171
2516
 
2172
2517
  __slots__ = ()
2173
- _setter_class = ts.HeatTransferCoefficientSetter
2518
+ _setter_class = field_setter.HeatTransferCoefficientSetter
2174
2519
  _dimension = dim.HEAT_TRANSFER_COEFFICIENT
2175
2520
 
2176
2521
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2193,7 +2538,7 @@ class HeatTransferCoefficient(FieldQnty):
2193
2538
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2194
2539
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2195
2540
 
2196
- def set(self, value: float, unit: str | None = None) -> ts.HeatTransferCoefficientSetter:
2541
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.HeatTransferCoefficientSetter':
2197
2542
  """
2198
2543
  Create a setter for this heat transfer coefficient quantity.
2199
2544
 
@@ -2208,7 +2553,17 @@ class HeatTransferCoefficient(FieldQnty):
2208
2553
  >>> length = Length("beam_length")
2209
2554
  >>> length.set(100).millimeters # Sets to 100 mm
2210
2555
  """
2211
- return ts.HeatTransferCoefficientSetter(self, value)
2556
+ if unit is not None:
2557
+ # Direct setting with unit
2558
+ setter = field_setter.HeatTransferCoefficientSetter(self, value)
2559
+ # Get the unit property and call it to set the value
2560
+ if hasattr(setter, unit):
2561
+ getattr(setter, unit)
2562
+ else:
2563
+ raise ValueError(f"Unknown unit: {unit}")
2564
+ return self
2565
+ else:
2566
+ return field_setter.HeatTransferCoefficientSetter(self, value)
2212
2567
 
2213
2568
 
2214
2569
  class Illuminance(FieldQnty):
@@ -2229,7 +2584,7 @@ class Illuminance(FieldQnty):
2229
2584
  """
2230
2585
 
2231
2586
  __slots__ = ()
2232
- _setter_class = ts.IlluminanceSetter
2587
+ _setter_class = field_setter.IlluminanceSetter
2233
2588
  _dimension = dim.ILLUMINANCE
2234
2589
 
2235
2590
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2252,7 +2607,7 @@ class Illuminance(FieldQnty):
2252
2607
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2253
2608
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2254
2609
 
2255
- def set(self, value: float, unit: str | None = None) -> ts.IlluminanceSetter:
2610
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.IlluminanceSetter':
2256
2611
  """
2257
2612
  Create a setter for this illuminance quantity.
2258
2613
 
@@ -2267,7 +2622,17 @@ class Illuminance(FieldQnty):
2267
2622
  >>> length = Length("beam_length")
2268
2623
  >>> length.set(100).millimeters # Sets to 100 mm
2269
2624
  """
2270
- return ts.IlluminanceSetter(self, value)
2625
+ if unit is not None:
2626
+ # Direct setting with unit
2627
+ setter = field_setter.IlluminanceSetter(self, value)
2628
+ # Get the unit property and call it to set the value
2629
+ if hasattr(setter, unit):
2630
+ getattr(setter, unit)
2631
+ else:
2632
+ raise ValueError(f"Unknown unit: {unit}")
2633
+ return self
2634
+ else:
2635
+ return field_setter.IlluminanceSetter(self, value)
2271
2636
 
2272
2637
 
2273
2638
  class KineticEnergyOfTurbulence(FieldQnty):
@@ -2288,7 +2653,7 @@ class KineticEnergyOfTurbulence(FieldQnty):
2288
2653
  """
2289
2654
 
2290
2655
  __slots__ = ()
2291
- _setter_class = ts.KineticEnergyOfTurbulenceSetter
2656
+ _setter_class = field_setter.KineticEnergyOfTurbulenceSetter
2292
2657
  _dimension = dim.KINETIC_ENERGY_OF_TURBULENCE
2293
2658
 
2294
2659
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2311,7 +2676,7 @@ class KineticEnergyOfTurbulence(FieldQnty):
2311
2676
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2312
2677
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2313
2678
 
2314
- def set(self, value: float, unit: str | None = None) -> ts.KineticEnergyOfTurbulenceSetter:
2679
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.KineticEnergyOfTurbulenceSetter':
2315
2680
  """
2316
2681
  Create a setter for this kinetic energy of turbulence quantity.
2317
2682
 
@@ -2326,7 +2691,17 @@ class KineticEnergyOfTurbulence(FieldQnty):
2326
2691
  >>> length = Length("beam_length")
2327
2692
  >>> length.set(100).millimeters # Sets to 100 mm
2328
2693
  """
2329
- return ts.KineticEnergyOfTurbulenceSetter(self, value)
2694
+ if unit is not None:
2695
+ # Direct setting with unit
2696
+ setter = field_setter.KineticEnergyOfTurbulenceSetter(self, value)
2697
+ # Get the unit property and call it to set the value
2698
+ if hasattr(setter, unit):
2699
+ getattr(setter, unit)
2700
+ else:
2701
+ raise ValueError(f"Unknown unit: {unit}")
2702
+ return self
2703
+ else:
2704
+ return field_setter.KineticEnergyOfTurbulenceSetter(self, value)
2330
2705
 
2331
2706
 
2332
2707
  class Length(FieldQnty):
@@ -2347,7 +2722,7 @@ class Length(FieldQnty):
2347
2722
  """
2348
2723
 
2349
2724
  __slots__ = ()
2350
- _setter_class = ts.LengthSetter
2725
+ _setter_class = field_setter.LengthSetter
2351
2726
  _dimension = dim.LENGTH
2352
2727
 
2353
2728
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2370,13 +2745,13 @@ class Length(FieldQnty):
2370
2745
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2371
2746
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2372
2747
 
2373
- def set(self, value: float, unit: str | None = None) -> ts.LengthSetter:
2748
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.LengthSetter':
2374
2749
  """
2375
2750
  Create a setter for this length quantity.
2376
2751
 
2377
2752
  Args:
2378
2753
  value: The numeric value to set
2379
- unit: Optional unit string (for direct setting)
2754
+ unit: Optional unit string (for compatibility with base class)
2380
2755
 
2381
2756
  Returns:
2382
2757
  LengthSetter: A setter with unit properties like .meters, .inches, etc.
@@ -2384,30 +2759,18 @@ class Length(FieldQnty):
2384
2759
  Example:
2385
2760
  >>> length = Length("beam_length")
2386
2761
  >>> length.set(100).millimeters # Sets to 100 mm
2387
- >>> length.set(100, "inch") # Direct setting
2388
2762
  """
2389
2763
  if unit is not None:
2390
2764
  # Direct setting with unit
2391
- setter = ts.LengthSetter(self, value)
2765
+ setter = field_setter.LengthSetter(self, value)
2392
2766
  # Get the unit property and call it to set the value
2393
2767
  if hasattr(setter, unit):
2394
2768
  getattr(setter, unit)
2395
2769
  else:
2396
- # Try common aliases
2397
- unit_aliases = {
2398
- "inch": "inch", "inches": "inch", "in": "inch",
2399
- "foot": "foot", "feet": "foot", "ft": "foot",
2400
- "meter": "meter", "meters": "meter", "m": "meter",
2401
- "millimeter": "millimeter", "millimeters": "millimeter", "mm": "millimeter",
2402
- "centimeter": "centimeter", "centimeters": "centimeter", "cm": "centimeter"
2403
- }
2404
- if unit in unit_aliases and hasattr(setter, unit_aliases[unit]):
2405
- getattr(setter, unit_aliases[unit])
2406
- else:
2407
- raise ValueError(f"Unknown unit: {unit}")
2408
- return self # Return the variable itself for consistency
2409
- else:
2410
- return ts.LengthSetter(self, value)
2770
+ raise ValueError(f"Unknown unit: {unit}")
2771
+ return self
2772
+ else:
2773
+ return field_setter.LengthSetter(self, value)
2411
2774
 
2412
2775
 
2413
2776
  class LinearMassDensity(FieldQnty):
@@ -2428,7 +2791,7 @@ class LinearMassDensity(FieldQnty):
2428
2791
  """
2429
2792
 
2430
2793
  __slots__ = ()
2431
- _setter_class = ts.LinearMassDensitySetter
2794
+ _setter_class = field_setter.LinearMassDensitySetter
2432
2795
  _dimension = dim.LINEAR_MASS_DENSITY
2433
2796
 
2434
2797
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2451,7 +2814,7 @@ class LinearMassDensity(FieldQnty):
2451
2814
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2452
2815
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2453
2816
 
2454
- def set(self, value: float, unit: str | None = None) -> ts.LinearMassDensitySetter:
2817
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.LinearMassDensitySetter':
2455
2818
  """
2456
2819
  Create a setter for this linear mass density quantity.
2457
2820
 
@@ -2466,7 +2829,17 @@ class LinearMassDensity(FieldQnty):
2466
2829
  >>> length = Length("beam_length")
2467
2830
  >>> length.set(100).millimeters # Sets to 100 mm
2468
2831
  """
2469
- return ts.LinearMassDensitySetter(self, value)
2832
+ if unit is not None:
2833
+ # Direct setting with unit
2834
+ setter = field_setter.LinearMassDensitySetter(self, value)
2835
+ # Get the unit property and call it to set the value
2836
+ if hasattr(setter, unit):
2837
+ getattr(setter, unit)
2838
+ else:
2839
+ raise ValueError(f"Unknown unit: {unit}")
2840
+ return self
2841
+ else:
2842
+ return field_setter.LinearMassDensitySetter(self, value)
2470
2843
 
2471
2844
 
2472
2845
  class LinearMomentum(FieldQnty):
@@ -2487,7 +2860,7 @@ class LinearMomentum(FieldQnty):
2487
2860
  """
2488
2861
 
2489
2862
  __slots__ = ()
2490
- _setter_class = ts.LinearMomentumSetter
2863
+ _setter_class = field_setter.LinearMomentumSetter
2491
2864
  _dimension = dim.LINEAR_MOMENTUM
2492
2865
 
2493
2866
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2510,7 +2883,7 @@ class LinearMomentum(FieldQnty):
2510
2883
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2511
2884
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2512
2885
 
2513
- def set(self, value: float, unit: str | None = None) -> ts.LinearMomentumSetter:
2886
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.LinearMomentumSetter':
2514
2887
  """
2515
2888
  Create a setter for this linear momentum quantity.
2516
2889
 
@@ -2525,7 +2898,17 @@ class LinearMomentum(FieldQnty):
2525
2898
  >>> length = Length("beam_length")
2526
2899
  >>> length.set(100).millimeters # Sets to 100 mm
2527
2900
  """
2528
- return ts.LinearMomentumSetter(self, value)
2901
+ if unit is not None:
2902
+ # Direct setting with unit
2903
+ setter = field_setter.LinearMomentumSetter(self, value)
2904
+ # Get the unit property and call it to set the value
2905
+ if hasattr(setter, unit):
2906
+ getattr(setter, unit)
2907
+ else:
2908
+ raise ValueError(f"Unknown unit: {unit}")
2909
+ return self
2910
+ else:
2911
+ return field_setter.LinearMomentumSetter(self, value)
2529
2912
 
2530
2913
 
2531
2914
  class LuminanceSelf(FieldQnty):
@@ -2546,7 +2929,7 @@ class LuminanceSelf(FieldQnty):
2546
2929
  """
2547
2930
 
2548
2931
  __slots__ = ()
2549
- _setter_class = ts.LuminanceSelfSetter
2932
+ _setter_class = field_setter.LuminanceSelfSetter
2550
2933
  _dimension = dim.LUMINANCE_SELF
2551
2934
 
2552
2935
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2569,7 +2952,7 @@ class LuminanceSelf(FieldQnty):
2569
2952
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2570
2953
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2571
2954
 
2572
- def set(self, value: float, unit: str | None = None) -> ts.LuminanceSelfSetter:
2955
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.LuminanceSelfSetter':
2573
2956
  """
2574
2957
  Create a setter for this luminance (self) quantity.
2575
2958
 
@@ -2584,7 +2967,17 @@ class LuminanceSelf(FieldQnty):
2584
2967
  >>> length = Length("beam_length")
2585
2968
  >>> length.set(100).millimeters # Sets to 100 mm
2586
2969
  """
2587
- return ts.LuminanceSelfSetter(self, value)
2970
+ if unit is not None:
2971
+ # Direct setting with unit
2972
+ setter = field_setter.LuminanceSelfSetter(self, value)
2973
+ # Get the unit property and call it to set the value
2974
+ if hasattr(setter, unit):
2975
+ getattr(setter, unit)
2976
+ else:
2977
+ raise ValueError(f"Unknown unit: {unit}")
2978
+ return self
2979
+ else:
2980
+ return field_setter.LuminanceSelfSetter(self, value)
2588
2981
 
2589
2982
 
2590
2983
  class LuminousFlux(FieldQnty):
@@ -2605,7 +2998,7 @@ class LuminousFlux(FieldQnty):
2605
2998
  """
2606
2999
 
2607
3000
  __slots__ = ()
2608
- _setter_class = ts.LuminousFluxSetter
3001
+ _setter_class = field_setter.LuminousFluxSetter
2609
3002
  _dimension = dim.LUMINOUS_FLUX
2610
3003
 
2611
3004
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2628,7 +3021,7 @@ class LuminousFlux(FieldQnty):
2628
3021
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2629
3022
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2630
3023
 
2631
- def set(self, value: float, unit: str | None = None) -> ts.LuminousFluxSetter:
3024
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.LuminousFluxSetter':
2632
3025
  """
2633
3026
  Create a setter for this luminous flux quantity.
2634
3027
 
@@ -2643,7 +3036,17 @@ class LuminousFlux(FieldQnty):
2643
3036
  >>> length = Length("beam_length")
2644
3037
  >>> length.set(100).millimeters # Sets to 100 mm
2645
3038
  """
2646
- return ts.LuminousFluxSetter(self, value)
3039
+ if unit is not None:
3040
+ # Direct setting with unit
3041
+ setter = field_setter.LuminousFluxSetter(self, value)
3042
+ # Get the unit property and call it to set the value
3043
+ if hasattr(setter, unit):
3044
+ getattr(setter, unit)
3045
+ else:
3046
+ raise ValueError(f"Unknown unit: {unit}")
3047
+ return self
3048
+ else:
3049
+ return field_setter.LuminousFluxSetter(self, value)
2647
3050
 
2648
3051
 
2649
3052
  class LuminousIntensity(FieldQnty):
@@ -2664,7 +3067,7 @@ class LuminousIntensity(FieldQnty):
2664
3067
  """
2665
3068
 
2666
3069
  __slots__ = ()
2667
- _setter_class = ts.LuminousIntensitySetter
3070
+ _setter_class = field_setter.LuminousIntensitySetter
2668
3071
  _dimension = dim.LUMINOUS_INTENSITY
2669
3072
 
2670
3073
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2687,7 +3090,7 @@ class LuminousIntensity(FieldQnty):
2687
3090
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2688
3091
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2689
3092
 
2690
- def set(self, value: float, unit: str | None = None) -> ts.LuminousIntensitySetter:
3093
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.LuminousIntensitySetter':
2691
3094
  """
2692
3095
  Create a setter for this luminous intensity quantity.
2693
3096
 
@@ -2702,7 +3105,17 @@ class LuminousIntensity(FieldQnty):
2702
3105
  >>> length = Length("beam_length")
2703
3106
  >>> length.set(100).millimeters # Sets to 100 mm
2704
3107
  """
2705
- return ts.LuminousIntensitySetter(self, value)
3108
+ if unit is not None:
3109
+ # Direct setting with unit
3110
+ setter = field_setter.LuminousIntensitySetter(self, value)
3111
+ # Get the unit property and call it to set the value
3112
+ if hasattr(setter, unit):
3113
+ getattr(setter, unit)
3114
+ else:
3115
+ raise ValueError(f"Unknown unit: {unit}")
3116
+ return self
3117
+ else:
3118
+ return field_setter.LuminousIntensitySetter(self, value)
2706
3119
 
2707
3120
 
2708
3121
  class MagneticField(FieldQnty):
@@ -2723,7 +3136,7 @@ class MagneticField(FieldQnty):
2723
3136
  """
2724
3137
 
2725
3138
  __slots__ = ()
2726
- _setter_class = ts.MagneticFieldSetter
3139
+ _setter_class = field_setter.MagneticFieldSetter
2727
3140
  _dimension = dim.MAGNETIC_FIELD
2728
3141
 
2729
3142
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2746,7 +3159,7 @@ class MagneticField(FieldQnty):
2746
3159
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2747
3160
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2748
3161
 
2749
- def set(self, value: float, unit: str | None = None) -> ts.MagneticFieldSetter:
3162
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MagneticFieldSetter':
2750
3163
  """
2751
3164
  Create a setter for this magnetic field quantity.
2752
3165
 
@@ -2761,7 +3174,17 @@ class MagneticField(FieldQnty):
2761
3174
  >>> length = Length("beam_length")
2762
3175
  >>> length.set(100).millimeters # Sets to 100 mm
2763
3176
  """
2764
- return ts.MagneticFieldSetter(self, value)
3177
+ if unit is not None:
3178
+ # Direct setting with unit
3179
+ setter = field_setter.MagneticFieldSetter(self, value)
3180
+ # Get the unit property and call it to set the value
3181
+ if hasattr(setter, unit):
3182
+ getattr(setter, unit)
3183
+ else:
3184
+ raise ValueError(f"Unknown unit: {unit}")
3185
+ return self
3186
+ else:
3187
+ return field_setter.MagneticFieldSetter(self, value)
2765
3188
 
2766
3189
 
2767
3190
  class MagneticFlux(FieldQnty):
@@ -2782,7 +3205,7 @@ class MagneticFlux(FieldQnty):
2782
3205
  """
2783
3206
 
2784
3207
  __slots__ = ()
2785
- _setter_class = ts.MagneticFluxSetter
3208
+ _setter_class = field_setter.MagneticFluxSetter
2786
3209
  _dimension = dim.MAGNETIC_FLUX
2787
3210
 
2788
3211
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2805,7 +3228,7 @@ class MagneticFlux(FieldQnty):
2805
3228
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2806
3229
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2807
3230
 
2808
- def set(self, value: float, unit: str | None = None) -> ts.MagneticFluxSetter:
3231
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MagneticFluxSetter':
2809
3232
  """
2810
3233
  Create a setter for this magnetic flux quantity.
2811
3234
 
@@ -2820,7 +3243,17 @@ class MagneticFlux(FieldQnty):
2820
3243
  >>> length = Length("beam_length")
2821
3244
  >>> length.set(100).millimeters # Sets to 100 mm
2822
3245
  """
2823
- return ts.MagneticFluxSetter(self, value)
3246
+ if unit is not None:
3247
+ # Direct setting with unit
3248
+ setter = field_setter.MagneticFluxSetter(self, value)
3249
+ # Get the unit property and call it to set the value
3250
+ if hasattr(setter, unit):
3251
+ getattr(setter, unit)
3252
+ else:
3253
+ raise ValueError(f"Unknown unit: {unit}")
3254
+ return self
3255
+ else:
3256
+ return field_setter.MagneticFluxSetter(self, value)
2824
3257
 
2825
3258
 
2826
3259
  class MagneticInductionFieldStrength(FieldQnty):
@@ -2841,7 +3274,7 @@ class MagneticInductionFieldStrength(FieldQnty):
2841
3274
  """
2842
3275
 
2843
3276
  __slots__ = ()
2844
- _setter_class = ts.MagneticInductionFieldStrengthSetter
3277
+ _setter_class = field_setter.MagneticInductionFieldStrengthSetter
2845
3278
  _dimension = dim.MAGNETIC_INDUCTION_FIELD_STRENGTH
2846
3279
 
2847
3280
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2864,7 +3297,7 @@ class MagneticInductionFieldStrength(FieldQnty):
2864
3297
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2865
3298
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2866
3299
 
2867
- def set(self, value: float, unit: str | None = None) -> ts.MagneticInductionFieldStrengthSetter:
3300
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MagneticInductionFieldStrengthSetter':
2868
3301
  """
2869
3302
  Create a setter for this magnetic induction field strength quantity.
2870
3303
 
@@ -2879,7 +3312,17 @@ class MagneticInductionFieldStrength(FieldQnty):
2879
3312
  >>> length = Length("beam_length")
2880
3313
  >>> length.set(100).millimeters # Sets to 100 mm
2881
3314
  """
2882
- return ts.MagneticInductionFieldStrengthSetter(self, value)
3315
+ if unit is not None:
3316
+ # Direct setting with unit
3317
+ setter = field_setter.MagneticInductionFieldStrengthSetter(self, value)
3318
+ # Get the unit property and call it to set the value
3319
+ if hasattr(setter, unit):
3320
+ getattr(setter, unit)
3321
+ else:
3322
+ raise ValueError(f"Unknown unit: {unit}")
3323
+ return self
3324
+ else:
3325
+ return field_setter.MagneticInductionFieldStrengthSetter(self, value)
2883
3326
 
2884
3327
 
2885
3328
  class MagneticMoment(FieldQnty):
@@ -2900,7 +3343,7 @@ class MagneticMoment(FieldQnty):
2900
3343
  """
2901
3344
 
2902
3345
  __slots__ = ()
2903
- _setter_class = ts.MagneticMomentSetter
3346
+ _setter_class = field_setter.MagneticMomentSetter
2904
3347
  _dimension = dim.MAGNETIC_MOMENT
2905
3348
 
2906
3349
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2923,7 +3366,7 @@ class MagneticMoment(FieldQnty):
2923
3366
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2924
3367
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2925
3368
 
2926
- def set(self, value: float, unit: str | None = None) -> ts.MagneticMomentSetter:
3369
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MagneticMomentSetter':
2927
3370
  """
2928
3371
  Create a setter for this magnetic moment quantity.
2929
3372
 
@@ -2938,7 +3381,17 @@ class MagneticMoment(FieldQnty):
2938
3381
  >>> length = Length("beam_length")
2939
3382
  >>> length.set(100).millimeters # Sets to 100 mm
2940
3383
  """
2941
- return ts.MagneticMomentSetter(self, value)
3384
+ if unit is not None:
3385
+ # Direct setting with unit
3386
+ setter = field_setter.MagneticMomentSetter(self, value)
3387
+ # Get the unit property and call it to set the value
3388
+ if hasattr(setter, unit):
3389
+ getattr(setter, unit)
3390
+ else:
3391
+ raise ValueError(f"Unknown unit: {unit}")
3392
+ return self
3393
+ else:
3394
+ return field_setter.MagneticMomentSetter(self, value)
2942
3395
 
2943
3396
 
2944
3397
  class MagneticPermeability(FieldQnty):
@@ -2959,7 +3412,7 @@ class MagneticPermeability(FieldQnty):
2959
3412
  """
2960
3413
 
2961
3414
  __slots__ = ()
2962
- _setter_class = ts.MagneticPermeabilitySetter
3415
+ _setter_class = field_setter.MagneticPermeabilitySetter
2963
3416
  _dimension = dim.MAGNETIC_PERMEABILITY
2964
3417
 
2965
3418
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2982,7 +3435,7 @@ class MagneticPermeability(FieldQnty):
2982
3435
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2983
3436
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2984
3437
 
2985
- def set(self, value: float, unit: str | None = None) -> ts.MagneticPermeabilitySetter:
3438
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MagneticPermeabilitySetter':
2986
3439
  """
2987
3440
  Create a setter for this magnetic permeability quantity.
2988
3441
 
@@ -2997,7 +3450,17 @@ class MagneticPermeability(FieldQnty):
2997
3450
  >>> length = Length("beam_length")
2998
3451
  >>> length.set(100).millimeters # Sets to 100 mm
2999
3452
  """
3000
- return ts.MagneticPermeabilitySetter(self, value)
3453
+ if unit is not None:
3454
+ # Direct setting with unit
3455
+ setter = field_setter.MagneticPermeabilitySetter(self, value)
3456
+ # Get the unit property and call it to set the value
3457
+ if hasattr(setter, unit):
3458
+ getattr(setter, unit)
3459
+ else:
3460
+ raise ValueError(f"Unknown unit: {unit}")
3461
+ return self
3462
+ else:
3463
+ return field_setter.MagneticPermeabilitySetter(self, value)
3001
3464
 
3002
3465
 
3003
3466
  class MagnetomotiveForce(FieldQnty):
@@ -3018,7 +3481,7 @@ class MagnetomotiveForce(FieldQnty):
3018
3481
  """
3019
3482
 
3020
3483
  __slots__ = ()
3021
- _setter_class = ts.MagnetomotiveForceSetter
3484
+ _setter_class = field_setter.MagnetomotiveForceSetter
3022
3485
  _dimension = dim.MAGNETOMOTIVE_FORCE
3023
3486
 
3024
3487
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3041,7 +3504,7 @@ class MagnetomotiveForce(FieldQnty):
3041
3504
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3042
3505
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3043
3506
 
3044
- def set(self, value: float, unit: str | None = None) -> ts.MagnetomotiveForceSetter:
3507
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MagnetomotiveForceSetter':
3045
3508
  """
3046
3509
  Create a setter for this magnetomotive force quantity.
3047
3510
 
@@ -3056,7 +3519,17 @@ class MagnetomotiveForce(FieldQnty):
3056
3519
  >>> length = Length("beam_length")
3057
3520
  >>> length.set(100).millimeters # Sets to 100 mm
3058
3521
  """
3059
- return ts.MagnetomotiveForceSetter(self, value)
3522
+ if unit is not None:
3523
+ # Direct setting with unit
3524
+ setter = field_setter.MagnetomotiveForceSetter(self, value)
3525
+ # Get the unit property and call it to set the value
3526
+ if hasattr(setter, unit):
3527
+ getattr(setter, unit)
3528
+ else:
3529
+ raise ValueError(f"Unknown unit: {unit}")
3530
+ return self
3531
+ else:
3532
+ return field_setter.MagnetomotiveForceSetter(self, value)
3060
3533
 
3061
3534
 
3062
3535
  class Mass(FieldQnty):
@@ -3077,7 +3550,7 @@ class Mass(FieldQnty):
3077
3550
  """
3078
3551
 
3079
3552
  __slots__ = ()
3080
- _setter_class = ts.MassSetter
3553
+ _setter_class = field_setter.MassSetter
3081
3554
  _dimension = dim.MASS
3082
3555
 
3083
3556
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3100,7 +3573,7 @@ class Mass(FieldQnty):
3100
3573
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3101
3574
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3102
3575
 
3103
- def set(self, value: float, unit: str | None = None) -> ts.MassSetter:
3576
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MassSetter':
3104
3577
  """
3105
3578
  Create a setter for this mass quantity.
3106
3579
 
@@ -3115,7 +3588,17 @@ class Mass(FieldQnty):
3115
3588
  >>> length = Length("beam_length")
3116
3589
  >>> length.set(100).millimeters # Sets to 100 mm
3117
3590
  """
3118
- return ts.MassSetter(self, value)
3591
+ if unit is not None:
3592
+ # Direct setting with unit
3593
+ setter = field_setter.MassSetter(self, value)
3594
+ # Get the unit property and call it to set the value
3595
+ if hasattr(setter, unit):
3596
+ getattr(setter, unit)
3597
+ else:
3598
+ raise ValueError(f"Unknown unit: {unit}")
3599
+ return self
3600
+ else:
3601
+ return field_setter.MassSetter(self, value)
3119
3602
 
3120
3603
 
3121
3604
  class MassDensity(FieldQnty):
@@ -3136,7 +3619,7 @@ class MassDensity(FieldQnty):
3136
3619
  """
3137
3620
 
3138
3621
  __slots__ = ()
3139
- _setter_class = ts.MassDensitySetter
3622
+ _setter_class = field_setter.MassDensitySetter
3140
3623
  _dimension = dim.MASS_DENSITY
3141
3624
 
3142
3625
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3159,7 +3642,7 @@ class MassDensity(FieldQnty):
3159
3642
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3160
3643
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3161
3644
 
3162
- def set(self, value: float, unit: str | None = None) -> ts.MassDensitySetter:
3645
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MassDensitySetter':
3163
3646
  """
3164
3647
  Create a setter for this mass density quantity.
3165
3648
 
@@ -3174,7 +3657,17 @@ class MassDensity(FieldQnty):
3174
3657
  >>> length = Length("beam_length")
3175
3658
  >>> length.set(100).millimeters # Sets to 100 mm
3176
3659
  """
3177
- return ts.MassDensitySetter(self, value)
3660
+ if unit is not None:
3661
+ # Direct setting with unit
3662
+ setter = field_setter.MassDensitySetter(self, value)
3663
+ # Get the unit property and call it to set the value
3664
+ if hasattr(setter, unit):
3665
+ getattr(setter, unit)
3666
+ else:
3667
+ raise ValueError(f"Unknown unit: {unit}")
3668
+ return self
3669
+ else:
3670
+ return field_setter.MassDensitySetter(self, value)
3178
3671
 
3179
3672
 
3180
3673
  class MassFlowRate(FieldQnty):
@@ -3195,7 +3688,7 @@ class MassFlowRate(FieldQnty):
3195
3688
  """
3196
3689
 
3197
3690
  __slots__ = ()
3198
- _setter_class = ts.MassFlowRateSetter
3691
+ _setter_class = field_setter.MassFlowRateSetter
3199
3692
  _dimension = dim.MASS_FLOW_RATE
3200
3693
 
3201
3694
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3218,7 +3711,7 @@ class MassFlowRate(FieldQnty):
3218
3711
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3219
3712
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3220
3713
 
3221
- def set(self, value: float, unit: str | None = None) -> ts.MassFlowRateSetter:
3714
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MassFlowRateSetter':
3222
3715
  """
3223
3716
  Create a setter for this mass flow rate quantity.
3224
3717
 
@@ -3233,7 +3726,17 @@ class MassFlowRate(FieldQnty):
3233
3726
  >>> length = Length("beam_length")
3234
3727
  >>> length.set(100).millimeters # Sets to 100 mm
3235
3728
  """
3236
- return ts.MassFlowRateSetter(self, value)
3729
+ if unit is not None:
3730
+ # Direct setting with unit
3731
+ setter = field_setter.MassFlowRateSetter(self, value)
3732
+ # Get the unit property and call it to set the value
3733
+ if hasattr(setter, unit):
3734
+ getattr(setter, unit)
3735
+ else:
3736
+ raise ValueError(f"Unknown unit: {unit}")
3737
+ return self
3738
+ else:
3739
+ return field_setter.MassFlowRateSetter(self, value)
3237
3740
 
3238
3741
 
3239
3742
  class MassFlux(FieldQnty):
@@ -3254,7 +3757,7 @@ class MassFlux(FieldQnty):
3254
3757
  """
3255
3758
 
3256
3759
  __slots__ = ()
3257
- _setter_class = ts.MassFluxSetter
3760
+ _setter_class = field_setter.MassFluxSetter
3258
3761
  _dimension = dim.MASS_FLUX
3259
3762
 
3260
3763
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3277,7 +3780,7 @@ class MassFlux(FieldQnty):
3277
3780
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3278
3781
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3279
3782
 
3280
- def set(self, value: float, unit: str | None = None) -> ts.MassFluxSetter:
3783
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MassFluxSetter':
3281
3784
  """
3282
3785
  Create a setter for this mass flux quantity.
3283
3786
 
@@ -3292,7 +3795,17 @@ class MassFlux(FieldQnty):
3292
3795
  >>> length = Length("beam_length")
3293
3796
  >>> length.set(100).millimeters # Sets to 100 mm
3294
3797
  """
3295
- return ts.MassFluxSetter(self, value)
3798
+ if unit is not None:
3799
+ # Direct setting with unit
3800
+ setter = field_setter.MassFluxSetter(self, value)
3801
+ # Get the unit property and call it to set the value
3802
+ if hasattr(setter, unit):
3803
+ getattr(setter, unit)
3804
+ else:
3805
+ raise ValueError(f"Unknown unit: {unit}")
3806
+ return self
3807
+ else:
3808
+ return field_setter.MassFluxSetter(self, value)
3296
3809
 
3297
3810
 
3298
3811
  class MassFractionOfI(FieldQnty):
@@ -3313,7 +3826,7 @@ class MassFractionOfI(FieldQnty):
3313
3826
  """
3314
3827
 
3315
3828
  __slots__ = ()
3316
- _setter_class = ts.MassFractionOfISetter
3829
+ _setter_class = field_setter.MassFractionOfISetter
3317
3830
  _dimension = dim.MASS_FRACTION_OF_I
3318
3831
 
3319
3832
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3336,7 +3849,7 @@ class MassFractionOfI(FieldQnty):
3336
3849
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3337
3850
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3338
3851
 
3339
- def set(self, value: float, unit: str | None = None) -> ts.MassFractionOfISetter:
3852
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MassFractionOfISetter':
3340
3853
  """
3341
3854
  Create a setter for this mass fraction of "i" quantity.
3342
3855
 
@@ -3351,7 +3864,17 @@ class MassFractionOfI(FieldQnty):
3351
3864
  >>> length = Length("beam_length")
3352
3865
  >>> length.set(100).millimeters # Sets to 100 mm
3353
3866
  """
3354
- return ts.MassFractionOfISetter(self, value)
3867
+ if unit is not None:
3868
+ # Direct setting with unit
3869
+ setter = field_setter.MassFractionOfISetter(self, value)
3870
+ # Get the unit property and call it to set the value
3871
+ if hasattr(setter, unit):
3872
+ getattr(setter, unit)
3873
+ else:
3874
+ raise ValueError(f"Unknown unit: {unit}")
3875
+ return self
3876
+ else:
3877
+ return field_setter.MassFractionOfISetter(self, value)
3355
3878
 
3356
3879
 
3357
3880
  class MassTransferCoefficient(FieldQnty):
@@ -3372,7 +3895,7 @@ class MassTransferCoefficient(FieldQnty):
3372
3895
  """
3373
3896
 
3374
3897
  __slots__ = ()
3375
- _setter_class = ts.MassTransferCoefficientSetter
3898
+ _setter_class = field_setter.MassTransferCoefficientSetter
3376
3899
  _dimension = dim.MASS_TRANSFER_COEFFICIENT
3377
3900
 
3378
3901
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3395,7 +3918,7 @@ class MassTransferCoefficient(FieldQnty):
3395
3918
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3396
3919
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3397
3920
 
3398
- def set(self, value: float, unit: str | None = None) -> ts.MassTransferCoefficientSetter:
3921
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MassTransferCoefficientSetter':
3399
3922
  """
3400
3923
  Create a setter for this mass transfer coefficient quantity.
3401
3924
 
@@ -3410,7 +3933,17 @@ class MassTransferCoefficient(FieldQnty):
3410
3933
  >>> length = Length("beam_length")
3411
3934
  >>> length.set(100).millimeters # Sets to 100 mm
3412
3935
  """
3413
- return ts.MassTransferCoefficientSetter(self, value)
3936
+ if unit is not None:
3937
+ # Direct setting with unit
3938
+ setter = field_setter.MassTransferCoefficientSetter(self, value)
3939
+ # Get the unit property and call it to set the value
3940
+ if hasattr(setter, unit):
3941
+ getattr(setter, unit)
3942
+ else:
3943
+ raise ValueError(f"Unknown unit: {unit}")
3944
+ return self
3945
+ else:
3946
+ return field_setter.MassTransferCoefficientSetter(self, value)
3414
3947
 
3415
3948
 
3416
3949
  class MolalityOfSoluteI(FieldQnty):
@@ -3431,7 +3964,7 @@ class MolalityOfSoluteI(FieldQnty):
3431
3964
  """
3432
3965
 
3433
3966
  __slots__ = ()
3434
- _setter_class = ts.MolalityOfSoluteISetter
3967
+ _setter_class = field_setter.MolalityOfSoluteISetter
3435
3968
  _dimension = dim.MOLALITY_OF_SOLUTE_I
3436
3969
 
3437
3970
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3454,7 +3987,7 @@ class MolalityOfSoluteI(FieldQnty):
3454
3987
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3455
3988
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3456
3989
 
3457
- def set(self, value: float, unit: str | None = None) -> ts.MolalityOfSoluteISetter:
3990
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MolalityOfSoluteISetter':
3458
3991
  """
3459
3992
  Create a setter for this molality of solute "i" quantity.
3460
3993
 
@@ -3469,7 +4002,17 @@ class MolalityOfSoluteI(FieldQnty):
3469
4002
  >>> length = Length("beam_length")
3470
4003
  >>> length.set(100).millimeters # Sets to 100 mm
3471
4004
  """
3472
- return ts.MolalityOfSoluteISetter(self, value)
4005
+ if unit is not None:
4006
+ # Direct setting with unit
4007
+ setter = field_setter.MolalityOfSoluteISetter(self, value)
4008
+ # Get the unit property and call it to set the value
4009
+ if hasattr(setter, unit):
4010
+ getattr(setter, unit)
4011
+ else:
4012
+ raise ValueError(f"Unknown unit: {unit}")
4013
+ return self
4014
+ else:
4015
+ return field_setter.MolalityOfSoluteISetter(self, value)
3473
4016
 
3474
4017
 
3475
4018
  class MolarConcentrationByMass(FieldQnty):
@@ -3490,7 +4033,7 @@ class MolarConcentrationByMass(FieldQnty):
3490
4033
  """
3491
4034
 
3492
4035
  __slots__ = ()
3493
- _setter_class = ts.MolarConcentrationByMassSetter
4036
+ _setter_class = field_setter.MolarConcentrationByMassSetter
3494
4037
  _dimension = dim.MOLAR_CONCENTRATION_BY_MASS
3495
4038
 
3496
4039
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3513,7 +4056,7 @@ class MolarConcentrationByMass(FieldQnty):
3513
4056
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3514
4057
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3515
4058
 
3516
- def set(self, value: float, unit: str | None = None) -> ts.MolarConcentrationByMassSetter:
4059
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MolarConcentrationByMassSetter':
3517
4060
  """
3518
4061
  Create a setter for this molar concentration by mass quantity.
3519
4062
 
@@ -3528,7 +4071,17 @@ class MolarConcentrationByMass(FieldQnty):
3528
4071
  >>> length = Length("beam_length")
3529
4072
  >>> length.set(100).millimeters # Sets to 100 mm
3530
4073
  """
3531
- return ts.MolarConcentrationByMassSetter(self, value)
4074
+ if unit is not None:
4075
+ # Direct setting with unit
4076
+ setter = field_setter.MolarConcentrationByMassSetter(self, value)
4077
+ # Get the unit property and call it to set the value
4078
+ if hasattr(setter, unit):
4079
+ getattr(setter, unit)
4080
+ else:
4081
+ raise ValueError(f"Unknown unit: {unit}")
4082
+ return self
4083
+ else:
4084
+ return field_setter.MolarConcentrationByMassSetter(self, value)
3532
4085
 
3533
4086
 
3534
4087
  class MolarFlowRate(FieldQnty):
@@ -3549,7 +4102,7 @@ class MolarFlowRate(FieldQnty):
3549
4102
  """
3550
4103
 
3551
4104
  __slots__ = ()
3552
- _setter_class = ts.MolarFlowRateSetter
4105
+ _setter_class = field_setter.MolarFlowRateSetter
3553
4106
  _dimension = dim.MOLAR_FLOW_RATE
3554
4107
 
3555
4108
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3572,7 +4125,7 @@ class MolarFlowRate(FieldQnty):
3572
4125
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3573
4126
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3574
4127
 
3575
- def set(self, value: float, unit: str | None = None) -> ts.MolarFlowRateSetter:
4128
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MolarFlowRateSetter':
3576
4129
  """
3577
4130
  Create a setter for this molar flow rate quantity.
3578
4131
 
@@ -3587,7 +4140,17 @@ class MolarFlowRate(FieldQnty):
3587
4140
  >>> length = Length("beam_length")
3588
4141
  >>> length.set(100).millimeters # Sets to 100 mm
3589
4142
  """
3590
- return ts.MolarFlowRateSetter(self, value)
4143
+ if unit is not None:
4144
+ # Direct setting with unit
4145
+ setter = field_setter.MolarFlowRateSetter(self, value)
4146
+ # Get the unit property and call it to set the value
4147
+ if hasattr(setter, unit):
4148
+ getattr(setter, unit)
4149
+ else:
4150
+ raise ValueError(f"Unknown unit: {unit}")
4151
+ return self
4152
+ else:
4153
+ return field_setter.MolarFlowRateSetter(self, value)
3591
4154
 
3592
4155
 
3593
4156
  class MolarFlux(FieldQnty):
@@ -3608,7 +4171,7 @@ class MolarFlux(FieldQnty):
3608
4171
  """
3609
4172
 
3610
4173
  __slots__ = ()
3611
- _setter_class = ts.MolarFluxSetter
4174
+ _setter_class = field_setter.MolarFluxSetter
3612
4175
  _dimension = dim.MOLAR_FLUX
3613
4176
 
3614
4177
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3631,7 +4194,7 @@ class MolarFlux(FieldQnty):
3631
4194
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3632
4195
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3633
4196
 
3634
- def set(self, value: float, unit: str | None = None) -> ts.MolarFluxSetter:
4197
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MolarFluxSetter':
3635
4198
  """
3636
4199
  Create a setter for this molar flux quantity.
3637
4200
 
@@ -3646,7 +4209,17 @@ class MolarFlux(FieldQnty):
3646
4209
  >>> length = Length("beam_length")
3647
4210
  >>> length.set(100).millimeters # Sets to 100 mm
3648
4211
  """
3649
- return ts.MolarFluxSetter(self, value)
4212
+ if unit is not None:
4213
+ # Direct setting with unit
4214
+ setter = field_setter.MolarFluxSetter(self, value)
4215
+ # Get the unit property and call it to set the value
4216
+ if hasattr(setter, unit):
4217
+ getattr(setter, unit)
4218
+ else:
4219
+ raise ValueError(f"Unknown unit: {unit}")
4220
+ return self
4221
+ else:
4222
+ return field_setter.MolarFluxSetter(self, value)
3650
4223
 
3651
4224
 
3652
4225
  class MolarHeatCapacity(FieldQnty):
@@ -3667,7 +4240,7 @@ class MolarHeatCapacity(FieldQnty):
3667
4240
  """
3668
4241
 
3669
4242
  __slots__ = ()
3670
- _setter_class = ts.MolarHeatCapacitySetter
4243
+ _setter_class = field_setter.MolarHeatCapacitySetter
3671
4244
  _dimension = dim.MOLAR_HEAT_CAPACITY
3672
4245
 
3673
4246
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3690,7 +4263,7 @@ class MolarHeatCapacity(FieldQnty):
3690
4263
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3691
4264
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3692
4265
 
3693
- def set(self, value: float, unit: str | None = None) -> ts.MolarHeatCapacitySetter:
4266
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MolarHeatCapacitySetter':
3694
4267
  """
3695
4268
  Create a setter for this molar heat capacity quantity.
3696
4269
 
@@ -3705,7 +4278,17 @@ class MolarHeatCapacity(FieldQnty):
3705
4278
  >>> length = Length("beam_length")
3706
4279
  >>> length.set(100).millimeters # Sets to 100 mm
3707
4280
  """
3708
- return ts.MolarHeatCapacitySetter(self, value)
4281
+ if unit is not None:
4282
+ # Direct setting with unit
4283
+ setter = field_setter.MolarHeatCapacitySetter(self, value)
4284
+ # Get the unit property and call it to set the value
4285
+ if hasattr(setter, unit):
4286
+ getattr(setter, unit)
4287
+ else:
4288
+ raise ValueError(f"Unknown unit: {unit}")
4289
+ return self
4290
+ else:
4291
+ return field_setter.MolarHeatCapacitySetter(self, value)
3709
4292
 
3710
4293
 
3711
4294
  class MolarityOfI(FieldQnty):
@@ -3726,7 +4309,7 @@ class MolarityOfI(FieldQnty):
3726
4309
  """
3727
4310
 
3728
4311
  __slots__ = ()
3729
- _setter_class = ts.MolarityOfISetter
4312
+ _setter_class = field_setter.MolarityOfISetter
3730
4313
  _dimension = dim.MOLARITY_OF_I
3731
4314
 
3732
4315
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3749,7 +4332,7 @@ class MolarityOfI(FieldQnty):
3749
4332
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3750
4333
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3751
4334
 
3752
- def set(self, value: float, unit: str | None = None) -> ts.MolarityOfISetter:
4335
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MolarityOfISetter':
3753
4336
  """
3754
4337
  Create a setter for this molarity of "i" quantity.
3755
4338
 
@@ -3764,7 +4347,17 @@ class MolarityOfI(FieldQnty):
3764
4347
  >>> length = Length("beam_length")
3765
4348
  >>> length.set(100).millimeters # Sets to 100 mm
3766
4349
  """
3767
- return ts.MolarityOfISetter(self, value)
4350
+ if unit is not None:
4351
+ # Direct setting with unit
4352
+ setter = field_setter.MolarityOfISetter(self, value)
4353
+ # Get the unit property and call it to set the value
4354
+ if hasattr(setter, unit):
4355
+ getattr(setter, unit)
4356
+ else:
4357
+ raise ValueError(f"Unknown unit: {unit}")
4358
+ return self
4359
+ else:
4360
+ return field_setter.MolarityOfISetter(self, value)
3768
4361
 
3769
4362
 
3770
4363
  class MoleFractionOfI(FieldQnty):
@@ -3785,7 +4378,7 @@ class MoleFractionOfI(FieldQnty):
3785
4378
  """
3786
4379
 
3787
4380
  __slots__ = ()
3788
- _setter_class = ts.MoleFractionOfISetter
4381
+ _setter_class = field_setter.MoleFractionOfISetter
3789
4382
  _dimension = dim.MOLE_FRACTION_OF_I
3790
4383
 
3791
4384
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3808,7 +4401,7 @@ class MoleFractionOfI(FieldQnty):
3808
4401
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3809
4402
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3810
4403
 
3811
- def set(self, value: float, unit: str | None = None) -> ts.MoleFractionOfISetter:
4404
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MoleFractionOfISetter':
3812
4405
  """
3813
4406
  Create a setter for this mole fraction of "i" quantity.
3814
4407
 
@@ -3823,7 +4416,17 @@ class MoleFractionOfI(FieldQnty):
3823
4416
  >>> length = Length("beam_length")
3824
4417
  >>> length.set(100).millimeters # Sets to 100 mm
3825
4418
  """
3826
- return ts.MoleFractionOfISetter(self, value)
4419
+ if unit is not None:
4420
+ # Direct setting with unit
4421
+ setter = field_setter.MoleFractionOfISetter(self, value)
4422
+ # Get the unit property and call it to set the value
4423
+ if hasattr(setter, unit):
4424
+ getattr(setter, unit)
4425
+ else:
4426
+ raise ValueError(f"Unknown unit: {unit}")
4427
+ return self
4428
+ else:
4429
+ return field_setter.MoleFractionOfISetter(self, value)
3827
4430
 
3828
4431
 
3829
4432
  class MomentOfInertia(FieldQnty):
@@ -3844,7 +4447,7 @@ class MomentOfInertia(FieldQnty):
3844
4447
  """
3845
4448
 
3846
4449
  __slots__ = ()
3847
- _setter_class = ts.MomentOfInertiaSetter
4450
+ _setter_class = field_setter.MomentOfInertiaSetter
3848
4451
  _dimension = dim.MOMENT_OF_INERTIA
3849
4452
 
3850
4453
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3867,7 +4470,7 @@ class MomentOfInertia(FieldQnty):
3867
4470
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3868
4471
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3869
4472
 
3870
- def set(self, value: float, unit: str | None = None) -> ts.MomentOfInertiaSetter:
4473
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MomentOfInertiaSetter':
3871
4474
  """
3872
4475
  Create a setter for this moment of inertia quantity.
3873
4476
 
@@ -3882,7 +4485,17 @@ class MomentOfInertia(FieldQnty):
3882
4485
  >>> length = Length("beam_length")
3883
4486
  >>> length.set(100).millimeters # Sets to 100 mm
3884
4487
  """
3885
- return ts.MomentOfInertiaSetter(self, value)
4488
+ if unit is not None:
4489
+ # Direct setting with unit
4490
+ setter = field_setter.MomentOfInertiaSetter(self, value)
4491
+ # Get the unit property and call it to set the value
4492
+ if hasattr(setter, unit):
4493
+ getattr(setter, unit)
4494
+ else:
4495
+ raise ValueError(f"Unknown unit: {unit}")
4496
+ return self
4497
+ else:
4498
+ return field_setter.MomentOfInertiaSetter(self, value)
3886
4499
 
3887
4500
 
3888
4501
  class MomentumFlowRate(FieldQnty):
@@ -3903,7 +4516,7 @@ class MomentumFlowRate(FieldQnty):
3903
4516
  """
3904
4517
 
3905
4518
  __slots__ = ()
3906
- _setter_class = ts.MomentumFlowRateSetter
4519
+ _setter_class = field_setter.MomentumFlowRateSetter
3907
4520
  _dimension = dim.MOMENTUM_FLOW_RATE
3908
4521
 
3909
4522
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3926,7 +4539,7 @@ class MomentumFlowRate(FieldQnty):
3926
4539
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3927
4540
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3928
4541
 
3929
- def set(self, value: float, unit: str | None = None) -> ts.MomentumFlowRateSetter:
4542
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MomentumFlowRateSetter':
3930
4543
  """
3931
4544
  Create a setter for this momentum flow rate quantity.
3932
4545
 
@@ -3941,7 +4554,17 @@ class MomentumFlowRate(FieldQnty):
3941
4554
  >>> length = Length("beam_length")
3942
4555
  >>> length.set(100).millimeters # Sets to 100 mm
3943
4556
  """
3944
- return ts.MomentumFlowRateSetter(self, value)
4557
+ if unit is not None:
4558
+ # Direct setting with unit
4559
+ setter = field_setter.MomentumFlowRateSetter(self, value)
4560
+ # Get the unit property and call it to set the value
4561
+ if hasattr(setter, unit):
4562
+ getattr(setter, unit)
4563
+ else:
4564
+ raise ValueError(f"Unknown unit: {unit}")
4565
+ return self
4566
+ else:
4567
+ return field_setter.MomentumFlowRateSetter(self, value)
3945
4568
 
3946
4569
 
3947
4570
  class MomentumFlux(FieldQnty):
@@ -3962,7 +4585,7 @@ class MomentumFlux(FieldQnty):
3962
4585
  """
3963
4586
 
3964
4587
  __slots__ = ()
3965
- _setter_class = ts.MomentumFluxSetter
4588
+ _setter_class = field_setter.MomentumFluxSetter
3966
4589
  _dimension = dim.MOMENTUM_FLUX
3967
4590
 
3968
4591
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3985,7 +4608,7 @@ class MomentumFlux(FieldQnty):
3985
4608
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3986
4609
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3987
4610
 
3988
- def set(self, value: float, unit: str | None = None) -> ts.MomentumFluxSetter:
4611
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.MomentumFluxSetter':
3989
4612
  """
3990
4613
  Create a setter for this momentum flux quantity.
3991
4614
 
@@ -4000,7 +4623,17 @@ class MomentumFlux(FieldQnty):
4000
4623
  >>> length = Length("beam_length")
4001
4624
  >>> length.set(100).millimeters # Sets to 100 mm
4002
4625
  """
4003
- return ts.MomentumFluxSetter(self, value)
4626
+ if unit is not None:
4627
+ # Direct setting with unit
4628
+ setter = field_setter.MomentumFluxSetter(self, value)
4629
+ # Get the unit property and call it to set the value
4630
+ if hasattr(setter, unit):
4631
+ getattr(setter, unit)
4632
+ else:
4633
+ raise ValueError(f"Unknown unit: {unit}")
4634
+ return self
4635
+ else:
4636
+ return field_setter.MomentumFluxSetter(self, value)
4004
4637
 
4005
4638
 
4006
4639
  class NormalityOfSolution(FieldQnty):
@@ -4021,7 +4654,7 @@ class NormalityOfSolution(FieldQnty):
4021
4654
  """
4022
4655
 
4023
4656
  __slots__ = ()
4024
- _setter_class = ts.NormalityOfSolutionSetter
4657
+ _setter_class = field_setter.NormalityOfSolutionSetter
4025
4658
  _dimension = dim.NORMALITY_OF_SOLUTION
4026
4659
 
4027
4660
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4044,7 +4677,7 @@ class NormalityOfSolution(FieldQnty):
4044
4677
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4045
4678
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4046
4679
 
4047
- def set(self, value: float, unit: str | None = None) -> ts.NormalityOfSolutionSetter:
4680
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.NormalityOfSolutionSetter':
4048
4681
  """
4049
4682
  Create a setter for this normality of solution quantity.
4050
4683
 
@@ -4059,7 +4692,17 @@ class NormalityOfSolution(FieldQnty):
4059
4692
  >>> length = Length("beam_length")
4060
4693
  >>> length.set(100).millimeters # Sets to 100 mm
4061
4694
  """
4062
- return ts.NormalityOfSolutionSetter(self, value)
4695
+ if unit is not None:
4696
+ # Direct setting with unit
4697
+ setter = field_setter.NormalityOfSolutionSetter(self, value)
4698
+ # Get the unit property and call it to set the value
4699
+ if hasattr(setter, unit):
4700
+ getattr(setter, unit)
4701
+ else:
4702
+ raise ValueError(f"Unknown unit: {unit}")
4703
+ return self
4704
+ else:
4705
+ return field_setter.NormalityOfSolutionSetter(self, value)
4063
4706
 
4064
4707
 
4065
4708
  class ParticleDensity(FieldQnty):
@@ -4080,7 +4723,7 @@ class ParticleDensity(FieldQnty):
4080
4723
  """
4081
4724
 
4082
4725
  __slots__ = ()
4083
- _setter_class = ts.ParticleDensitySetter
4726
+ _setter_class = field_setter.ParticleDensitySetter
4084
4727
  _dimension = dim.PARTICLE_DENSITY
4085
4728
 
4086
4729
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4103,7 +4746,7 @@ class ParticleDensity(FieldQnty):
4103
4746
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4104
4747
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4105
4748
 
4106
- def set(self, value: float, unit: str | None = None) -> ts.ParticleDensitySetter:
4749
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ParticleDensitySetter':
4107
4750
  """
4108
4751
  Create a setter for this particle density quantity.
4109
4752
 
@@ -4118,7 +4761,17 @@ class ParticleDensity(FieldQnty):
4118
4761
  >>> length = Length("beam_length")
4119
4762
  >>> length.set(100).millimeters # Sets to 100 mm
4120
4763
  """
4121
- return ts.ParticleDensitySetter(self, value)
4764
+ if unit is not None:
4765
+ # Direct setting with unit
4766
+ setter = field_setter.ParticleDensitySetter(self, value)
4767
+ # Get the unit property and call it to set the value
4768
+ if hasattr(setter, unit):
4769
+ getattr(setter, unit)
4770
+ else:
4771
+ raise ValueError(f"Unknown unit: {unit}")
4772
+ return self
4773
+ else:
4774
+ return field_setter.ParticleDensitySetter(self, value)
4122
4775
 
4123
4776
 
4124
4777
  class Percent(FieldQnty):
@@ -4139,7 +4792,7 @@ class Percent(FieldQnty):
4139
4792
  """
4140
4793
 
4141
4794
  __slots__ = ()
4142
- _setter_class = ts.PercentSetter
4795
+ _setter_class = field_setter.PercentSetter
4143
4796
  _dimension = dim.PERCENT
4144
4797
 
4145
4798
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4162,7 +4815,7 @@ class Percent(FieldQnty):
4162
4815
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4163
4816
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4164
4817
 
4165
- def set(self, value: float, unit: str | None = None) -> ts.PercentSetter:
4818
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.PercentSetter':
4166
4819
  """
4167
4820
  Create a setter for this percent quantity.
4168
4821
 
@@ -4177,7 +4830,17 @@ class Percent(FieldQnty):
4177
4830
  >>> length = Length("beam_length")
4178
4831
  >>> length.set(100).millimeters # Sets to 100 mm
4179
4832
  """
4180
- return ts.PercentSetter(self, value)
4833
+ if unit is not None:
4834
+ # Direct setting with unit
4835
+ setter = field_setter.PercentSetter(self, value)
4836
+ # Get the unit property and call it to set the value
4837
+ if hasattr(setter, unit):
4838
+ getattr(setter, unit)
4839
+ else:
4840
+ raise ValueError(f"Unknown unit: {unit}")
4841
+ return self
4842
+ else:
4843
+ return field_setter.PercentSetter(self, value)
4181
4844
 
4182
4845
 
4183
4846
  class Permeability(FieldQnty):
@@ -4198,7 +4861,7 @@ class Permeability(FieldQnty):
4198
4861
  """
4199
4862
 
4200
4863
  __slots__ = ()
4201
- _setter_class = ts.PermeabilitySetter
4864
+ _setter_class = field_setter.PermeabilitySetter
4202
4865
  _dimension = dim.PERMEABILITY
4203
4866
 
4204
4867
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4221,7 +4884,7 @@ class Permeability(FieldQnty):
4221
4884
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4222
4885
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4223
4886
 
4224
- def set(self, value: float, unit: str | None = None) -> ts.PermeabilitySetter:
4887
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.PermeabilitySetter':
4225
4888
  """
4226
4889
  Create a setter for this permeability quantity.
4227
4890
 
@@ -4236,7 +4899,17 @@ class Permeability(FieldQnty):
4236
4899
  >>> length = Length("beam_length")
4237
4900
  >>> length.set(100).millimeters # Sets to 100 mm
4238
4901
  """
4239
- return ts.PermeabilitySetter(self, value)
4902
+ if unit is not None:
4903
+ # Direct setting with unit
4904
+ setter = field_setter.PermeabilitySetter(self, value)
4905
+ # Get the unit property and call it to set the value
4906
+ if hasattr(setter, unit):
4907
+ getattr(setter, unit)
4908
+ else:
4909
+ raise ValueError(f"Unknown unit: {unit}")
4910
+ return self
4911
+ else:
4912
+ return field_setter.PermeabilitySetter(self, value)
4240
4913
 
4241
4914
 
4242
4915
  class PhotonEmissionRate(FieldQnty):
@@ -4257,7 +4930,7 @@ class PhotonEmissionRate(FieldQnty):
4257
4930
  """
4258
4931
 
4259
4932
  __slots__ = ()
4260
- _setter_class = ts.PhotonEmissionRateSetter
4933
+ _setter_class = field_setter.PhotonEmissionRateSetter
4261
4934
  _dimension = dim.PHOTON_EMISSION_RATE
4262
4935
 
4263
4936
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4280,7 +4953,7 @@ class PhotonEmissionRate(FieldQnty):
4280
4953
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4281
4954
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4282
4955
 
4283
- def set(self, value: float, unit: str | None = None) -> ts.PhotonEmissionRateSetter:
4956
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.PhotonEmissionRateSetter':
4284
4957
  """
4285
4958
  Create a setter for this photon emission rate quantity.
4286
4959
 
@@ -4295,7 +4968,17 @@ class PhotonEmissionRate(FieldQnty):
4295
4968
  >>> length = Length("beam_length")
4296
4969
  >>> length.set(100).millimeters # Sets to 100 mm
4297
4970
  """
4298
- return ts.PhotonEmissionRateSetter(self, value)
4971
+ if unit is not None:
4972
+ # Direct setting with unit
4973
+ setter = field_setter.PhotonEmissionRateSetter(self, value)
4974
+ # Get the unit property and call it to set the value
4975
+ if hasattr(setter, unit):
4976
+ getattr(setter, unit)
4977
+ else:
4978
+ raise ValueError(f"Unknown unit: {unit}")
4979
+ return self
4980
+ else:
4981
+ return field_setter.PhotonEmissionRateSetter(self, value)
4299
4982
 
4300
4983
 
4301
4984
  class PowerPerUnitMass(FieldQnty):
@@ -4316,7 +4999,7 @@ class PowerPerUnitMass(FieldQnty):
4316
4999
  """
4317
5000
 
4318
5001
  __slots__ = ()
4319
- _setter_class = ts.PowerPerUnitMassSetter
5002
+ _setter_class = field_setter.PowerPerUnitMassSetter
4320
5003
  _dimension = dim.POWER_PER_UNIT_MASS
4321
5004
 
4322
5005
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4339,7 +5022,7 @@ class PowerPerUnitMass(FieldQnty):
4339
5022
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4340
5023
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4341
5024
 
4342
- def set(self, value: float, unit: str | None = None) -> ts.PowerPerUnitMassSetter:
5025
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.PowerPerUnitMassSetter':
4343
5026
  """
4344
5027
  Create a setter for this power per unit mass or specific power quantity.
4345
5028
 
@@ -4354,7 +5037,17 @@ class PowerPerUnitMass(FieldQnty):
4354
5037
  >>> length = Length("beam_length")
4355
5038
  >>> length.set(100).millimeters # Sets to 100 mm
4356
5039
  """
4357
- return ts.PowerPerUnitMassSetter(self, value)
5040
+ if unit is not None:
5041
+ # Direct setting with unit
5042
+ setter = field_setter.PowerPerUnitMassSetter(self, value)
5043
+ # Get the unit property and call it to set the value
5044
+ if hasattr(setter, unit):
5045
+ getattr(setter, unit)
5046
+ else:
5047
+ raise ValueError(f"Unknown unit: {unit}")
5048
+ return self
5049
+ else:
5050
+ return field_setter.PowerPerUnitMassSetter(self, value)
4358
5051
 
4359
5052
 
4360
5053
  class PowerPerUnitVolume(FieldQnty):
@@ -4375,7 +5068,7 @@ class PowerPerUnitVolume(FieldQnty):
4375
5068
  """
4376
5069
 
4377
5070
  __slots__ = ()
4378
- _setter_class = ts.PowerPerUnitVolumeSetter
5071
+ _setter_class = field_setter.PowerPerUnitVolumeSetter
4379
5072
  _dimension = dim.POWER_PER_UNIT_VOLUME
4380
5073
 
4381
5074
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4398,7 +5091,7 @@ class PowerPerUnitVolume(FieldQnty):
4398
5091
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4399
5092
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4400
5093
 
4401
- def set(self, value: float, unit: str | None = None) -> ts.PowerPerUnitVolumeSetter:
5094
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.PowerPerUnitVolumeSetter':
4402
5095
  """
4403
5096
  Create a setter for this power per unit volume or power density quantity.
4404
5097
 
@@ -4413,7 +5106,17 @@ class PowerPerUnitVolume(FieldQnty):
4413
5106
  >>> length = Length("beam_length")
4414
5107
  >>> length.set(100).millimeters # Sets to 100 mm
4415
5108
  """
4416
- return ts.PowerPerUnitVolumeSetter(self, value)
5109
+ if unit is not None:
5110
+ # Direct setting with unit
5111
+ setter = field_setter.PowerPerUnitVolumeSetter(self, value)
5112
+ # Get the unit property and call it to set the value
5113
+ if hasattr(setter, unit):
5114
+ getattr(setter, unit)
5115
+ else:
5116
+ raise ValueError(f"Unknown unit: {unit}")
5117
+ return self
5118
+ else:
5119
+ return field_setter.PowerPerUnitVolumeSetter(self, value)
4417
5120
 
4418
5121
 
4419
5122
  class PowerThermalDuty(FieldQnty):
@@ -4434,7 +5137,7 @@ class PowerThermalDuty(FieldQnty):
4434
5137
  """
4435
5138
 
4436
5139
  __slots__ = ()
4437
- _setter_class = ts.PowerThermalDutySetter
5140
+ _setter_class = field_setter.PowerThermalDutySetter
4438
5141
  _dimension = dim.POWER_THERMAL_DUTY
4439
5142
 
4440
5143
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4457,7 +5160,7 @@ class PowerThermalDuty(FieldQnty):
4457
5160
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4458
5161
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4459
5162
 
4460
- def set(self, value: float, unit: str | None = None) -> ts.PowerThermalDutySetter:
5163
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.PowerThermalDutySetter':
4461
5164
  """
4462
5165
  Create a setter for this power, thermal duty quantity.
4463
5166
 
@@ -4472,7 +5175,17 @@ class PowerThermalDuty(FieldQnty):
4472
5175
  >>> length = Length("beam_length")
4473
5176
  >>> length.set(100).millimeters # Sets to 100 mm
4474
5177
  """
4475
- return ts.PowerThermalDutySetter(self, value)
5178
+ if unit is not None:
5179
+ # Direct setting with unit
5180
+ setter = field_setter.PowerThermalDutySetter(self, value)
5181
+ # Get the unit property and call it to set the value
5182
+ if hasattr(setter, unit):
5183
+ getattr(setter, unit)
5184
+ else:
5185
+ raise ValueError(f"Unknown unit: {unit}")
5186
+ return self
5187
+ else:
5188
+ return field_setter.PowerThermalDutySetter(self, value)
4476
5189
 
4477
5190
 
4478
5191
  class Pressure(FieldQnty):
@@ -4493,7 +5206,7 @@ class Pressure(FieldQnty):
4493
5206
  """
4494
5207
 
4495
5208
  __slots__ = ()
4496
- _setter_class = ts.PressureSetter
5209
+ _setter_class = field_setter.PressureSetter
4497
5210
  _dimension = dim.PRESSURE
4498
5211
 
4499
5212
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4516,45 +5229,32 @@ class Pressure(FieldQnty):
4516
5229
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4517
5230
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4518
5231
 
4519
- def set(self, value: float, unit: str | None = None) -> ts.PressureSetter:
5232
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.PressureSetter':
4520
5233
  """
4521
5234
  Create a setter for this pressure quantity.
4522
5235
 
4523
5236
  Args:
4524
5237
  value: The numeric value to set
4525
- unit: Optional unit string (for direct setting)
5238
+ unit: Optional unit string (for compatibility with base class)
4526
5239
 
4527
5240
  Returns:
4528
- PressureSetter: A setter with unit properties like .psi, .bar, etc.
5241
+ PressureSetter: A setter with unit properties like .meters, .inches, etc.
4529
5242
 
4530
5243
  Example:
4531
- >>> pressure = Pressure("system_pressure")
4532
- >>> pressure.set(100).psi # Sets to 100 psi
4533
- >>> pressure.set(100, "psi") # Direct setting
5244
+ >>> length = Length("beam_length")
5245
+ >>> length.set(100).millimeters # Sets to 100 mm
4534
5246
  """
4535
5247
  if unit is not None:
4536
5248
  # Direct setting with unit
4537
- setter = ts.PressureSetter(self, value)
5249
+ setter = field_setter.PressureSetter(self, value)
4538
5250
  # Get the unit property and call it to set the value
4539
5251
  if hasattr(setter, unit):
4540
5252
  getattr(setter, unit)
4541
5253
  else:
4542
- # Try common aliases
4543
- unit_aliases = {
4544
- "psi": "psi", "pound_per_square_inch": "psi",
4545
- "bar": "bar", "bars": "bar",
4546
- "pascal": "pascal", "pascals": "pascal", "pa": "pascal",
4547
- "kpa": "kilopascal", "kilopascal": "kilopascal",
4548
- "mpa": "megapascal", "megapascal": "megapascal",
4549
- "atm": "atmosphere", "atmosphere": "atmosphere"
4550
- }
4551
- if unit in unit_aliases and hasattr(setter, unit_aliases[unit]):
4552
- getattr(setter, unit_aliases[unit])
4553
- else:
4554
- raise ValueError(f"Unknown unit: {unit}")
4555
- return self # Return the variable itself for consistency
4556
- else:
4557
- return ts.PressureSetter(self, value)
5254
+ raise ValueError(f"Unknown unit: {unit}")
5255
+ return self
5256
+ else:
5257
+ return field_setter.PressureSetter(self, value)
4558
5258
 
4559
5259
 
4560
5260
  class RadiationDoseEquivalent(FieldQnty):
@@ -4575,7 +5275,7 @@ class RadiationDoseEquivalent(FieldQnty):
4575
5275
  """
4576
5276
 
4577
5277
  __slots__ = ()
4578
- _setter_class = ts.RadiationDoseEquivalentSetter
5278
+ _setter_class = field_setter.RadiationDoseEquivalentSetter
4579
5279
  _dimension = dim.RADIATION_DOSE_EQUIVALENT
4580
5280
 
4581
5281
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4598,7 +5298,7 @@ class RadiationDoseEquivalent(FieldQnty):
4598
5298
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4599
5299
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4600
5300
 
4601
- def set(self, value: float, unit: str | None = None) -> ts.RadiationDoseEquivalentSetter:
5301
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.RadiationDoseEquivalentSetter':
4602
5302
  """
4603
5303
  Create a setter for this radiation dose equivalent quantity.
4604
5304
 
@@ -4613,7 +5313,17 @@ class RadiationDoseEquivalent(FieldQnty):
4613
5313
  >>> length = Length("beam_length")
4614
5314
  >>> length.set(100).millimeters # Sets to 100 mm
4615
5315
  """
4616
- return ts.RadiationDoseEquivalentSetter(self, value)
5316
+ if unit is not None:
5317
+ # Direct setting with unit
5318
+ setter = field_setter.RadiationDoseEquivalentSetter(self, value)
5319
+ # Get the unit property and call it to set the value
5320
+ if hasattr(setter, unit):
5321
+ getattr(setter, unit)
5322
+ else:
5323
+ raise ValueError(f"Unknown unit: {unit}")
5324
+ return self
5325
+ else:
5326
+ return field_setter.RadiationDoseEquivalentSetter(self, value)
4617
5327
 
4618
5328
 
4619
5329
  class RadiationExposure(FieldQnty):
@@ -4634,7 +5344,7 @@ class RadiationExposure(FieldQnty):
4634
5344
  """
4635
5345
 
4636
5346
  __slots__ = ()
4637
- _setter_class = ts.RadiationExposureSetter
5347
+ _setter_class = field_setter.RadiationExposureSetter
4638
5348
  _dimension = dim.RADIATION_EXPOSURE
4639
5349
 
4640
5350
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4657,7 +5367,7 @@ class RadiationExposure(FieldQnty):
4657
5367
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4658
5368
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4659
5369
 
4660
- def set(self, value: float, unit: str | None = None) -> ts.RadiationExposureSetter:
5370
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.RadiationExposureSetter':
4661
5371
  """
4662
5372
  Create a setter for this radiation exposure quantity.
4663
5373
 
@@ -4672,7 +5382,17 @@ class RadiationExposure(FieldQnty):
4672
5382
  >>> length = Length("beam_length")
4673
5383
  >>> length.set(100).millimeters # Sets to 100 mm
4674
5384
  """
4675
- return ts.RadiationExposureSetter(self, value)
5385
+ if unit is not None:
5386
+ # Direct setting with unit
5387
+ setter = field_setter.RadiationExposureSetter(self, value)
5388
+ # Get the unit property and call it to set the value
5389
+ if hasattr(setter, unit):
5390
+ getattr(setter, unit)
5391
+ else:
5392
+ raise ValueError(f"Unknown unit: {unit}")
5393
+ return self
5394
+ else:
5395
+ return field_setter.RadiationExposureSetter(self, value)
4676
5396
 
4677
5397
 
4678
5398
  class Radioactivity(FieldQnty):
@@ -4693,7 +5413,7 @@ class Radioactivity(FieldQnty):
4693
5413
  """
4694
5414
 
4695
5415
  __slots__ = ()
4696
- _setter_class = ts.RadioactivitySetter
5416
+ _setter_class = field_setter.RadioactivitySetter
4697
5417
  _dimension = dim.RADIOACTIVITY
4698
5418
 
4699
5419
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4716,7 +5436,7 @@ class Radioactivity(FieldQnty):
4716
5436
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4717
5437
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4718
5438
 
4719
- def set(self, value: float, unit: str | None = None) -> ts.RadioactivitySetter:
5439
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.RadioactivitySetter':
4720
5440
  """
4721
5441
  Create a setter for this radioactivity quantity.
4722
5442
 
@@ -4731,7 +5451,17 @@ class Radioactivity(FieldQnty):
4731
5451
  >>> length = Length("beam_length")
4732
5452
  >>> length.set(100).millimeters # Sets to 100 mm
4733
5453
  """
4734
- return ts.RadioactivitySetter(self, value)
5454
+ if unit is not None:
5455
+ # Direct setting with unit
5456
+ setter = field_setter.RadioactivitySetter(self, value)
5457
+ # Get the unit property and call it to set the value
5458
+ if hasattr(setter, unit):
5459
+ getattr(setter, unit)
5460
+ else:
5461
+ raise ValueError(f"Unknown unit: {unit}")
5462
+ return self
5463
+ else:
5464
+ return field_setter.RadioactivitySetter(self, value)
4735
5465
 
4736
5466
 
4737
5467
  class SecondMomentOfArea(FieldQnty):
@@ -4752,7 +5482,7 @@ class SecondMomentOfArea(FieldQnty):
4752
5482
  """
4753
5483
 
4754
5484
  __slots__ = ()
4755
- _setter_class = ts.SecondMomentOfAreaSetter
5485
+ _setter_class = field_setter.SecondMomentOfAreaSetter
4756
5486
  _dimension = dim.SECOND_MOMENT_OF_AREA
4757
5487
 
4758
5488
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4775,7 +5505,7 @@ class SecondMomentOfArea(FieldQnty):
4775
5505
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4776
5506
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4777
5507
 
4778
- def set(self, value: float, unit: str | None = None) -> ts.SecondMomentOfAreaSetter:
5508
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SecondMomentOfAreaSetter':
4779
5509
  """
4780
5510
  Create a setter for this second moment of area quantity.
4781
5511
 
@@ -4790,7 +5520,17 @@ class SecondMomentOfArea(FieldQnty):
4790
5520
  >>> length = Length("beam_length")
4791
5521
  >>> length.set(100).millimeters # Sets to 100 mm
4792
5522
  """
4793
- return ts.SecondMomentOfAreaSetter(self, value)
5523
+ if unit is not None:
5524
+ # Direct setting with unit
5525
+ setter = field_setter.SecondMomentOfAreaSetter(self, value)
5526
+ # Get the unit property and call it to set the value
5527
+ if hasattr(setter, unit):
5528
+ getattr(setter, unit)
5529
+ else:
5530
+ raise ValueError(f"Unknown unit: {unit}")
5531
+ return self
5532
+ else:
5533
+ return field_setter.SecondMomentOfAreaSetter(self, value)
4794
5534
 
4795
5535
 
4796
5536
  class SecondRadiationConstantPlanck(FieldQnty):
@@ -4811,7 +5551,7 @@ class SecondRadiationConstantPlanck(FieldQnty):
4811
5551
  """
4812
5552
 
4813
5553
  __slots__ = ()
4814
- _setter_class = ts.SecondRadiationConstantPlanckSetter
5554
+ _setter_class = field_setter.SecondRadiationConstantPlanckSetter
4815
5555
  _dimension = dim.SECOND_RADIATION_CONSTANT_PLANCK
4816
5556
 
4817
5557
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4834,7 +5574,7 @@ class SecondRadiationConstantPlanck(FieldQnty):
4834
5574
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4835
5575
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4836
5576
 
4837
- def set(self, value: float, unit: str | None = None) -> ts.SecondRadiationConstantPlanckSetter:
5577
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SecondRadiationConstantPlanckSetter':
4838
5578
  """
4839
5579
  Create a setter for this second radiation constant (planck) quantity.
4840
5580
 
@@ -4849,7 +5589,17 @@ class SecondRadiationConstantPlanck(FieldQnty):
4849
5589
  >>> length = Length("beam_length")
4850
5590
  >>> length.set(100).millimeters # Sets to 100 mm
4851
5591
  """
4852
- return ts.SecondRadiationConstantPlanckSetter(self, value)
5592
+ if unit is not None:
5593
+ # Direct setting with unit
5594
+ setter = field_setter.SecondRadiationConstantPlanckSetter(self, value)
5595
+ # Get the unit property and call it to set the value
5596
+ if hasattr(setter, unit):
5597
+ getattr(setter, unit)
5598
+ else:
5599
+ raise ValueError(f"Unknown unit: {unit}")
5600
+ return self
5601
+ else:
5602
+ return field_setter.SecondRadiationConstantPlanckSetter(self, value)
4853
5603
 
4854
5604
 
4855
5605
  class SpecificEnthalpy(FieldQnty):
@@ -4870,7 +5620,7 @@ class SpecificEnthalpy(FieldQnty):
4870
5620
  """
4871
5621
 
4872
5622
  __slots__ = ()
4873
- _setter_class = ts.SpecificEnthalpySetter
5623
+ _setter_class = field_setter.SpecificEnthalpySetter
4874
5624
  _dimension = dim.SPECIFIC_ENTHALPY
4875
5625
 
4876
5626
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4893,7 +5643,7 @@ class SpecificEnthalpy(FieldQnty):
4893
5643
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4894
5644
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4895
5645
 
4896
- def set(self, value: float, unit: str | None = None) -> ts.SpecificEnthalpySetter:
5646
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SpecificEnthalpySetter':
4897
5647
  """
4898
5648
  Create a setter for this specific enthalpy quantity.
4899
5649
 
@@ -4908,7 +5658,17 @@ class SpecificEnthalpy(FieldQnty):
4908
5658
  >>> length = Length("beam_length")
4909
5659
  >>> length.set(100).millimeters # Sets to 100 mm
4910
5660
  """
4911
- return ts.SpecificEnthalpySetter(self, value)
5661
+ if unit is not None:
5662
+ # Direct setting with unit
5663
+ setter = field_setter.SpecificEnthalpySetter(self, value)
5664
+ # Get the unit property and call it to set the value
5665
+ if hasattr(setter, unit):
5666
+ getattr(setter, unit)
5667
+ else:
5668
+ raise ValueError(f"Unknown unit: {unit}")
5669
+ return self
5670
+ else:
5671
+ return field_setter.SpecificEnthalpySetter(self, value)
4912
5672
 
4913
5673
 
4914
5674
  class SpecificGravity(FieldQnty):
@@ -4929,7 +5689,7 @@ class SpecificGravity(FieldQnty):
4929
5689
  """
4930
5690
 
4931
5691
  __slots__ = ()
4932
- _setter_class = ts.SpecificGravitySetter
5692
+ _setter_class = field_setter.SpecificGravitySetter
4933
5693
  _dimension = dim.SPECIFIC_GRAVITY
4934
5694
 
4935
5695
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4952,7 +5712,7 @@ class SpecificGravity(FieldQnty):
4952
5712
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4953
5713
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4954
5714
 
4955
- def set(self, value: float, unit: str | None = None) -> ts.SpecificGravitySetter:
5715
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SpecificGravitySetter':
4956
5716
  """
4957
5717
  Create a setter for this specific gravity quantity.
4958
5718
 
@@ -4967,7 +5727,17 @@ class SpecificGravity(FieldQnty):
4967
5727
  >>> length = Length("beam_length")
4968
5728
  >>> length.set(100).millimeters # Sets to 100 mm
4969
5729
  """
4970
- return ts.SpecificGravitySetter(self, value)
5730
+ if unit is not None:
5731
+ # Direct setting with unit
5732
+ setter = field_setter.SpecificGravitySetter(self, value)
5733
+ # Get the unit property and call it to set the value
5734
+ if hasattr(setter, unit):
5735
+ getattr(setter, unit)
5736
+ else:
5737
+ raise ValueError(f"Unknown unit: {unit}")
5738
+ return self
5739
+ else:
5740
+ return field_setter.SpecificGravitySetter(self, value)
4971
5741
 
4972
5742
 
4973
5743
  class SpecificHeatCapacityConstantPressure(FieldQnty):
@@ -4988,7 +5758,7 @@ class SpecificHeatCapacityConstantPressure(FieldQnty):
4988
5758
  """
4989
5759
 
4990
5760
  __slots__ = ()
4991
- _setter_class = ts.SpecificHeatCapacityConstantPressureSetter
5761
+ _setter_class = field_setter.SpecificHeatCapacityConstantPressureSetter
4992
5762
  _dimension = dim.SPECIFIC_HEAT_CAPACITY_CONSTANT_PRESSURE
4993
5763
 
4994
5764
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5011,7 +5781,7 @@ class SpecificHeatCapacityConstantPressure(FieldQnty):
5011
5781
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5012
5782
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5013
5783
 
5014
- def set(self, value: float, unit: str | None = None) -> ts.SpecificHeatCapacityConstantPressureSetter:
5784
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SpecificHeatCapacityConstantPressureSetter':
5015
5785
  """
5016
5786
  Create a setter for this specific heat capacity (constant pressure) quantity.
5017
5787
 
@@ -5026,7 +5796,17 @@ class SpecificHeatCapacityConstantPressure(FieldQnty):
5026
5796
  >>> length = Length("beam_length")
5027
5797
  >>> length.set(100).millimeters # Sets to 100 mm
5028
5798
  """
5029
- return ts.SpecificHeatCapacityConstantPressureSetter(self, value)
5799
+ if unit is not None:
5800
+ # Direct setting with unit
5801
+ setter = field_setter.SpecificHeatCapacityConstantPressureSetter(self, value)
5802
+ # Get the unit property and call it to set the value
5803
+ if hasattr(setter, unit):
5804
+ getattr(setter, unit)
5805
+ else:
5806
+ raise ValueError(f"Unknown unit: {unit}")
5807
+ return self
5808
+ else:
5809
+ return field_setter.SpecificHeatCapacityConstantPressureSetter(self, value)
5030
5810
 
5031
5811
 
5032
5812
  class SpecificLength(FieldQnty):
@@ -5047,7 +5827,7 @@ class SpecificLength(FieldQnty):
5047
5827
  """
5048
5828
 
5049
5829
  __slots__ = ()
5050
- _setter_class = ts.SpecificLengthSetter
5830
+ _setter_class = field_setter.SpecificLengthSetter
5051
5831
  _dimension = dim.SPECIFIC_LENGTH
5052
5832
 
5053
5833
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5070,7 +5850,7 @@ class SpecificLength(FieldQnty):
5070
5850
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5071
5851
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5072
5852
 
5073
- def set(self, value: float, unit: str | None = None) -> ts.SpecificLengthSetter:
5853
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SpecificLengthSetter':
5074
5854
  """
5075
5855
  Create a setter for this specific length quantity.
5076
5856
 
@@ -5085,7 +5865,17 @@ class SpecificLength(FieldQnty):
5085
5865
  >>> length = Length("beam_length")
5086
5866
  >>> length.set(100).millimeters # Sets to 100 mm
5087
5867
  """
5088
- return ts.SpecificLengthSetter(self, value)
5868
+ if unit is not None:
5869
+ # Direct setting with unit
5870
+ setter = field_setter.SpecificLengthSetter(self, value)
5871
+ # Get the unit property and call it to set the value
5872
+ if hasattr(setter, unit):
5873
+ getattr(setter, unit)
5874
+ else:
5875
+ raise ValueError(f"Unknown unit: {unit}")
5876
+ return self
5877
+ else:
5878
+ return field_setter.SpecificLengthSetter(self, value)
5089
5879
 
5090
5880
 
5091
5881
  class SpecificSurface(FieldQnty):
@@ -5106,7 +5896,7 @@ class SpecificSurface(FieldQnty):
5106
5896
  """
5107
5897
 
5108
5898
  __slots__ = ()
5109
- _setter_class = ts.SpecificSurfaceSetter
5899
+ _setter_class = field_setter.SpecificSurfaceSetter
5110
5900
  _dimension = dim.SPECIFIC_SURFACE
5111
5901
 
5112
5902
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5129,7 +5919,7 @@ class SpecificSurface(FieldQnty):
5129
5919
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5130
5920
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5131
5921
 
5132
- def set(self, value: float, unit: str | None = None) -> ts.SpecificSurfaceSetter:
5922
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SpecificSurfaceSetter':
5133
5923
  """
5134
5924
  Create a setter for this specific surface quantity.
5135
5925
 
@@ -5144,7 +5934,17 @@ class SpecificSurface(FieldQnty):
5144
5934
  >>> length = Length("beam_length")
5145
5935
  >>> length.set(100).millimeters # Sets to 100 mm
5146
5936
  """
5147
- return ts.SpecificSurfaceSetter(self, value)
5937
+ if unit is not None:
5938
+ # Direct setting with unit
5939
+ setter = field_setter.SpecificSurfaceSetter(self, value)
5940
+ # Get the unit property and call it to set the value
5941
+ if hasattr(setter, unit):
5942
+ getattr(setter, unit)
5943
+ else:
5944
+ raise ValueError(f"Unknown unit: {unit}")
5945
+ return self
5946
+ else:
5947
+ return field_setter.SpecificSurfaceSetter(self, value)
5148
5948
 
5149
5949
 
5150
5950
  class SpecificVolume(FieldQnty):
@@ -5165,7 +5965,7 @@ class SpecificVolume(FieldQnty):
5165
5965
  """
5166
5966
 
5167
5967
  __slots__ = ()
5168
- _setter_class = ts.SpecificVolumeSetter
5968
+ _setter_class = field_setter.SpecificVolumeSetter
5169
5969
  _dimension = dim.SPECIFIC_VOLUME
5170
5970
 
5171
5971
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5188,7 +5988,7 @@ class SpecificVolume(FieldQnty):
5188
5988
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5189
5989
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5190
5990
 
5191
- def set(self, value: float, unit: str | None = None) -> ts.SpecificVolumeSetter:
5991
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SpecificVolumeSetter':
5192
5992
  """
5193
5993
  Create a setter for this specific volume quantity.
5194
5994
 
@@ -5203,7 +6003,17 @@ class SpecificVolume(FieldQnty):
5203
6003
  >>> length = Length("beam_length")
5204
6004
  >>> length.set(100).millimeters # Sets to 100 mm
5205
6005
  """
5206
- return ts.SpecificVolumeSetter(self, value)
6006
+ if unit is not None:
6007
+ # Direct setting with unit
6008
+ setter = field_setter.SpecificVolumeSetter(self, value)
6009
+ # Get the unit property and call it to set the value
6010
+ if hasattr(setter, unit):
6011
+ getattr(setter, unit)
6012
+ else:
6013
+ raise ValueError(f"Unknown unit: {unit}")
6014
+ return self
6015
+ else:
6016
+ return field_setter.SpecificVolumeSetter(self, value)
5207
6017
 
5208
6018
 
5209
6019
  class Stress(FieldQnty):
@@ -5224,7 +6034,7 @@ class Stress(FieldQnty):
5224
6034
  """
5225
6035
 
5226
6036
  __slots__ = ()
5227
- _setter_class = ts.StressSetter
6037
+ _setter_class = field_setter.StressSetter
5228
6038
  _dimension = dim.STRESS
5229
6039
 
5230
6040
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5247,7 +6057,7 @@ class Stress(FieldQnty):
5247
6057
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5248
6058
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5249
6059
 
5250
- def set(self, value: float, unit: str | None = None) -> ts.StressSetter:
6060
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.StressSetter':
5251
6061
  """
5252
6062
  Create a setter for this stress quantity.
5253
6063
 
@@ -5262,7 +6072,17 @@ class Stress(FieldQnty):
5262
6072
  >>> length = Length("beam_length")
5263
6073
  >>> length.set(100).millimeters # Sets to 100 mm
5264
6074
  """
5265
- return ts.StressSetter(self, value)
6075
+ if unit is not None:
6076
+ # Direct setting with unit
6077
+ setter = field_setter.StressSetter(self, value)
6078
+ # Get the unit property and call it to set the value
6079
+ if hasattr(setter, unit):
6080
+ getattr(setter, unit)
6081
+ else:
6082
+ raise ValueError(f"Unknown unit: {unit}")
6083
+ return self
6084
+ else:
6085
+ return field_setter.StressSetter(self, value)
5266
6086
 
5267
6087
 
5268
6088
  class SurfaceMassDensity(FieldQnty):
@@ -5283,7 +6103,7 @@ class SurfaceMassDensity(FieldQnty):
5283
6103
  """
5284
6104
 
5285
6105
  __slots__ = ()
5286
- _setter_class = ts.SurfaceMassDensitySetter
6106
+ _setter_class = field_setter.SurfaceMassDensitySetter
5287
6107
  _dimension = dim.SURFACE_MASS_DENSITY
5288
6108
 
5289
6109
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5306,7 +6126,7 @@ class SurfaceMassDensity(FieldQnty):
5306
6126
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5307
6127
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5308
6128
 
5309
- def set(self, value: float, unit: str | None = None) -> ts.SurfaceMassDensitySetter:
6129
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SurfaceMassDensitySetter':
5310
6130
  """
5311
6131
  Create a setter for this surface mass density quantity.
5312
6132
 
@@ -5321,7 +6141,17 @@ class SurfaceMassDensity(FieldQnty):
5321
6141
  >>> length = Length("beam_length")
5322
6142
  >>> length.set(100).millimeters # Sets to 100 mm
5323
6143
  """
5324
- return ts.SurfaceMassDensitySetter(self, value)
6144
+ if unit is not None:
6145
+ # Direct setting with unit
6146
+ setter = field_setter.SurfaceMassDensitySetter(self, value)
6147
+ # Get the unit property and call it to set the value
6148
+ if hasattr(setter, unit):
6149
+ getattr(setter, unit)
6150
+ else:
6151
+ raise ValueError(f"Unknown unit: {unit}")
6152
+ return self
6153
+ else:
6154
+ return field_setter.SurfaceMassDensitySetter(self, value)
5325
6155
 
5326
6156
 
5327
6157
  class SurfaceTension(FieldQnty):
@@ -5342,7 +6172,7 @@ class SurfaceTension(FieldQnty):
5342
6172
  """
5343
6173
 
5344
6174
  __slots__ = ()
5345
- _setter_class = ts.SurfaceTensionSetter
6175
+ _setter_class = field_setter.SurfaceTensionSetter
5346
6176
  _dimension = dim.SURFACE_TENSION
5347
6177
 
5348
6178
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5365,7 +6195,7 @@ class SurfaceTension(FieldQnty):
5365
6195
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5366
6196
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5367
6197
 
5368
- def set(self, value: float, unit: str | None = None) -> ts.SurfaceTensionSetter:
6198
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.SurfaceTensionSetter':
5369
6199
  """
5370
6200
  Create a setter for this surface tension quantity.
5371
6201
 
@@ -5380,7 +6210,17 @@ class SurfaceTension(FieldQnty):
5380
6210
  >>> length = Length("beam_length")
5381
6211
  >>> length.set(100).millimeters # Sets to 100 mm
5382
6212
  """
5383
- return ts.SurfaceTensionSetter(self, value)
6213
+ if unit is not None:
6214
+ # Direct setting with unit
6215
+ setter = field_setter.SurfaceTensionSetter(self, value)
6216
+ # Get the unit property and call it to set the value
6217
+ if hasattr(setter, unit):
6218
+ getattr(setter, unit)
6219
+ else:
6220
+ raise ValueError(f"Unknown unit: {unit}")
6221
+ return self
6222
+ else:
6223
+ return field_setter.SurfaceTensionSetter(self, value)
5384
6224
 
5385
6225
 
5386
6226
  class Temperature(FieldQnty):
@@ -5401,7 +6241,7 @@ class Temperature(FieldQnty):
5401
6241
  """
5402
6242
 
5403
6243
  __slots__ = ()
5404
- _setter_class = ts.TemperatureSetter
6244
+ _setter_class = field_setter.TemperatureSetter
5405
6245
  _dimension = dim.TEMPERATURE
5406
6246
 
5407
6247
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5424,7 +6264,7 @@ class Temperature(FieldQnty):
5424
6264
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5425
6265
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5426
6266
 
5427
- def set(self, value: float, unit: str | None = None) -> ts.TemperatureSetter:
6267
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.TemperatureSetter':
5428
6268
  """
5429
6269
  Create a setter for this temperature quantity.
5430
6270
 
@@ -5439,7 +6279,17 @@ class Temperature(FieldQnty):
5439
6279
  >>> length = Length("beam_length")
5440
6280
  >>> length.set(100).millimeters # Sets to 100 mm
5441
6281
  """
5442
- return ts.TemperatureSetter(self, value)
6282
+ if unit is not None:
6283
+ # Direct setting with unit
6284
+ setter = field_setter.TemperatureSetter(self, value)
6285
+ # Get the unit property and call it to set the value
6286
+ if hasattr(setter, unit):
6287
+ getattr(setter, unit)
6288
+ else:
6289
+ raise ValueError(f"Unknown unit: {unit}")
6290
+ return self
6291
+ else:
6292
+ return field_setter.TemperatureSetter(self, value)
5443
6293
 
5444
6294
 
5445
6295
  class ThermalConductivity(FieldQnty):
@@ -5460,7 +6310,7 @@ class ThermalConductivity(FieldQnty):
5460
6310
  """
5461
6311
 
5462
6312
  __slots__ = ()
5463
- _setter_class = ts.ThermalConductivitySetter
6313
+ _setter_class = field_setter.ThermalConductivitySetter
5464
6314
  _dimension = dim.THERMAL_CONDUCTIVITY
5465
6315
 
5466
6316
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5483,7 +6333,7 @@ class ThermalConductivity(FieldQnty):
5483
6333
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5484
6334
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5485
6335
 
5486
- def set(self, value: float, unit: str | None = None) -> ts.ThermalConductivitySetter:
6336
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ThermalConductivitySetter':
5487
6337
  """
5488
6338
  Create a setter for this thermal conductivity quantity.
5489
6339
 
@@ -5498,7 +6348,17 @@ class ThermalConductivity(FieldQnty):
5498
6348
  >>> length = Length("beam_length")
5499
6349
  >>> length.set(100).millimeters # Sets to 100 mm
5500
6350
  """
5501
- return ts.ThermalConductivitySetter(self, value)
6351
+ if unit is not None:
6352
+ # Direct setting with unit
6353
+ setter = field_setter.ThermalConductivitySetter(self, value)
6354
+ # Get the unit property and call it to set the value
6355
+ if hasattr(setter, unit):
6356
+ getattr(setter, unit)
6357
+ else:
6358
+ raise ValueError(f"Unknown unit: {unit}")
6359
+ return self
6360
+ else:
6361
+ return field_setter.ThermalConductivitySetter(self, value)
5502
6362
 
5503
6363
 
5504
6364
  class Time(FieldQnty):
@@ -5519,7 +6379,7 @@ class Time(FieldQnty):
5519
6379
  """
5520
6380
 
5521
6381
  __slots__ = ()
5522
- _setter_class = ts.TimeSetter
6382
+ _setter_class = field_setter.TimeSetter
5523
6383
  _dimension = dim.TIME
5524
6384
 
5525
6385
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5542,7 +6402,7 @@ class Time(FieldQnty):
5542
6402
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5543
6403
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5544
6404
 
5545
- def set(self, value: float, unit: str | None = None) -> ts.TimeSetter:
6405
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.TimeSetter':
5546
6406
  """
5547
6407
  Create a setter for this time quantity.
5548
6408
 
@@ -5557,7 +6417,17 @@ class Time(FieldQnty):
5557
6417
  >>> length = Length("beam_length")
5558
6418
  >>> length.set(100).millimeters # Sets to 100 mm
5559
6419
  """
5560
- return ts.TimeSetter(self, value)
6420
+ if unit is not None:
6421
+ # Direct setting with unit
6422
+ setter = field_setter.TimeSetter(self, value)
6423
+ # Get the unit property and call it to set the value
6424
+ if hasattr(setter, unit):
6425
+ getattr(setter, unit)
6426
+ else:
6427
+ raise ValueError(f"Unknown unit: {unit}")
6428
+ return self
6429
+ else:
6430
+ return field_setter.TimeSetter(self, value)
5561
6431
 
5562
6432
 
5563
6433
  class Torque(FieldQnty):
@@ -5578,7 +6448,7 @@ class Torque(FieldQnty):
5578
6448
  """
5579
6449
 
5580
6450
  __slots__ = ()
5581
- _setter_class = ts.TorqueSetter
6451
+ _setter_class = field_setter.TorqueSetter
5582
6452
  _dimension = dim.TORQUE
5583
6453
 
5584
6454
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5601,7 +6471,7 @@ class Torque(FieldQnty):
5601
6471
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5602
6472
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5603
6473
 
5604
- def set(self, value: float, unit: str | None = None) -> ts.TorqueSetter:
6474
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.TorqueSetter':
5605
6475
  """
5606
6476
  Create a setter for this torque quantity.
5607
6477
 
@@ -5616,7 +6486,17 @@ class Torque(FieldQnty):
5616
6486
  >>> length = Length("beam_length")
5617
6487
  >>> length.set(100).millimeters # Sets to 100 mm
5618
6488
  """
5619
- return ts.TorqueSetter(self, value)
6489
+ if unit is not None:
6490
+ # Direct setting with unit
6491
+ setter = field_setter.TorqueSetter(self, value)
6492
+ # Get the unit property and call it to set the value
6493
+ if hasattr(setter, unit):
6494
+ getattr(setter, unit)
6495
+ else:
6496
+ raise ValueError(f"Unknown unit: {unit}")
6497
+ return self
6498
+ else:
6499
+ return field_setter.TorqueSetter(self, value)
5620
6500
 
5621
6501
 
5622
6502
  class TurbulenceEnergyDissipationRate(FieldQnty):
@@ -5637,7 +6517,7 @@ class TurbulenceEnergyDissipationRate(FieldQnty):
5637
6517
  """
5638
6518
 
5639
6519
  __slots__ = ()
5640
- _setter_class = ts.TurbulenceEnergyDissipationRateSetter
6520
+ _setter_class = field_setter.TurbulenceEnergyDissipationRateSetter
5641
6521
  _dimension = dim.TURBULENCE_ENERGY_DISSIPATION_RATE
5642
6522
 
5643
6523
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5660,7 +6540,7 @@ class TurbulenceEnergyDissipationRate(FieldQnty):
5660
6540
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5661
6541
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5662
6542
 
5663
- def set(self, value: float, unit: str | None = None) -> ts.TurbulenceEnergyDissipationRateSetter:
6543
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.TurbulenceEnergyDissipationRateSetter':
5664
6544
  """
5665
6545
  Create a setter for this turbulence energy dissipation rate quantity.
5666
6546
 
@@ -5675,7 +6555,17 @@ class TurbulenceEnergyDissipationRate(FieldQnty):
5675
6555
  >>> length = Length("beam_length")
5676
6556
  >>> length.set(100).millimeters # Sets to 100 mm
5677
6557
  """
5678
- return ts.TurbulenceEnergyDissipationRateSetter(self, value)
6558
+ if unit is not None:
6559
+ # Direct setting with unit
6560
+ setter = field_setter.TurbulenceEnergyDissipationRateSetter(self, value)
6561
+ # Get the unit property and call it to set the value
6562
+ if hasattr(setter, unit):
6563
+ getattr(setter, unit)
6564
+ else:
6565
+ raise ValueError(f"Unknown unit: {unit}")
6566
+ return self
6567
+ else:
6568
+ return field_setter.TurbulenceEnergyDissipationRateSetter(self, value)
5679
6569
 
5680
6570
 
5681
6571
  class VelocityAngular(FieldQnty):
@@ -5696,7 +6586,7 @@ class VelocityAngular(FieldQnty):
5696
6586
  """
5697
6587
 
5698
6588
  __slots__ = ()
5699
- _setter_class = ts.VelocityAngularSetter
6589
+ _setter_class = field_setter.VelocityAngularSetter
5700
6590
  _dimension = dim.VELOCITY_ANGULAR
5701
6591
 
5702
6592
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5719,7 +6609,7 @@ class VelocityAngular(FieldQnty):
5719
6609
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5720
6610
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5721
6611
 
5722
- def set(self, value: float, unit: str | None = None) -> ts.VelocityAngularSetter:
6612
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VelocityAngularSetter':
5723
6613
  """
5724
6614
  Create a setter for this velocity, angular quantity.
5725
6615
 
@@ -5734,7 +6624,17 @@ class VelocityAngular(FieldQnty):
5734
6624
  >>> length = Length("beam_length")
5735
6625
  >>> length.set(100).millimeters # Sets to 100 mm
5736
6626
  """
5737
- return ts.VelocityAngularSetter(self, value)
6627
+ if unit is not None:
6628
+ # Direct setting with unit
6629
+ setter = field_setter.VelocityAngularSetter(self, value)
6630
+ # Get the unit property and call it to set the value
6631
+ if hasattr(setter, unit):
6632
+ getattr(setter, unit)
6633
+ else:
6634
+ raise ValueError(f"Unknown unit: {unit}")
6635
+ return self
6636
+ else:
6637
+ return field_setter.VelocityAngularSetter(self, value)
5738
6638
 
5739
6639
 
5740
6640
  class VelocityLinear(FieldQnty):
@@ -5755,7 +6655,7 @@ class VelocityLinear(FieldQnty):
5755
6655
  """
5756
6656
 
5757
6657
  __slots__ = ()
5758
- _setter_class = ts.VelocityLinearSetter
6658
+ _setter_class = field_setter.VelocityLinearSetter
5759
6659
  _dimension = dim.VELOCITY_LINEAR
5760
6660
 
5761
6661
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5778,7 +6678,7 @@ class VelocityLinear(FieldQnty):
5778
6678
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5779
6679
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5780
6680
 
5781
- def set(self, value: float, unit: str | None = None) -> ts.VelocityLinearSetter:
6681
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VelocityLinearSetter':
5782
6682
  """
5783
6683
  Create a setter for this velocity, linear quantity.
5784
6684
 
@@ -5793,7 +6693,17 @@ class VelocityLinear(FieldQnty):
5793
6693
  >>> length = Length("beam_length")
5794
6694
  >>> length.set(100).millimeters # Sets to 100 mm
5795
6695
  """
5796
- return ts.VelocityLinearSetter(self, value)
6696
+ if unit is not None:
6697
+ # Direct setting with unit
6698
+ setter = field_setter.VelocityLinearSetter(self, value)
6699
+ # Get the unit property and call it to set the value
6700
+ if hasattr(setter, unit):
6701
+ getattr(setter, unit)
6702
+ else:
6703
+ raise ValueError(f"Unknown unit: {unit}")
6704
+ return self
6705
+ else:
6706
+ return field_setter.VelocityLinearSetter(self, value)
5797
6707
 
5798
6708
 
5799
6709
  class ViscosityDynamic(FieldQnty):
@@ -5814,7 +6724,7 @@ class ViscosityDynamic(FieldQnty):
5814
6724
  """
5815
6725
 
5816
6726
  __slots__ = ()
5817
- _setter_class = ts.ViscosityDynamicSetter
6727
+ _setter_class = field_setter.ViscosityDynamicSetter
5818
6728
  _dimension = dim.VISCOSITY_DYNAMIC
5819
6729
 
5820
6730
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5837,7 +6747,7 @@ class ViscosityDynamic(FieldQnty):
5837
6747
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5838
6748
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5839
6749
 
5840
- def set(self, value: float, unit: str | None = None) -> ts.ViscosityDynamicSetter:
6750
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ViscosityDynamicSetter':
5841
6751
  """
5842
6752
  Create a setter for this viscosity, dynamic quantity.
5843
6753
 
@@ -5852,7 +6762,17 @@ class ViscosityDynamic(FieldQnty):
5852
6762
  >>> length = Length("beam_length")
5853
6763
  >>> length.set(100).millimeters # Sets to 100 mm
5854
6764
  """
5855
- return ts.ViscosityDynamicSetter(self, value)
6765
+ if unit is not None:
6766
+ # Direct setting with unit
6767
+ setter = field_setter.ViscosityDynamicSetter(self, value)
6768
+ # Get the unit property and call it to set the value
6769
+ if hasattr(setter, unit):
6770
+ getattr(setter, unit)
6771
+ else:
6772
+ raise ValueError(f"Unknown unit: {unit}")
6773
+ return self
6774
+ else:
6775
+ return field_setter.ViscosityDynamicSetter(self, value)
5856
6776
 
5857
6777
 
5858
6778
  class ViscosityKinematic(FieldQnty):
@@ -5873,7 +6793,7 @@ class ViscosityKinematic(FieldQnty):
5873
6793
  """
5874
6794
 
5875
6795
  __slots__ = ()
5876
- _setter_class = ts.ViscosityKinematicSetter
6796
+ _setter_class = field_setter.ViscosityKinematicSetter
5877
6797
  _dimension = dim.VISCOSITY_KINEMATIC
5878
6798
 
5879
6799
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5896,7 +6816,7 @@ class ViscosityKinematic(FieldQnty):
5896
6816
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5897
6817
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5898
6818
 
5899
- def set(self, value: float, unit: str | None = None) -> ts.ViscosityKinematicSetter:
6819
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.ViscosityKinematicSetter':
5900
6820
  """
5901
6821
  Create a setter for this viscosity, kinematic quantity.
5902
6822
 
@@ -5911,7 +6831,17 @@ class ViscosityKinematic(FieldQnty):
5911
6831
  >>> length = Length("beam_length")
5912
6832
  >>> length.set(100).millimeters # Sets to 100 mm
5913
6833
  """
5914
- return ts.ViscosityKinematicSetter(self, value)
6834
+ if unit is not None:
6835
+ # Direct setting with unit
6836
+ setter = field_setter.ViscosityKinematicSetter(self, value)
6837
+ # Get the unit property and call it to set the value
6838
+ if hasattr(setter, unit):
6839
+ getattr(setter, unit)
6840
+ else:
6841
+ raise ValueError(f"Unknown unit: {unit}")
6842
+ return self
6843
+ else:
6844
+ return field_setter.ViscosityKinematicSetter(self, value)
5915
6845
 
5916
6846
 
5917
6847
  class Volume(FieldQnty):
@@ -5932,7 +6862,7 @@ class Volume(FieldQnty):
5932
6862
  """
5933
6863
 
5934
6864
  __slots__ = ()
5935
- _setter_class = ts.VolumeSetter
6865
+ _setter_class = field_setter.VolumeSetter
5936
6866
  _dimension = dim.VOLUME
5937
6867
 
5938
6868
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5955,7 +6885,7 @@ class Volume(FieldQnty):
5955
6885
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5956
6886
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5957
6887
 
5958
- def set(self, value: float, unit: str | None = None) -> ts.VolumeSetter:
6888
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VolumeSetter':
5959
6889
  """
5960
6890
  Create a setter for this volume quantity.
5961
6891
 
@@ -5970,7 +6900,17 @@ class Volume(FieldQnty):
5970
6900
  >>> length = Length("beam_length")
5971
6901
  >>> length.set(100).millimeters # Sets to 100 mm
5972
6902
  """
5973
- return ts.VolumeSetter(self, value)
6903
+ if unit is not None:
6904
+ # Direct setting with unit
6905
+ setter = field_setter.VolumeSetter(self, value)
6906
+ # Get the unit property and call it to set the value
6907
+ if hasattr(setter, unit):
6908
+ getattr(setter, unit)
6909
+ else:
6910
+ raise ValueError(f"Unknown unit: {unit}")
6911
+ return self
6912
+ else:
6913
+ return field_setter.VolumeSetter(self, value)
5974
6914
 
5975
6915
 
5976
6916
  class VolumeFractionOfI(FieldQnty):
@@ -5991,7 +6931,7 @@ class VolumeFractionOfI(FieldQnty):
5991
6931
  """
5992
6932
 
5993
6933
  __slots__ = ()
5994
- _setter_class = ts.VolumeFractionOfISetter
6934
+ _setter_class = field_setter.VolumeFractionOfISetter
5995
6935
  _dimension = dim.VOLUME_FRACTION_OF_I
5996
6936
 
5997
6937
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6014,7 +6954,7 @@ class VolumeFractionOfI(FieldQnty):
6014
6954
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6015
6955
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6016
6956
 
6017
- def set(self, value: float, unit: str | None = None) -> ts.VolumeFractionOfISetter:
6957
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VolumeFractionOfISetter':
6018
6958
  """
6019
6959
  Create a setter for this volume fraction of "i" quantity.
6020
6960
 
@@ -6029,7 +6969,17 @@ class VolumeFractionOfI(FieldQnty):
6029
6969
  >>> length = Length("beam_length")
6030
6970
  >>> length.set(100).millimeters # Sets to 100 mm
6031
6971
  """
6032
- return ts.VolumeFractionOfISetter(self, value)
6972
+ if unit is not None:
6973
+ # Direct setting with unit
6974
+ setter = field_setter.VolumeFractionOfISetter(self, value)
6975
+ # Get the unit property and call it to set the value
6976
+ if hasattr(setter, unit):
6977
+ getattr(setter, unit)
6978
+ else:
6979
+ raise ValueError(f"Unknown unit: {unit}")
6980
+ return self
6981
+ else:
6982
+ return field_setter.VolumeFractionOfISetter(self, value)
6033
6983
 
6034
6984
 
6035
6985
  class VolumetricCalorificHeatingValue(FieldQnty):
@@ -6050,7 +7000,7 @@ class VolumetricCalorificHeatingValue(FieldQnty):
6050
7000
  """
6051
7001
 
6052
7002
  __slots__ = ()
6053
- _setter_class = ts.VolumetricCalorificHeatingValueSetter
7003
+ _setter_class = field_setter.VolumetricCalorificHeatingValueSetter
6054
7004
  _dimension = dim.VOLUMETRIC_CALORIFIC_HEATING_VALUE
6055
7005
 
6056
7006
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6073,7 +7023,7 @@ class VolumetricCalorificHeatingValue(FieldQnty):
6073
7023
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6074
7024
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6075
7025
 
6076
- def set(self, value: float, unit: str | None = None) -> ts.VolumetricCalorificHeatingValueSetter:
7026
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VolumetricCalorificHeatingValueSetter':
6077
7027
  """
6078
7028
  Create a setter for this volumetric calorific (heating) value quantity.
6079
7029
 
@@ -6088,7 +7038,17 @@ class VolumetricCalorificHeatingValue(FieldQnty):
6088
7038
  >>> length = Length("beam_length")
6089
7039
  >>> length.set(100).millimeters # Sets to 100 mm
6090
7040
  """
6091
- return ts.VolumetricCalorificHeatingValueSetter(self, value)
7041
+ if unit is not None:
7042
+ # Direct setting with unit
7043
+ setter = field_setter.VolumetricCalorificHeatingValueSetter(self, value)
7044
+ # Get the unit property and call it to set the value
7045
+ if hasattr(setter, unit):
7046
+ getattr(setter, unit)
7047
+ else:
7048
+ raise ValueError(f"Unknown unit: {unit}")
7049
+ return self
7050
+ else:
7051
+ return field_setter.VolumetricCalorificHeatingValueSetter(self, value)
6092
7052
 
6093
7053
 
6094
7054
  class VolumetricCoefficientOfExpansion(FieldQnty):
@@ -6109,7 +7069,7 @@ class VolumetricCoefficientOfExpansion(FieldQnty):
6109
7069
  """
6110
7070
 
6111
7071
  __slots__ = ()
6112
- _setter_class = ts.VolumetricCoefficientOfExpansionSetter
7072
+ _setter_class = field_setter.VolumetricCoefficientOfExpansionSetter
6113
7073
  _dimension = dim.VOLUMETRIC_COEFFICIENT_OF_EXPANSION
6114
7074
 
6115
7075
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6132,7 +7092,7 @@ class VolumetricCoefficientOfExpansion(FieldQnty):
6132
7092
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6133
7093
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6134
7094
 
6135
- def set(self, value: float, unit: str | None = None) -> ts.VolumetricCoefficientOfExpansionSetter:
7095
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VolumetricCoefficientOfExpansionSetter':
6136
7096
  """
6137
7097
  Create a setter for this volumetric coefficient of expansion quantity.
6138
7098
 
@@ -6147,7 +7107,17 @@ class VolumetricCoefficientOfExpansion(FieldQnty):
6147
7107
  >>> length = Length("beam_length")
6148
7108
  >>> length.set(100).millimeters # Sets to 100 mm
6149
7109
  """
6150
- return ts.VolumetricCoefficientOfExpansionSetter(self, value)
7110
+ if unit is not None:
7111
+ # Direct setting with unit
7112
+ setter = field_setter.VolumetricCoefficientOfExpansionSetter(self, value)
7113
+ # Get the unit property and call it to set the value
7114
+ if hasattr(setter, unit):
7115
+ getattr(setter, unit)
7116
+ else:
7117
+ raise ValueError(f"Unknown unit: {unit}")
7118
+ return self
7119
+ else:
7120
+ return field_setter.VolumetricCoefficientOfExpansionSetter(self, value)
6151
7121
 
6152
7122
 
6153
7123
  class VolumetricFlowRate(FieldQnty):
@@ -6168,7 +7138,7 @@ class VolumetricFlowRate(FieldQnty):
6168
7138
  """
6169
7139
 
6170
7140
  __slots__ = ()
6171
- _setter_class = ts.VolumetricFlowRateSetter
7141
+ _setter_class = field_setter.VolumetricFlowRateSetter
6172
7142
  _dimension = dim.VOLUMETRIC_FLOW_RATE
6173
7143
 
6174
7144
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6191,7 +7161,7 @@ class VolumetricFlowRate(FieldQnty):
6191
7161
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6192
7162
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6193
7163
 
6194
- def set(self, value: float, unit: str | None = None) -> ts.VolumetricFlowRateSetter:
7164
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VolumetricFlowRateSetter':
6195
7165
  """
6196
7166
  Create a setter for this volumetric flow rate quantity.
6197
7167
 
@@ -6206,7 +7176,17 @@ class VolumetricFlowRate(FieldQnty):
6206
7176
  >>> length = Length("beam_length")
6207
7177
  >>> length.set(100).millimeters # Sets to 100 mm
6208
7178
  """
6209
- return ts.VolumetricFlowRateSetter(self, value)
7179
+ if unit is not None:
7180
+ # Direct setting with unit
7181
+ setter = field_setter.VolumetricFlowRateSetter(self, value)
7182
+ # Get the unit property and call it to set the value
7183
+ if hasattr(setter, unit):
7184
+ getattr(setter, unit)
7185
+ else:
7186
+ raise ValueError(f"Unknown unit: {unit}")
7187
+ return self
7188
+ else:
7189
+ return field_setter.VolumetricFlowRateSetter(self, value)
6210
7190
 
6211
7191
 
6212
7192
  class VolumetricFlux(FieldQnty):
@@ -6227,7 +7207,7 @@ class VolumetricFlux(FieldQnty):
6227
7207
  """
6228
7208
 
6229
7209
  __slots__ = ()
6230
- _setter_class = ts.VolumetricFluxSetter
7210
+ _setter_class = field_setter.VolumetricFluxSetter
6231
7211
  _dimension = dim.VOLUMETRIC_FLUX
6232
7212
 
6233
7213
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6250,7 +7230,7 @@ class VolumetricFlux(FieldQnty):
6250
7230
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6251
7231
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6252
7232
 
6253
- def set(self, value: float, unit: str | None = None) -> ts.VolumetricFluxSetter:
7233
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VolumetricFluxSetter':
6254
7234
  """
6255
7235
  Create a setter for this volumetric flux quantity.
6256
7236
 
@@ -6265,7 +7245,17 @@ class VolumetricFlux(FieldQnty):
6265
7245
  >>> length = Length("beam_length")
6266
7246
  >>> length.set(100).millimeters # Sets to 100 mm
6267
7247
  """
6268
- return ts.VolumetricFluxSetter(self, value)
7248
+ if unit is not None:
7249
+ # Direct setting with unit
7250
+ setter = field_setter.VolumetricFluxSetter(self, value)
7251
+ # Get the unit property and call it to set the value
7252
+ if hasattr(setter, unit):
7253
+ getattr(setter, unit)
7254
+ else:
7255
+ raise ValueError(f"Unknown unit: {unit}")
7256
+ return self
7257
+ else:
7258
+ return field_setter.VolumetricFluxSetter(self, value)
6269
7259
 
6270
7260
 
6271
7261
  class VolumetricMassFlowRate(FieldQnty):
@@ -6286,7 +7276,7 @@ class VolumetricMassFlowRate(FieldQnty):
6286
7276
  """
6287
7277
 
6288
7278
  __slots__ = ()
6289
- _setter_class = ts.VolumetricMassFlowRateSetter
7279
+ _setter_class = field_setter.VolumetricMassFlowRateSetter
6290
7280
  _dimension = dim.VOLUMETRIC_MASS_FLOW_RATE
6291
7281
 
6292
7282
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6309,7 +7299,7 @@ class VolumetricMassFlowRate(FieldQnty):
6309
7299
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6310
7300
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6311
7301
 
6312
- def set(self, value: float, unit: str | None = None) -> ts.VolumetricMassFlowRateSetter:
7302
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.VolumetricMassFlowRateSetter':
6313
7303
  """
6314
7304
  Create a setter for this volumetric mass flow rate quantity.
6315
7305
 
@@ -6324,7 +7314,17 @@ class VolumetricMassFlowRate(FieldQnty):
6324
7314
  >>> length = Length("beam_length")
6325
7315
  >>> length.set(100).millimeters # Sets to 100 mm
6326
7316
  """
6327
- return ts.VolumetricMassFlowRateSetter(self, value)
7317
+ if unit is not None:
7318
+ # Direct setting with unit
7319
+ setter = field_setter.VolumetricMassFlowRateSetter(self, value)
7320
+ # Get the unit property and call it to set the value
7321
+ if hasattr(setter, unit):
7322
+ getattr(setter, unit)
7323
+ else:
7324
+ raise ValueError(f"Unknown unit: {unit}")
7325
+ return self
7326
+ else:
7327
+ return field_setter.VolumetricMassFlowRateSetter(self, value)
6328
7328
 
6329
7329
 
6330
7330
  class Wavenumber(FieldQnty):
@@ -6345,7 +7345,7 @@ class Wavenumber(FieldQnty):
6345
7345
  """
6346
7346
 
6347
7347
  __slots__ = ()
6348
- _setter_class = ts.WavenumberSetter
7348
+ _setter_class = field_setter.WavenumberSetter
6349
7349
  _dimension = dim.WAVENUMBER
6350
7350
 
6351
7351
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6368,7 +7368,7 @@ class Wavenumber(FieldQnty):
6368
7368
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6369
7369
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6370
7370
 
6371
- def set(self, value: float, unit: str | None = None) -> ts.WavenumberSetter:
7371
+ def set(self, value: float, unit: str | None = None) -> 'Self | field_setter.WavenumberSetter':
6372
7372
  """
6373
7373
  Create a setter for this wavenumber quantity.
6374
7374
 
@@ -6383,6 +7383,16 @@ class Wavenumber(FieldQnty):
6383
7383
  >>> length = Length("beam_length")
6384
7384
  >>> length.set(100).millimeters # Sets to 100 mm
6385
7385
  """
6386
- return ts.WavenumberSetter(self, value)
7386
+ if unit is not None:
7387
+ # Direct setting with unit
7388
+ setter = field_setter.WavenumberSetter(self, value)
7389
+ # Get the unit property and call it to set the value
7390
+ if hasattr(setter, unit):
7391
+ getattr(setter, unit)
7392
+ else:
7393
+ raise ValueError(f"Unknown unit: {unit}")
7394
+ return self
7395
+ else:
7396
+ return field_setter.WavenumberSetter(self, value)
6387
7397
 
6388
7398