qnty 0.1.0__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,7 +882,7 @@ 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
 
@@ -774,7 +897,17 @@ class Dimensionless(FieldQnty):
774
897
  >>> length = Length("beam_length")
775
898
  >>> length.set(100).millimeters # Sets to 100 mm
776
899
  """
777
- return ts.DimensionlessSetter(self, value)
900
+ if unit is not None:
901
+ # Direct setting with unit
902
+ setter = field_setter.DimensionlessSetter(self, value)
903
+ # Get the unit property and call it to set the value
904
+ if hasattr(setter, unit):
905
+ getattr(setter, unit)
906
+ else:
907
+ raise ValueError(f"Unknown unit: {unit}")
908
+ return self
909
+ else:
910
+ return field_setter.DimensionlessSetter(self, value)
778
911
 
779
912
 
780
913
  class DynamicFluidity(FieldQnty):
@@ -795,7 +928,7 @@ class DynamicFluidity(FieldQnty):
795
928
  """
796
929
 
797
930
  __slots__ = ()
798
- _setter_class = ts.DynamicFluiditySetter
931
+ _setter_class = field_setter.DynamicFluiditySetter
799
932
  _dimension = dim.DYNAMIC_FLUIDITY
800
933
 
801
934
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -818,7 +951,7 @@ class DynamicFluidity(FieldQnty):
818
951
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
819
952
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
820
953
 
821
- 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':
822
955
  """
823
956
  Create a setter for this dynamic fluidity quantity.
824
957
 
@@ -833,7 +966,17 @@ class DynamicFluidity(FieldQnty):
833
966
  >>> length = Length("beam_length")
834
967
  >>> length.set(100).millimeters # Sets to 100 mm
835
968
  """
836
- 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)
837
980
 
838
981
 
839
982
  class ElectricCapacitance(FieldQnty):
@@ -854,7 +997,7 @@ class ElectricCapacitance(FieldQnty):
854
997
  """
855
998
 
856
999
  __slots__ = ()
857
- _setter_class = ts.ElectricCapacitanceSetter
1000
+ _setter_class = field_setter.ElectricCapacitanceSetter
858
1001
  _dimension = dim.ELECTRIC_CAPACITANCE
859
1002
 
860
1003
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -877,7 +1020,7 @@ class ElectricCapacitance(FieldQnty):
877
1020
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
878
1021
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
879
1022
 
880
- 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':
881
1024
  """
882
1025
  Create a setter for this electric capacitance quantity.
883
1026
 
@@ -892,7 +1035,17 @@ class ElectricCapacitance(FieldQnty):
892
1035
  >>> length = Length("beam_length")
893
1036
  >>> length.set(100).millimeters # Sets to 100 mm
894
1037
  """
895
- 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)
896
1049
 
897
1050
 
898
1051
  class ElectricCharge(FieldQnty):
@@ -913,7 +1066,7 @@ class ElectricCharge(FieldQnty):
913
1066
  """
914
1067
 
915
1068
  __slots__ = ()
916
- _setter_class = ts.ElectricChargeSetter
1069
+ _setter_class = field_setter.ElectricChargeSetter
917
1070
  _dimension = dim.ELECTRIC_CHARGE
918
1071
 
919
1072
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -936,7 +1089,7 @@ class ElectricCharge(FieldQnty):
936
1089
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
937
1090
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
938
1091
 
939
- 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':
940
1093
  """
941
1094
  Create a setter for this electric charge quantity.
942
1095
 
@@ -951,7 +1104,17 @@ class ElectricCharge(FieldQnty):
951
1104
  >>> length = Length("beam_length")
952
1105
  >>> length.set(100).millimeters # Sets to 100 mm
953
1106
  """
954
- 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)
955
1118
 
956
1119
 
957
1120
  class ElectricCurrentIntensity(FieldQnty):
@@ -972,7 +1135,7 @@ class ElectricCurrentIntensity(FieldQnty):
972
1135
  """
973
1136
 
974
1137
  __slots__ = ()
975
- _setter_class = ts.ElectricCurrentIntensitySetter
1138
+ _setter_class = field_setter.ElectricCurrentIntensitySetter
976
1139
  _dimension = dim.ELECTRIC_CURRENT_INTENSITY
977
1140
 
978
1141
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -995,7 +1158,7 @@ class ElectricCurrentIntensity(FieldQnty):
995
1158
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
996
1159
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
997
1160
 
998
- 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':
999
1162
  """
1000
1163
  Create a setter for this electric current intensity quantity.
1001
1164
 
@@ -1010,7 +1173,17 @@ class ElectricCurrentIntensity(FieldQnty):
1010
1173
  >>> length = Length("beam_length")
1011
1174
  >>> length.set(100).millimeters # Sets to 100 mm
1012
1175
  """
1013
- 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)
1014
1187
 
1015
1188
 
1016
1189
  class ElectricDipoleMoment(FieldQnty):
@@ -1031,7 +1204,7 @@ class ElectricDipoleMoment(FieldQnty):
1031
1204
  """
1032
1205
 
1033
1206
  __slots__ = ()
1034
- _setter_class = ts.ElectricDipoleMomentSetter
1207
+ _setter_class = field_setter.ElectricDipoleMomentSetter
1035
1208
  _dimension = dim.ELECTRIC_DIPOLE_MOMENT
1036
1209
 
1037
1210
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1054,7 +1227,7 @@ class ElectricDipoleMoment(FieldQnty):
1054
1227
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1055
1228
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1056
1229
 
1057
- 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':
1058
1231
  """
1059
1232
  Create a setter for this electric dipole moment quantity.
1060
1233
 
@@ -1069,7 +1242,17 @@ class ElectricDipoleMoment(FieldQnty):
1069
1242
  >>> length = Length("beam_length")
1070
1243
  >>> length.set(100).millimeters # Sets to 100 mm
1071
1244
  """
1072
- 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)
1073
1256
 
1074
1257
 
1075
1258
  class ElectricFieldStrength(FieldQnty):
@@ -1090,7 +1273,7 @@ class ElectricFieldStrength(FieldQnty):
1090
1273
  """
1091
1274
 
1092
1275
  __slots__ = ()
1093
- _setter_class = ts.ElectricFieldStrengthSetter
1276
+ _setter_class = field_setter.ElectricFieldStrengthSetter
1094
1277
  _dimension = dim.ELECTRIC_FIELD_STRENGTH
1095
1278
 
1096
1279
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1113,7 +1296,7 @@ class ElectricFieldStrength(FieldQnty):
1113
1296
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1114
1297
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1115
1298
 
1116
- 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':
1117
1300
  """
1118
1301
  Create a setter for this electric field strength quantity.
1119
1302
 
@@ -1128,7 +1311,17 @@ class ElectricFieldStrength(FieldQnty):
1128
1311
  >>> length = Length("beam_length")
1129
1312
  >>> length.set(100).millimeters # Sets to 100 mm
1130
1313
  """
1131
- 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)
1132
1325
 
1133
1326
 
1134
1327
  class ElectricInductance(FieldQnty):
@@ -1149,7 +1342,7 @@ class ElectricInductance(FieldQnty):
1149
1342
  """
1150
1343
 
1151
1344
  __slots__ = ()
1152
- _setter_class = ts.ElectricInductanceSetter
1345
+ _setter_class = field_setter.ElectricInductanceSetter
1153
1346
  _dimension = dim.ELECTRIC_INDUCTANCE
1154
1347
 
1155
1348
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1172,7 +1365,7 @@ class ElectricInductance(FieldQnty):
1172
1365
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1173
1366
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1174
1367
 
1175
- 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':
1176
1369
  """
1177
1370
  Create a setter for this electric inductance quantity.
1178
1371
 
@@ -1187,7 +1380,17 @@ class ElectricInductance(FieldQnty):
1187
1380
  >>> length = Length("beam_length")
1188
1381
  >>> length.set(100).millimeters # Sets to 100 mm
1189
1382
  """
1190
- 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)
1191
1394
 
1192
1395
 
1193
1396
  class ElectricPotential(FieldQnty):
@@ -1208,7 +1411,7 @@ class ElectricPotential(FieldQnty):
1208
1411
  """
1209
1412
 
1210
1413
  __slots__ = ()
1211
- _setter_class = ts.ElectricPotentialSetter
1414
+ _setter_class = field_setter.ElectricPotentialSetter
1212
1415
  _dimension = dim.ELECTRIC_POTENTIAL
1213
1416
 
1214
1417
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1231,7 +1434,7 @@ class ElectricPotential(FieldQnty):
1231
1434
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1232
1435
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1233
1436
 
1234
- 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':
1235
1438
  """
1236
1439
  Create a setter for this electric potential quantity.
1237
1440
 
@@ -1246,7 +1449,17 @@ class ElectricPotential(FieldQnty):
1246
1449
  >>> length = Length("beam_length")
1247
1450
  >>> length.set(100).millimeters # Sets to 100 mm
1248
1451
  """
1249
- 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)
1250
1463
 
1251
1464
 
1252
1465
  class ElectricResistance(FieldQnty):
@@ -1267,7 +1480,7 @@ class ElectricResistance(FieldQnty):
1267
1480
  """
1268
1481
 
1269
1482
  __slots__ = ()
1270
- _setter_class = ts.ElectricResistanceSetter
1483
+ _setter_class = field_setter.ElectricResistanceSetter
1271
1484
  _dimension = dim.ELECTRIC_RESISTANCE
1272
1485
 
1273
1486
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1290,7 +1503,7 @@ class ElectricResistance(FieldQnty):
1290
1503
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1291
1504
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1292
1505
 
1293
- 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':
1294
1507
  """
1295
1508
  Create a setter for this electric resistance quantity.
1296
1509
 
@@ -1305,7 +1518,17 @@ class ElectricResistance(FieldQnty):
1305
1518
  >>> length = Length("beam_length")
1306
1519
  >>> length.set(100).millimeters # Sets to 100 mm
1307
1520
  """
1308
- 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)
1309
1532
 
1310
1533
 
1311
1534
  class ElectricalConductance(FieldQnty):
@@ -1326,7 +1549,7 @@ class ElectricalConductance(FieldQnty):
1326
1549
  """
1327
1550
 
1328
1551
  __slots__ = ()
1329
- _setter_class = ts.ElectricalConductanceSetter
1552
+ _setter_class = field_setter.ElectricalConductanceSetter
1330
1553
  _dimension = dim.ELECTRICAL_CONDUCTANCE
1331
1554
 
1332
1555
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1349,7 +1572,7 @@ class ElectricalConductance(FieldQnty):
1349
1572
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1350
1573
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1351
1574
 
1352
- 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':
1353
1576
  """
1354
1577
  Create a setter for this electrical conductance quantity.
1355
1578
 
@@ -1364,7 +1587,17 @@ class ElectricalConductance(FieldQnty):
1364
1587
  >>> length = Length("beam_length")
1365
1588
  >>> length.set(100).millimeters # Sets to 100 mm
1366
1589
  """
1367
- 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)
1368
1601
 
1369
1602
 
1370
1603
  class ElectricalPermittivity(FieldQnty):
@@ -1385,7 +1618,7 @@ class ElectricalPermittivity(FieldQnty):
1385
1618
  """
1386
1619
 
1387
1620
  __slots__ = ()
1388
- _setter_class = ts.ElectricalPermittivitySetter
1621
+ _setter_class = field_setter.ElectricalPermittivitySetter
1389
1622
  _dimension = dim.ELECTRICAL_PERMITTIVITY
1390
1623
 
1391
1624
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1408,7 +1641,7 @@ class ElectricalPermittivity(FieldQnty):
1408
1641
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1409
1642
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1410
1643
 
1411
- 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':
1412
1645
  """
1413
1646
  Create a setter for this electrical permittivity quantity.
1414
1647
 
@@ -1423,7 +1656,17 @@ class ElectricalPermittivity(FieldQnty):
1423
1656
  >>> length = Length("beam_length")
1424
1657
  >>> length.set(100).millimeters # Sets to 100 mm
1425
1658
  """
1426
- 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)
1427
1670
 
1428
1671
 
1429
1672
  class ElectricalResistivity(FieldQnty):
@@ -1444,7 +1687,7 @@ class ElectricalResistivity(FieldQnty):
1444
1687
  """
1445
1688
 
1446
1689
  __slots__ = ()
1447
- _setter_class = ts.ElectricalResistivitySetter
1690
+ _setter_class = field_setter.ElectricalResistivitySetter
1448
1691
  _dimension = dim.ELECTRICAL_RESISTIVITY
1449
1692
 
1450
1693
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1467,7 +1710,7 @@ class ElectricalResistivity(FieldQnty):
1467
1710
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1468
1711
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1469
1712
 
1470
- 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':
1471
1714
  """
1472
1715
  Create a setter for this electrical resistivity quantity.
1473
1716
 
@@ -1482,7 +1725,17 @@ class ElectricalResistivity(FieldQnty):
1482
1725
  >>> length = Length("beam_length")
1483
1726
  >>> length.set(100).millimeters # Sets to 100 mm
1484
1727
  """
1485
- 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)
1486
1739
 
1487
1740
 
1488
1741
  class EnergyFlux(FieldQnty):
@@ -1503,7 +1756,7 @@ class EnergyFlux(FieldQnty):
1503
1756
  """
1504
1757
 
1505
1758
  __slots__ = ()
1506
- _setter_class = ts.EnergyFluxSetter
1759
+ _setter_class = field_setter.EnergyFluxSetter
1507
1760
  _dimension = dim.ENERGY_FLUX
1508
1761
 
1509
1762
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1526,7 +1779,7 @@ class EnergyFlux(FieldQnty):
1526
1779
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1527
1780
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1528
1781
 
1529
- 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':
1530
1783
  """
1531
1784
  Create a setter for this energy flux quantity.
1532
1785
 
@@ -1541,7 +1794,17 @@ class EnergyFlux(FieldQnty):
1541
1794
  >>> length = Length("beam_length")
1542
1795
  >>> length.set(100).millimeters # Sets to 100 mm
1543
1796
  """
1544
- 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)
1545
1808
 
1546
1809
 
1547
1810
  class EnergyHeatWork(FieldQnty):
@@ -1562,7 +1825,7 @@ class EnergyHeatWork(FieldQnty):
1562
1825
  """
1563
1826
 
1564
1827
  __slots__ = ()
1565
- _setter_class = ts.EnergyHeatWorkSetter
1828
+ _setter_class = field_setter.EnergyHeatWorkSetter
1566
1829
  _dimension = dim.ENERGY_HEAT_WORK
1567
1830
 
1568
1831
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1585,7 +1848,7 @@ class EnergyHeatWork(FieldQnty):
1585
1848
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1586
1849
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1587
1850
 
1588
- 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':
1589
1852
  """
1590
1853
  Create a setter for this energy, heat, work quantity.
1591
1854
 
@@ -1600,7 +1863,17 @@ class EnergyHeatWork(FieldQnty):
1600
1863
  >>> length = Length("beam_length")
1601
1864
  >>> length.set(100).millimeters # Sets to 100 mm
1602
1865
  """
1603
- 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)
1604
1877
 
1605
1878
 
1606
1879
  class EnergyPerUnitArea(FieldQnty):
@@ -1621,7 +1894,7 @@ class EnergyPerUnitArea(FieldQnty):
1621
1894
  """
1622
1895
 
1623
1896
  __slots__ = ()
1624
- _setter_class = ts.EnergyPerUnitAreaSetter
1897
+ _setter_class = field_setter.EnergyPerUnitAreaSetter
1625
1898
  _dimension = dim.ENERGY_PER_UNIT_AREA
1626
1899
 
1627
1900
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1644,7 +1917,7 @@ class EnergyPerUnitArea(FieldQnty):
1644
1917
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1645
1918
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1646
1919
 
1647
- 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':
1648
1921
  """
1649
1922
  Create a setter for this energy per unit area quantity.
1650
1923
 
@@ -1659,7 +1932,17 @@ class EnergyPerUnitArea(FieldQnty):
1659
1932
  >>> length = Length("beam_length")
1660
1933
  >>> length.set(100).millimeters # Sets to 100 mm
1661
1934
  """
1662
- 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)
1663
1946
 
1664
1947
 
1665
1948
  class Force(FieldQnty):
@@ -1680,7 +1963,7 @@ class Force(FieldQnty):
1680
1963
  """
1681
1964
 
1682
1965
  __slots__ = ()
1683
- _setter_class = ts.ForceSetter
1966
+ _setter_class = field_setter.ForceSetter
1684
1967
  _dimension = dim.FORCE
1685
1968
 
1686
1969
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1703,7 +1986,7 @@ class Force(FieldQnty):
1703
1986
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1704
1987
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1705
1988
 
1706
- 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':
1707
1990
  """
1708
1991
  Create a setter for this force quantity.
1709
1992
 
@@ -1718,7 +2001,17 @@ class Force(FieldQnty):
1718
2001
  >>> length = Length("beam_length")
1719
2002
  >>> length.set(100).millimeters # Sets to 100 mm
1720
2003
  """
1721
- 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)
1722
2015
 
1723
2016
 
1724
2017
  class ForceBody(FieldQnty):
@@ -1739,7 +2032,7 @@ class ForceBody(FieldQnty):
1739
2032
  """
1740
2033
 
1741
2034
  __slots__ = ()
1742
- _setter_class = ts.ForceBodySetter
2035
+ _setter_class = field_setter.ForceBodySetter
1743
2036
  _dimension = dim.FORCE_BODY
1744
2037
 
1745
2038
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1762,7 +2055,7 @@ class ForceBody(FieldQnty):
1762
2055
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1763
2056
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1764
2057
 
1765
- 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':
1766
2059
  """
1767
2060
  Create a setter for this force (body) quantity.
1768
2061
 
@@ -1777,7 +2070,17 @@ class ForceBody(FieldQnty):
1777
2070
  >>> length = Length("beam_length")
1778
2071
  >>> length.set(100).millimeters # Sets to 100 mm
1779
2072
  """
1780
- 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)
1781
2084
 
1782
2085
 
1783
2086
  class ForcePerUnitMass(FieldQnty):
@@ -1798,7 +2101,7 @@ class ForcePerUnitMass(FieldQnty):
1798
2101
  """
1799
2102
 
1800
2103
  __slots__ = ()
1801
- _setter_class = ts.ForcePerUnitMassSetter
2104
+ _setter_class = field_setter.ForcePerUnitMassSetter
1802
2105
  _dimension = dim.FORCE_PER_UNIT_MASS
1803
2106
 
1804
2107
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1821,7 +2124,7 @@ class ForcePerUnitMass(FieldQnty):
1821
2124
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1822
2125
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1823
2126
 
1824
- 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':
1825
2128
  """
1826
2129
  Create a setter for this force per unit mass quantity.
1827
2130
 
@@ -1836,7 +2139,17 @@ class ForcePerUnitMass(FieldQnty):
1836
2139
  >>> length = Length("beam_length")
1837
2140
  >>> length.set(100).millimeters # Sets to 100 mm
1838
2141
  """
1839
- 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)
1840
2153
 
1841
2154
 
1842
2155
  class FrequencyVoltageRatio(FieldQnty):
@@ -1857,7 +2170,7 @@ class FrequencyVoltageRatio(FieldQnty):
1857
2170
  """
1858
2171
 
1859
2172
  __slots__ = ()
1860
- _setter_class = ts.FrequencyVoltageRatioSetter
2173
+ _setter_class = field_setter.FrequencyVoltageRatioSetter
1861
2174
  _dimension = dim.FREQUENCY_VOLTAGE_RATIO
1862
2175
 
1863
2176
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1880,7 +2193,7 @@ class FrequencyVoltageRatio(FieldQnty):
1880
2193
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1881
2194
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1882
2195
 
1883
- 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':
1884
2197
  """
1885
2198
  Create a setter for this frequency voltage ratio quantity.
1886
2199
 
@@ -1895,7 +2208,17 @@ class FrequencyVoltageRatio(FieldQnty):
1895
2208
  >>> length = Length("beam_length")
1896
2209
  >>> length.set(100).millimeters # Sets to 100 mm
1897
2210
  """
1898
- 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)
1899
2222
 
1900
2223
 
1901
2224
  class FuelConsumption(FieldQnty):
@@ -1916,7 +2239,7 @@ class FuelConsumption(FieldQnty):
1916
2239
  """
1917
2240
 
1918
2241
  __slots__ = ()
1919
- _setter_class = ts.FuelConsumptionSetter
2242
+ _setter_class = field_setter.FuelConsumptionSetter
1920
2243
  _dimension = dim.FUEL_CONSUMPTION
1921
2244
 
1922
2245
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1939,7 +2262,7 @@ class FuelConsumption(FieldQnty):
1939
2262
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1940
2263
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
1941
2264
 
1942
- 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':
1943
2266
  """
1944
2267
  Create a setter for this fuel consumption quantity.
1945
2268
 
@@ -1954,7 +2277,17 @@ class FuelConsumption(FieldQnty):
1954
2277
  >>> length = Length("beam_length")
1955
2278
  >>> length.set(100).millimeters # Sets to 100 mm
1956
2279
  """
1957
- 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)
1958
2291
 
1959
2292
 
1960
2293
  class HeatOfCombustion(FieldQnty):
@@ -1975,7 +2308,7 @@ class HeatOfCombustion(FieldQnty):
1975
2308
  """
1976
2309
 
1977
2310
  __slots__ = ()
1978
- _setter_class = ts.HeatOfCombustionSetter
2311
+ _setter_class = field_setter.HeatOfCombustionSetter
1979
2312
  _dimension = dim.HEAT_OF_COMBUSTION
1980
2313
 
1981
2314
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -1998,7 +2331,7 @@ class HeatOfCombustion(FieldQnty):
1998
2331
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
1999
2332
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2000
2333
 
2001
- 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':
2002
2335
  """
2003
2336
  Create a setter for this heat of combustion quantity.
2004
2337
 
@@ -2013,7 +2346,17 @@ class HeatOfCombustion(FieldQnty):
2013
2346
  >>> length = Length("beam_length")
2014
2347
  >>> length.set(100).millimeters # Sets to 100 mm
2015
2348
  """
2016
- 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)
2017
2360
 
2018
2361
 
2019
2362
  class HeatOfFusion(FieldQnty):
@@ -2034,7 +2377,7 @@ class HeatOfFusion(FieldQnty):
2034
2377
  """
2035
2378
 
2036
2379
  __slots__ = ()
2037
- _setter_class = ts.HeatOfFusionSetter
2380
+ _setter_class = field_setter.HeatOfFusionSetter
2038
2381
  _dimension = dim.HEAT_OF_FUSION
2039
2382
 
2040
2383
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2057,7 +2400,7 @@ class HeatOfFusion(FieldQnty):
2057
2400
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2058
2401
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2059
2402
 
2060
- 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':
2061
2404
  """
2062
2405
  Create a setter for this heat of fusion quantity.
2063
2406
 
@@ -2072,7 +2415,17 @@ class HeatOfFusion(FieldQnty):
2072
2415
  >>> length = Length("beam_length")
2073
2416
  >>> length.set(100).millimeters # Sets to 100 mm
2074
2417
  """
2075
- 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)
2076
2429
 
2077
2430
 
2078
2431
  class HeatOfVaporization(FieldQnty):
@@ -2093,7 +2446,7 @@ class HeatOfVaporization(FieldQnty):
2093
2446
  """
2094
2447
 
2095
2448
  __slots__ = ()
2096
- _setter_class = ts.HeatOfVaporizationSetter
2449
+ _setter_class = field_setter.HeatOfVaporizationSetter
2097
2450
  _dimension = dim.HEAT_OF_VAPORIZATION
2098
2451
 
2099
2452
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2116,7 +2469,7 @@ class HeatOfVaporization(FieldQnty):
2116
2469
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2117
2470
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2118
2471
 
2119
- 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':
2120
2473
  """
2121
2474
  Create a setter for this heat of vaporization quantity.
2122
2475
 
@@ -2131,7 +2484,17 @@ class HeatOfVaporization(FieldQnty):
2131
2484
  >>> length = Length("beam_length")
2132
2485
  >>> length.set(100).millimeters # Sets to 100 mm
2133
2486
  """
2134
- 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)
2135
2498
 
2136
2499
 
2137
2500
  class HeatTransferCoefficient(FieldQnty):
@@ -2152,7 +2515,7 @@ class HeatTransferCoefficient(FieldQnty):
2152
2515
  """
2153
2516
 
2154
2517
  __slots__ = ()
2155
- _setter_class = ts.HeatTransferCoefficientSetter
2518
+ _setter_class = field_setter.HeatTransferCoefficientSetter
2156
2519
  _dimension = dim.HEAT_TRANSFER_COEFFICIENT
2157
2520
 
2158
2521
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2175,7 +2538,7 @@ class HeatTransferCoefficient(FieldQnty):
2175
2538
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2176
2539
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2177
2540
 
2178
- 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':
2179
2542
  """
2180
2543
  Create a setter for this heat transfer coefficient quantity.
2181
2544
 
@@ -2190,7 +2553,17 @@ class HeatTransferCoefficient(FieldQnty):
2190
2553
  >>> length = Length("beam_length")
2191
2554
  >>> length.set(100).millimeters # Sets to 100 mm
2192
2555
  """
2193
- 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)
2194
2567
 
2195
2568
 
2196
2569
  class Illuminance(FieldQnty):
@@ -2211,7 +2584,7 @@ class Illuminance(FieldQnty):
2211
2584
  """
2212
2585
 
2213
2586
  __slots__ = ()
2214
- _setter_class = ts.IlluminanceSetter
2587
+ _setter_class = field_setter.IlluminanceSetter
2215
2588
  _dimension = dim.ILLUMINANCE
2216
2589
 
2217
2590
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2234,7 +2607,7 @@ class Illuminance(FieldQnty):
2234
2607
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2235
2608
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2236
2609
 
2237
- 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':
2238
2611
  """
2239
2612
  Create a setter for this illuminance quantity.
2240
2613
 
@@ -2249,7 +2622,17 @@ class Illuminance(FieldQnty):
2249
2622
  >>> length = Length("beam_length")
2250
2623
  >>> length.set(100).millimeters # Sets to 100 mm
2251
2624
  """
2252
- 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)
2253
2636
 
2254
2637
 
2255
2638
  class KineticEnergyOfTurbulence(FieldQnty):
@@ -2270,7 +2653,7 @@ class KineticEnergyOfTurbulence(FieldQnty):
2270
2653
  """
2271
2654
 
2272
2655
  __slots__ = ()
2273
- _setter_class = ts.KineticEnergyOfTurbulenceSetter
2656
+ _setter_class = field_setter.KineticEnergyOfTurbulenceSetter
2274
2657
  _dimension = dim.KINETIC_ENERGY_OF_TURBULENCE
2275
2658
 
2276
2659
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2293,7 +2676,7 @@ class KineticEnergyOfTurbulence(FieldQnty):
2293
2676
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2294
2677
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2295
2678
 
2296
- 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':
2297
2680
  """
2298
2681
  Create a setter for this kinetic energy of turbulence quantity.
2299
2682
 
@@ -2308,7 +2691,17 @@ class KineticEnergyOfTurbulence(FieldQnty):
2308
2691
  >>> length = Length("beam_length")
2309
2692
  >>> length.set(100).millimeters # Sets to 100 mm
2310
2693
  """
2311
- 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)
2312
2705
 
2313
2706
 
2314
2707
  class Length(FieldQnty):
@@ -2329,7 +2722,7 @@ class Length(FieldQnty):
2329
2722
  """
2330
2723
 
2331
2724
  __slots__ = ()
2332
- _setter_class = ts.LengthSetter
2725
+ _setter_class = field_setter.LengthSetter
2333
2726
  _dimension = dim.LENGTH
2334
2727
 
2335
2728
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2352,7 +2745,7 @@ class Length(FieldQnty):
2352
2745
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2353
2746
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2354
2747
 
2355
- 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':
2356
2749
  """
2357
2750
  Create a setter for this length quantity.
2358
2751
 
@@ -2367,7 +2760,17 @@ class Length(FieldQnty):
2367
2760
  >>> length = Length("beam_length")
2368
2761
  >>> length.set(100).millimeters # Sets to 100 mm
2369
2762
  """
2370
- return ts.LengthSetter(self, value)
2763
+ if unit is not None:
2764
+ # Direct setting with unit
2765
+ setter = field_setter.LengthSetter(self, value)
2766
+ # Get the unit property and call it to set the value
2767
+ if hasattr(setter, unit):
2768
+ getattr(setter, unit)
2769
+ else:
2770
+ raise ValueError(f"Unknown unit: {unit}")
2771
+ return self
2772
+ else:
2773
+ return field_setter.LengthSetter(self, value)
2371
2774
 
2372
2775
 
2373
2776
  class LinearMassDensity(FieldQnty):
@@ -2388,7 +2791,7 @@ class LinearMassDensity(FieldQnty):
2388
2791
  """
2389
2792
 
2390
2793
  __slots__ = ()
2391
- _setter_class = ts.LinearMassDensitySetter
2794
+ _setter_class = field_setter.LinearMassDensitySetter
2392
2795
  _dimension = dim.LINEAR_MASS_DENSITY
2393
2796
 
2394
2797
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2411,7 +2814,7 @@ class LinearMassDensity(FieldQnty):
2411
2814
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2412
2815
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2413
2816
 
2414
- 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':
2415
2818
  """
2416
2819
  Create a setter for this linear mass density quantity.
2417
2820
 
@@ -2426,7 +2829,17 @@ class LinearMassDensity(FieldQnty):
2426
2829
  >>> length = Length("beam_length")
2427
2830
  >>> length.set(100).millimeters # Sets to 100 mm
2428
2831
  """
2429
- 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)
2430
2843
 
2431
2844
 
2432
2845
  class LinearMomentum(FieldQnty):
@@ -2447,7 +2860,7 @@ class LinearMomentum(FieldQnty):
2447
2860
  """
2448
2861
 
2449
2862
  __slots__ = ()
2450
- _setter_class = ts.LinearMomentumSetter
2863
+ _setter_class = field_setter.LinearMomentumSetter
2451
2864
  _dimension = dim.LINEAR_MOMENTUM
2452
2865
 
2453
2866
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2470,7 +2883,7 @@ class LinearMomentum(FieldQnty):
2470
2883
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2471
2884
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2472
2885
 
2473
- 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':
2474
2887
  """
2475
2888
  Create a setter for this linear momentum quantity.
2476
2889
 
@@ -2485,7 +2898,17 @@ class LinearMomentum(FieldQnty):
2485
2898
  >>> length = Length("beam_length")
2486
2899
  >>> length.set(100).millimeters # Sets to 100 mm
2487
2900
  """
2488
- 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)
2489
2912
 
2490
2913
 
2491
2914
  class LuminanceSelf(FieldQnty):
@@ -2506,7 +2929,7 @@ class LuminanceSelf(FieldQnty):
2506
2929
  """
2507
2930
 
2508
2931
  __slots__ = ()
2509
- _setter_class = ts.LuminanceSelfSetter
2932
+ _setter_class = field_setter.LuminanceSelfSetter
2510
2933
  _dimension = dim.LUMINANCE_SELF
2511
2934
 
2512
2935
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2529,7 +2952,7 @@ class LuminanceSelf(FieldQnty):
2529
2952
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2530
2953
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2531
2954
 
2532
- 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':
2533
2956
  """
2534
2957
  Create a setter for this luminance (self) quantity.
2535
2958
 
@@ -2544,7 +2967,17 @@ class LuminanceSelf(FieldQnty):
2544
2967
  >>> length = Length("beam_length")
2545
2968
  >>> length.set(100).millimeters # Sets to 100 mm
2546
2969
  """
2547
- 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)
2548
2981
 
2549
2982
 
2550
2983
  class LuminousFlux(FieldQnty):
@@ -2565,7 +2998,7 @@ class LuminousFlux(FieldQnty):
2565
2998
  """
2566
2999
 
2567
3000
  __slots__ = ()
2568
- _setter_class = ts.LuminousFluxSetter
3001
+ _setter_class = field_setter.LuminousFluxSetter
2569
3002
  _dimension = dim.LUMINOUS_FLUX
2570
3003
 
2571
3004
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2588,7 +3021,7 @@ class LuminousFlux(FieldQnty):
2588
3021
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2589
3022
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2590
3023
 
2591
- 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':
2592
3025
  """
2593
3026
  Create a setter for this luminous flux quantity.
2594
3027
 
@@ -2603,7 +3036,17 @@ class LuminousFlux(FieldQnty):
2603
3036
  >>> length = Length("beam_length")
2604
3037
  >>> length.set(100).millimeters # Sets to 100 mm
2605
3038
  """
2606
- 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)
2607
3050
 
2608
3051
 
2609
3052
  class LuminousIntensity(FieldQnty):
@@ -2624,7 +3067,7 @@ class LuminousIntensity(FieldQnty):
2624
3067
  """
2625
3068
 
2626
3069
  __slots__ = ()
2627
- _setter_class = ts.LuminousIntensitySetter
3070
+ _setter_class = field_setter.LuminousIntensitySetter
2628
3071
  _dimension = dim.LUMINOUS_INTENSITY
2629
3072
 
2630
3073
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2647,7 +3090,7 @@ class LuminousIntensity(FieldQnty):
2647
3090
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2648
3091
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2649
3092
 
2650
- 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':
2651
3094
  """
2652
3095
  Create a setter for this luminous intensity quantity.
2653
3096
 
@@ -2662,7 +3105,17 @@ class LuminousIntensity(FieldQnty):
2662
3105
  >>> length = Length("beam_length")
2663
3106
  >>> length.set(100).millimeters # Sets to 100 mm
2664
3107
  """
2665
- 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)
2666
3119
 
2667
3120
 
2668
3121
  class MagneticField(FieldQnty):
@@ -2683,7 +3136,7 @@ class MagneticField(FieldQnty):
2683
3136
  """
2684
3137
 
2685
3138
  __slots__ = ()
2686
- _setter_class = ts.MagneticFieldSetter
3139
+ _setter_class = field_setter.MagneticFieldSetter
2687
3140
  _dimension = dim.MAGNETIC_FIELD
2688
3141
 
2689
3142
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2706,7 +3159,7 @@ class MagneticField(FieldQnty):
2706
3159
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2707
3160
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2708
3161
 
2709
- 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':
2710
3163
  """
2711
3164
  Create a setter for this magnetic field quantity.
2712
3165
 
@@ -2721,7 +3174,17 @@ class MagneticField(FieldQnty):
2721
3174
  >>> length = Length("beam_length")
2722
3175
  >>> length.set(100).millimeters # Sets to 100 mm
2723
3176
  """
2724
- 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)
2725
3188
 
2726
3189
 
2727
3190
  class MagneticFlux(FieldQnty):
@@ -2742,7 +3205,7 @@ class MagneticFlux(FieldQnty):
2742
3205
  """
2743
3206
 
2744
3207
  __slots__ = ()
2745
- _setter_class = ts.MagneticFluxSetter
3208
+ _setter_class = field_setter.MagneticFluxSetter
2746
3209
  _dimension = dim.MAGNETIC_FLUX
2747
3210
 
2748
3211
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2765,7 +3228,7 @@ class MagneticFlux(FieldQnty):
2765
3228
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2766
3229
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2767
3230
 
2768
- 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':
2769
3232
  """
2770
3233
  Create a setter for this magnetic flux quantity.
2771
3234
 
@@ -2780,7 +3243,17 @@ class MagneticFlux(FieldQnty):
2780
3243
  >>> length = Length("beam_length")
2781
3244
  >>> length.set(100).millimeters # Sets to 100 mm
2782
3245
  """
2783
- 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)
2784
3257
 
2785
3258
 
2786
3259
  class MagneticInductionFieldStrength(FieldQnty):
@@ -2801,7 +3274,7 @@ class MagneticInductionFieldStrength(FieldQnty):
2801
3274
  """
2802
3275
 
2803
3276
  __slots__ = ()
2804
- _setter_class = ts.MagneticInductionFieldStrengthSetter
3277
+ _setter_class = field_setter.MagneticInductionFieldStrengthSetter
2805
3278
  _dimension = dim.MAGNETIC_INDUCTION_FIELD_STRENGTH
2806
3279
 
2807
3280
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2824,7 +3297,7 @@ class MagneticInductionFieldStrength(FieldQnty):
2824
3297
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2825
3298
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2826
3299
 
2827
- 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':
2828
3301
  """
2829
3302
  Create a setter for this magnetic induction field strength quantity.
2830
3303
 
@@ -2839,7 +3312,17 @@ class MagneticInductionFieldStrength(FieldQnty):
2839
3312
  >>> length = Length("beam_length")
2840
3313
  >>> length.set(100).millimeters # Sets to 100 mm
2841
3314
  """
2842
- 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)
2843
3326
 
2844
3327
 
2845
3328
  class MagneticMoment(FieldQnty):
@@ -2860,7 +3343,7 @@ class MagneticMoment(FieldQnty):
2860
3343
  """
2861
3344
 
2862
3345
  __slots__ = ()
2863
- _setter_class = ts.MagneticMomentSetter
3346
+ _setter_class = field_setter.MagneticMomentSetter
2864
3347
  _dimension = dim.MAGNETIC_MOMENT
2865
3348
 
2866
3349
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2883,7 +3366,7 @@ class MagneticMoment(FieldQnty):
2883
3366
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2884
3367
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2885
3368
 
2886
- 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':
2887
3370
  """
2888
3371
  Create a setter for this magnetic moment quantity.
2889
3372
 
@@ -2898,7 +3381,17 @@ class MagneticMoment(FieldQnty):
2898
3381
  >>> length = Length("beam_length")
2899
3382
  >>> length.set(100).millimeters # Sets to 100 mm
2900
3383
  """
2901
- 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)
2902
3395
 
2903
3396
 
2904
3397
  class MagneticPermeability(FieldQnty):
@@ -2919,7 +3412,7 @@ class MagneticPermeability(FieldQnty):
2919
3412
  """
2920
3413
 
2921
3414
  __slots__ = ()
2922
- _setter_class = ts.MagneticPermeabilitySetter
3415
+ _setter_class = field_setter.MagneticPermeabilitySetter
2923
3416
  _dimension = dim.MAGNETIC_PERMEABILITY
2924
3417
 
2925
3418
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -2942,7 +3435,7 @@ class MagneticPermeability(FieldQnty):
2942
3435
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
2943
3436
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
2944
3437
 
2945
- 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':
2946
3439
  """
2947
3440
  Create a setter for this magnetic permeability quantity.
2948
3441
 
@@ -2957,7 +3450,17 @@ class MagneticPermeability(FieldQnty):
2957
3450
  >>> length = Length("beam_length")
2958
3451
  >>> length.set(100).millimeters # Sets to 100 mm
2959
3452
  """
2960
- 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)
2961
3464
 
2962
3465
 
2963
3466
  class MagnetomotiveForce(FieldQnty):
@@ -2978,7 +3481,7 @@ class MagnetomotiveForce(FieldQnty):
2978
3481
  """
2979
3482
 
2980
3483
  __slots__ = ()
2981
- _setter_class = ts.MagnetomotiveForceSetter
3484
+ _setter_class = field_setter.MagnetomotiveForceSetter
2982
3485
  _dimension = dim.MAGNETOMOTIVE_FORCE
2983
3486
 
2984
3487
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3001,7 +3504,7 @@ class MagnetomotiveForce(FieldQnty):
3001
3504
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3002
3505
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3003
3506
 
3004
- 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':
3005
3508
  """
3006
3509
  Create a setter for this magnetomotive force quantity.
3007
3510
 
@@ -3016,7 +3519,17 @@ class MagnetomotiveForce(FieldQnty):
3016
3519
  >>> length = Length("beam_length")
3017
3520
  >>> length.set(100).millimeters # Sets to 100 mm
3018
3521
  """
3019
- 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)
3020
3533
 
3021
3534
 
3022
3535
  class Mass(FieldQnty):
@@ -3037,7 +3550,7 @@ class Mass(FieldQnty):
3037
3550
  """
3038
3551
 
3039
3552
  __slots__ = ()
3040
- _setter_class = ts.MassSetter
3553
+ _setter_class = field_setter.MassSetter
3041
3554
  _dimension = dim.MASS
3042
3555
 
3043
3556
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3060,7 +3573,7 @@ class Mass(FieldQnty):
3060
3573
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3061
3574
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3062
3575
 
3063
- 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':
3064
3577
  """
3065
3578
  Create a setter for this mass quantity.
3066
3579
 
@@ -3075,7 +3588,17 @@ class Mass(FieldQnty):
3075
3588
  >>> length = Length("beam_length")
3076
3589
  >>> length.set(100).millimeters # Sets to 100 mm
3077
3590
  """
3078
- 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)
3079
3602
 
3080
3603
 
3081
3604
  class MassDensity(FieldQnty):
@@ -3096,7 +3619,7 @@ class MassDensity(FieldQnty):
3096
3619
  """
3097
3620
 
3098
3621
  __slots__ = ()
3099
- _setter_class = ts.MassDensitySetter
3622
+ _setter_class = field_setter.MassDensitySetter
3100
3623
  _dimension = dim.MASS_DENSITY
3101
3624
 
3102
3625
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3119,7 +3642,7 @@ class MassDensity(FieldQnty):
3119
3642
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3120
3643
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3121
3644
 
3122
- 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':
3123
3646
  """
3124
3647
  Create a setter for this mass density quantity.
3125
3648
 
@@ -3134,7 +3657,17 @@ class MassDensity(FieldQnty):
3134
3657
  >>> length = Length("beam_length")
3135
3658
  >>> length.set(100).millimeters # Sets to 100 mm
3136
3659
  """
3137
- 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)
3138
3671
 
3139
3672
 
3140
3673
  class MassFlowRate(FieldQnty):
@@ -3155,7 +3688,7 @@ class MassFlowRate(FieldQnty):
3155
3688
  """
3156
3689
 
3157
3690
  __slots__ = ()
3158
- _setter_class = ts.MassFlowRateSetter
3691
+ _setter_class = field_setter.MassFlowRateSetter
3159
3692
  _dimension = dim.MASS_FLOW_RATE
3160
3693
 
3161
3694
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3178,7 +3711,7 @@ class MassFlowRate(FieldQnty):
3178
3711
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3179
3712
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3180
3713
 
3181
- 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':
3182
3715
  """
3183
3716
  Create a setter for this mass flow rate quantity.
3184
3717
 
@@ -3193,7 +3726,17 @@ class MassFlowRate(FieldQnty):
3193
3726
  >>> length = Length("beam_length")
3194
3727
  >>> length.set(100).millimeters # Sets to 100 mm
3195
3728
  """
3196
- 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)
3197
3740
 
3198
3741
 
3199
3742
  class MassFlux(FieldQnty):
@@ -3214,7 +3757,7 @@ class MassFlux(FieldQnty):
3214
3757
  """
3215
3758
 
3216
3759
  __slots__ = ()
3217
- _setter_class = ts.MassFluxSetter
3760
+ _setter_class = field_setter.MassFluxSetter
3218
3761
  _dimension = dim.MASS_FLUX
3219
3762
 
3220
3763
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3237,7 +3780,7 @@ class MassFlux(FieldQnty):
3237
3780
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3238
3781
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3239
3782
 
3240
- 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':
3241
3784
  """
3242
3785
  Create a setter for this mass flux quantity.
3243
3786
 
@@ -3252,7 +3795,17 @@ class MassFlux(FieldQnty):
3252
3795
  >>> length = Length("beam_length")
3253
3796
  >>> length.set(100).millimeters # Sets to 100 mm
3254
3797
  """
3255
- 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)
3256
3809
 
3257
3810
 
3258
3811
  class MassFractionOfI(FieldQnty):
@@ -3273,7 +3826,7 @@ class MassFractionOfI(FieldQnty):
3273
3826
  """
3274
3827
 
3275
3828
  __slots__ = ()
3276
- _setter_class = ts.MassFractionOfISetter
3829
+ _setter_class = field_setter.MassFractionOfISetter
3277
3830
  _dimension = dim.MASS_FRACTION_OF_I
3278
3831
 
3279
3832
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3296,7 +3849,7 @@ class MassFractionOfI(FieldQnty):
3296
3849
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3297
3850
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3298
3851
 
3299
- 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':
3300
3853
  """
3301
3854
  Create a setter for this mass fraction of "i" quantity.
3302
3855
 
@@ -3311,7 +3864,17 @@ class MassFractionOfI(FieldQnty):
3311
3864
  >>> length = Length("beam_length")
3312
3865
  >>> length.set(100).millimeters # Sets to 100 mm
3313
3866
  """
3314
- 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)
3315
3878
 
3316
3879
 
3317
3880
  class MassTransferCoefficient(FieldQnty):
@@ -3332,7 +3895,7 @@ class MassTransferCoefficient(FieldQnty):
3332
3895
  """
3333
3896
 
3334
3897
  __slots__ = ()
3335
- _setter_class = ts.MassTransferCoefficientSetter
3898
+ _setter_class = field_setter.MassTransferCoefficientSetter
3336
3899
  _dimension = dim.MASS_TRANSFER_COEFFICIENT
3337
3900
 
3338
3901
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3355,7 +3918,7 @@ class MassTransferCoefficient(FieldQnty):
3355
3918
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3356
3919
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3357
3920
 
3358
- 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':
3359
3922
  """
3360
3923
  Create a setter for this mass transfer coefficient quantity.
3361
3924
 
@@ -3370,7 +3933,17 @@ class MassTransferCoefficient(FieldQnty):
3370
3933
  >>> length = Length("beam_length")
3371
3934
  >>> length.set(100).millimeters # Sets to 100 mm
3372
3935
  """
3373
- 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)
3374
3947
 
3375
3948
 
3376
3949
  class MolalityOfSoluteI(FieldQnty):
@@ -3391,7 +3964,7 @@ class MolalityOfSoluteI(FieldQnty):
3391
3964
  """
3392
3965
 
3393
3966
  __slots__ = ()
3394
- _setter_class = ts.MolalityOfSoluteISetter
3967
+ _setter_class = field_setter.MolalityOfSoluteISetter
3395
3968
  _dimension = dim.MOLALITY_OF_SOLUTE_I
3396
3969
 
3397
3970
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3414,7 +3987,7 @@ class MolalityOfSoluteI(FieldQnty):
3414
3987
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3415
3988
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3416
3989
 
3417
- 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':
3418
3991
  """
3419
3992
  Create a setter for this molality of solute "i" quantity.
3420
3993
 
@@ -3429,7 +4002,17 @@ class MolalityOfSoluteI(FieldQnty):
3429
4002
  >>> length = Length("beam_length")
3430
4003
  >>> length.set(100).millimeters # Sets to 100 mm
3431
4004
  """
3432
- 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)
3433
4016
 
3434
4017
 
3435
4018
  class MolarConcentrationByMass(FieldQnty):
@@ -3450,7 +4033,7 @@ class MolarConcentrationByMass(FieldQnty):
3450
4033
  """
3451
4034
 
3452
4035
  __slots__ = ()
3453
- _setter_class = ts.MolarConcentrationByMassSetter
4036
+ _setter_class = field_setter.MolarConcentrationByMassSetter
3454
4037
  _dimension = dim.MOLAR_CONCENTRATION_BY_MASS
3455
4038
 
3456
4039
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3473,7 +4056,7 @@ class MolarConcentrationByMass(FieldQnty):
3473
4056
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3474
4057
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3475
4058
 
3476
- 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':
3477
4060
  """
3478
4061
  Create a setter for this molar concentration by mass quantity.
3479
4062
 
@@ -3488,7 +4071,17 @@ class MolarConcentrationByMass(FieldQnty):
3488
4071
  >>> length = Length("beam_length")
3489
4072
  >>> length.set(100).millimeters # Sets to 100 mm
3490
4073
  """
3491
- 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)
3492
4085
 
3493
4086
 
3494
4087
  class MolarFlowRate(FieldQnty):
@@ -3509,7 +4102,7 @@ class MolarFlowRate(FieldQnty):
3509
4102
  """
3510
4103
 
3511
4104
  __slots__ = ()
3512
- _setter_class = ts.MolarFlowRateSetter
4105
+ _setter_class = field_setter.MolarFlowRateSetter
3513
4106
  _dimension = dim.MOLAR_FLOW_RATE
3514
4107
 
3515
4108
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3532,7 +4125,7 @@ class MolarFlowRate(FieldQnty):
3532
4125
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3533
4126
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3534
4127
 
3535
- 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':
3536
4129
  """
3537
4130
  Create a setter for this molar flow rate quantity.
3538
4131
 
@@ -3547,7 +4140,17 @@ class MolarFlowRate(FieldQnty):
3547
4140
  >>> length = Length("beam_length")
3548
4141
  >>> length.set(100).millimeters # Sets to 100 mm
3549
4142
  """
3550
- 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)
3551
4154
 
3552
4155
 
3553
4156
  class MolarFlux(FieldQnty):
@@ -3568,7 +4171,7 @@ class MolarFlux(FieldQnty):
3568
4171
  """
3569
4172
 
3570
4173
  __slots__ = ()
3571
- _setter_class = ts.MolarFluxSetter
4174
+ _setter_class = field_setter.MolarFluxSetter
3572
4175
  _dimension = dim.MOLAR_FLUX
3573
4176
 
3574
4177
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3591,7 +4194,7 @@ class MolarFlux(FieldQnty):
3591
4194
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3592
4195
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3593
4196
 
3594
- 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':
3595
4198
  """
3596
4199
  Create a setter for this molar flux quantity.
3597
4200
 
@@ -3606,7 +4209,17 @@ class MolarFlux(FieldQnty):
3606
4209
  >>> length = Length("beam_length")
3607
4210
  >>> length.set(100).millimeters # Sets to 100 mm
3608
4211
  """
3609
- 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)
3610
4223
 
3611
4224
 
3612
4225
  class MolarHeatCapacity(FieldQnty):
@@ -3627,7 +4240,7 @@ class MolarHeatCapacity(FieldQnty):
3627
4240
  """
3628
4241
 
3629
4242
  __slots__ = ()
3630
- _setter_class = ts.MolarHeatCapacitySetter
4243
+ _setter_class = field_setter.MolarHeatCapacitySetter
3631
4244
  _dimension = dim.MOLAR_HEAT_CAPACITY
3632
4245
 
3633
4246
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3650,7 +4263,7 @@ class MolarHeatCapacity(FieldQnty):
3650
4263
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3651
4264
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3652
4265
 
3653
- 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':
3654
4267
  """
3655
4268
  Create a setter for this molar heat capacity quantity.
3656
4269
 
@@ -3665,7 +4278,17 @@ class MolarHeatCapacity(FieldQnty):
3665
4278
  >>> length = Length("beam_length")
3666
4279
  >>> length.set(100).millimeters # Sets to 100 mm
3667
4280
  """
3668
- 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)
3669
4292
 
3670
4293
 
3671
4294
  class MolarityOfI(FieldQnty):
@@ -3686,7 +4309,7 @@ class MolarityOfI(FieldQnty):
3686
4309
  """
3687
4310
 
3688
4311
  __slots__ = ()
3689
- _setter_class = ts.MolarityOfISetter
4312
+ _setter_class = field_setter.MolarityOfISetter
3690
4313
  _dimension = dim.MOLARITY_OF_I
3691
4314
 
3692
4315
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3709,7 +4332,7 @@ class MolarityOfI(FieldQnty):
3709
4332
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3710
4333
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3711
4334
 
3712
- 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':
3713
4336
  """
3714
4337
  Create a setter for this molarity of "i" quantity.
3715
4338
 
@@ -3724,7 +4347,17 @@ class MolarityOfI(FieldQnty):
3724
4347
  >>> length = Length("beam_length")
3725
4348
  >>> length.set(100).millimeters # Sets to 100 mm
3726
4349
  """
3727
- 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)
3728
4361
 
3729
4362
 
3730
4363
  class MoleFractionOfI(FieldQnty):
@@ -3745,7 +4378,7 @@ class MoleFractionOfI(FieldQnty):
3745
4378
  """
3746
4379
 
3747
4380
  __slots__ = ()
3748
- _setter_class = ts.MoleFractionOfISetter
4381
+ _setter_class = field_setter.MoleFractionOfISetter
3749
4382
  _dimension = dim.MOLE_FRACTION_OF_I
3750
4383
 
3751
4384
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3768,7 +4401,7 @@ class MoleFractionOfI(FieldQnty):
3768
4401
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3769
4402
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3770
4403
 
3771
- 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':
3772
4405
  """
3773
4406
  Create a setter for this mole fraction of "i" quantity.
3774
4407
 
@@ -3783,7 +4416,17 @@ class MoleFractionOfI(FieldQnty):
3783
4416
  >>> length = Length("beam_length")
3784
4417
  >>> length.set(100).millimeters # Sets to 100 mm
3785
4418
  """
3786
- 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)
3787
4430
 
3788
4431
 
3789
4432
  class MomentOfInertia(FieldQnty):
@@ -3804,7 +4447,7 @@ class MomentOfInertia(FieldQnty):
3804
4447
  """
3805
4448
 
3806
4449
  __slots__ = ()
3807
- _setter_class = ts.MomentOfInertiaSetter
4450
+ _setter_class = field_setter.MomentOfInertiaSetter
3808
4451
  _dimension = dim.MOMENT_OF_INERTIA
3809
4452
 
3810
4453
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3827,7 +4470,7 @@ class MomentOfInertia(FieldQnty):
3827
4470
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3828
4471
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3829
4472
 
3830
- 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':
3831
4474
  """
3832
4475
  Create a setter for this moment of inertia quantity.
3833
4476
 
@@ -3842,7 +4485,17 @@ class MomentOfInertia(FieldQnty):
3842
4485
  >>> length = Length("beam_length")
3843
4486
  >>> length.set(100).millimeters # Sets to 100 mm
3844
4487
  """
3845
- 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)
3846
4499
 
3847
4500
 
3848
4501
  class MomentumFlowRate(FieldQnty):
@@ -3863,7 +4516,7 @@ class MomentumFlowRate(FieldQnty):
3863
4516
  """
3864
4517
 
3865
4518
  __slots__ = ()
3866
- _setter_class = ts.MomentumFlowRateSetter
4519
+ _setter_class = field_setter.MomentumFlowRateSetter
3867
4520
  _dimension = dim.MOMENTUM_FLOW_RATE
3868
4521
 
3869
4522
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3886,7 +4539,7 @@ class MomentumFlowRate(FieldQnty):
3886
4539
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3887
4540
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3888
4541
 
3889
- 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':
3890
4543
  """
3891
4544
  Create a setter for this momentum flow rate quantity.
3892
4545
 
@@ -3901,7 +4554,17 @@ class MomentumFlowRate(FieldQnty):
3901
4554
  >>> length = Length("beam_length")
3902
4555
  >>> length.set(100).millimeters # Sets to 100 mm
3903
4556
  """
3904
- 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)
3905
4568
 
3906
4569
 
3907
4570
  class MomentumFlux(FieldQnty):
@@ -3922,7 +4585,7 @@ class MomentumFlux(FieldQnty):
3922
4585
  """
3923
4586
 
3924
4587
  __slots__ = ()
3925
- _setter_class = ts.MomentumFluxSetter
4588
+ _setter_class = field_setter.MomentumFluxSetter
3926
4589
  _dimension = dim.MOMENTUM_FLUX
3927
4590
 
3928
4591
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -3945,7 +4608,7 @@ class MomentumFlux(FieldQnty):
3945
4608
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
3946
4609
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
3947
4610
 
3948
- 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':
3949
4612
  """
3950
4613
  Create a setter for this momentum flux quantity.
3951
4614
 
@@ -3960,7 +4623,17 @@ class MomentumFlux(FieldQnty):
3960
4623
  >>> length = Length("beam_length")
3961
4624
  >>> length.set(100).millimeters # Sets to 100 mm
3962
4625
  """
3963
- 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)
3964
4637
 
3965
4638
 
3966
4639
  class NormalityOfSolution(FieldQnty):
@@ -3981,7 +4654,7 @@ class NormalityOfSolution(FieldQnty):
3981
4654
  """
3982
4655
 
3983
4656
  __slots__ = ()
3984
- _setter_class = ts.NormalityOfSolutionSetter
4657
+ _setter_class = field_setter.NormalityOfSolutionSetter
3985
4658
  _dimension = dim.NORMALITY_OF_SOLUTION
3986
4659
 
3987
4660
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4004,7 +4677,7 @@ class NormalityOfSolution(FieldQnty):
4004
4677
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4005
4678
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4006
4679
 
4007
- 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':
4008
4681
  """
4009
4682
  Create a setter for this normality of solution quantity.
4010
4683
 
@@ -4019,7 +4692,17 @@ class NormalityOfSolution(FieldQnty):
4019
4692
  >>> length = Length("beam_length")
4020
4693
  >>> length.set(100).millimeters # Sets to 100 mm
4021
4694
  """
4022
- 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)
4023
4706
 
4024
4707
 
4025
4708
  class ParticleDensity(FieldQnty):
@@ -4040,7 +4723,7 @@ class ParticleDensity(FieldQnty):
4040
4723
  """
4041
4724
 
4042
4725
  __slots__ = ()
4043
- _setter_class = ts.ParticleDensitySetter
4726
+ _setter_class = field_setter.ParticleDensitySetter
4044
4727
  _dimension = dim.PARTICLE_DENSITY
4045
4728
 
4046
4729
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4063,7 +4746,7 @@ class ParticleDensity(FieldQnty):
4063
4746
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4064
4747
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4065
4748
 
4066
- 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':
4067
4750
  """
4068
4751
  Create a setter for this particle density quantity.
4069
4752
 
@@ -4078,7 +4761,17 @@ class ParticleDensity(FieldQnty):
4078
4761
  >>> length = Length("beam_length")
4079
4762
  >>> length.set(100).millimeters # Sets to 100 mm
4080
4763
  """
4081
- 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)
4082
4775
 
4083
4776
 
4084
4777
  class Percent(FieldQnty):
@@ -4099,7 +4792,7 @@ class Percent(FieldQnty):
4099
4792
  """
4100
4793
 
4101
4794
  __slots__ = ()
4102
- _setter_class = ts.PercentSetter
4795
+ _setter_class = field_setter.PercentSetter
4103
4796
  _dimension = dim.PERCENT
4104
4797
 
4105
4798
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4122,7 +4815,7 @@ class Percent(FieldQnty):
4122
4815
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4123
4816
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4124
4817
 
4125
- 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':
4126
4819
  """
4127
4820
  Create a setter for this percent quantity.
4128
4821
 
@@ -4137,7 +4830,17 @@ class Percent(FieldQnty):
4137
4830
  >>> length = Length("beam_length")
4138
4831
  >>> length.set(100).millimeters # Sets to 100 mm
4139
4832
  """
4140
- 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)
4141
4844
 
4142
4845
 
4143
4846
  class Permeability(FieldQnty):
@@ -4158,7 +4861,7 @@ class Permeability(FieldQnty):
4158
4861
  """
4159
4862
 
4160
4863
  __slots__ = ()
4161
- _setter_class = ts.PermeabilitySetter
4864
+ _setter_class = field_setter.PermeabilitySetter
4162
4865
  _dimension = dim.PERMEABILITY
4163
4866
 
4164
4867
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4181,7 +4884,7 @@ class Permeability(FieldQnty):
4181
4884
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4182
4885
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4183
4886
 
4184
- 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':
4185
4888
  """
4186
4889
  Create a setter for this permeability quantity.
4187
4890
 
@@ -4196,7 +4899,17 @@ class Permeability(FieldQnty):
4196
4899
  >>> length = Length("beam_length")
4197
4900
  >>> length.set(100).millimeters # Sets to 100 mm
4198
4901
  """
4199
- 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)
4200
4913
 
4201
4914
 
4202
4915
  class PhotonEmissionRate(FieldQnty):
@@ -4217,7 +4930,7 @@ class PhotonEmissionRate(FieldQnty):
4217
4930
  """
4218
4931
 
4219
4932
  __slots__ = ()
4220
- _setter_class = ts.PhotonEmissionRateSetter
4933
+ _setter_class = field_setter.PhotonEmissionRateSetter
4221
4934
  _dimension = dim.PHOTON_EMISSION_RATE
4222
4935
 
4223
4936
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4240,7 +4953,7 @@ class PhotonEmissionRate(FieldQnty):
4240
4953
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4241
4954
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4242
4955
 
4243
- 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':
4244
4957
  """
4245
4958
  Create a setter for this photon emission rate quantity.
4246
4959
 
@@ -4255,7 +4968,17 @@ class PhotonEmissionRate(FieldQnty):
4255
4968
  >>> length = Length("beam_length")
4256
4969
  >>> length.set(100).millimeters # Sets to 100 mm
4257
4970
  """
4258
- 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)
4259
4982
 
4260
4983
 
4261
4984
  class PowerPerUnitMass(FieldQnty):
@@ -4276,7 +4999,7 @@ class PowerPerUnitMass(FieldQnty):
4276
4999
  """
4277
5000
 
4278
5001
  __slots__ = ()
4279
- _setter_class = ts.PowerPerUnitMassSetter
5002
+ _setter_class = field_setter.PowerPerUnitMassSetter
4280
5003
  _dimension = dim.POWER_PER_UNIT_MASS
4281
5004
 
4282
5005
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4299,7 +5022,7 @@ class PowerPerUnitMass(FieldQnty):
4299
5022
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4300
5023
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4301
5024
 
4302
- 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':
4303
5026
  """
4304
5027
  Create a setter for this power per unit mass or specific power quantity.
4305
5028
 
@@ -4314,7 +5037,17 @@ class PowerPerUnitMass(FieldQnty):
4314
5037
  >>> length = Length("beam_length")
4315
5038
  >>> length.set(100).millimeters # Sets to 100 mm
4316
5039
  """
4317
- 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)
4318
5051
 
4319
5052
 
4320
5053
  class PowerPerUnitVolume(FieldQnty):
@@ -4335,7 +5068,7 @@ class PowerPerUnitVolume(FieldQnty):
4335
5068
  """
4336
5069
 
4337
5070
  __slots__ = ()
4338
- _setter_class = ts.PowerPerUnitVolumeSetter
5071
+ _setter_class = field_setter.PowerPerUnitVolumeSetter
4339
5072
  _dimension = dim.POWER_PER_UNIT_VOLUME
4340
5073
 
4341
5074
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4358,7 +5091,7 @@ class PowerPerUnitVolume(FieldQnty):
4358
5091
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4359
5092
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4360
5093
 
4361
- 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':
4362
5095
  """
4363
5096
  Create a setter for this power per unit volume or power density quantity.
4364
5097
 
@@ -4373,7 +5106,17 @@ class PowerPerUnitVolume(FieldQnty):
4373
5106
  >>> length = Length("beam_length")
4374
5107
  >>> length.set(100).millimeters # Sets to 100 mm
4375
5108
  """
4376
- 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)
4377
5120
 
4378
5121
 
4379
5122
  class PowerThermalDuty(FieldQnty):
@@ -4394,7 +5137,7 @@ class PowerThermalDuty(FieldQnty):
4394
5137
  """
4395
5138
 
4396
5139
  __slots__ = ()
4397
- _setter_class = ts.PowerThermalDutySetter
5140
+ _setter_class = field_setter.PowerThermalDutySetter
4398
5141
  _dimension = dim.POWER_THERMAL_DUTY
4399
5142
 
4400
5143
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4417,7 +5160,7 @@ class PowerThermalDuty(FieldQnty):
4417
5160
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4418
5161
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4419
5162
 
4420
- 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':
4421
5164
  """
4422
5165
  Create a setter for this power, thermal duty quantity.
4423
5166
 
@@ -4432,7 +5175,17 @@ class PowerThermalDuty(FieldQnty):
4432
5175
  >>> length = Length("beam_length")
4433
5176
  >>> length.set(100).millimeters # Sets to 100 mm
4434
5177
  """
4435
- 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)
4436
5189
 
4437
5190
 
4438
5191
  class Pressure(FieldQnty):
@@ -4453,7 +5206,7 @@ class Pressure(FieldQnty):
4453
5206
  """
4454
5207
 
4455
5208
  __slots__ = ()
4456
- _setter_class = ts.PressureSetter
5209
+ _setter_class = field_setter.PressureSetter
4457
5210
  _dimension = dim.PRESSURE
4458
5211
 
4459
5212
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4476,7 +5229,7 @@ class Pressure(FieldQnty):
4476
5229
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4477
5230
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4478
5231
 
4479
- 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':
4480
5233
  """
4481
5234
  Create a setter for this pressure quantity.
4482
5235
 
@@ -4491,7 +5244,17 @@ class Pressure(FieldQnty):
4491
5244
  >>> length = Length("beam_length")
4492
5245
  >>> length.set(100).millimeters # Sets to 100 mm
4493
5246
  """
4494
- return ts.PressureSetter(self, value)
5247
+ if unit is not None:
5248
+ # Direct setting with unit
5249
+ setter = field_setter.PressureSetter(self, value)
5250
+ # Get the unit property and call it to set the value
5251
+ if hasattr(setter, unit):
5252
+ getattr(setter, unit)
5253
+ else:
5254
+ raise ValueError(f"Unknown unit: {unit}")
5255
+ return self
5256
+ else:
5257
+ return field_setter.PressureSetter(self, value)
4495
5258
 
4496
5259
 
4497
5260
  class RadiationDoseEquivalent(FieldQnty):
@@ -4512,7 +5275,7 @@ class RadiationDoseEquivalent(FieldQnty):
4512
5275
  """
4513
5276
 
4514
5277
  __slots__ = ()
4515
- _setter_class = ts.RadiationDoseEquivalentSetter
5278
+ _setter_class = field_setter.RadiationDoseEquivalentSetter
4516
5279
  _dimension = dim.RADIATION_DOSE_EQUIVALENT
4517
5280
 
4518
5281
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4535,7 +5298,7 @@ class RadiationDoseEquivalent(FieldQnty):
4535
5298
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4536
5299
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4537
5300
 
4538
- 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':
4539
5302
  """
4540
5303
  Create a setter for this radiation dose equivalent quantity.
4541
5304
 
@@ -4550,7 +5313,17 @@ class RadiationDoseEquivalent(FieldQnty):
4550
5313
  >>> length = Length("beam_length")
4551
5314
  >>> length.set(100).millimeters # Sets to 100 mm
4552
5315
  """
4553
- 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)
4554
5327
 
4555
5328
 
4556
5329
  class RadiationExposure(FieldQnty):
@@ -4571,7 +5344,7 @@ class RadiationExposure(FieldQnty):
4571
5344
  """
4572
5345
 
4573
5346
  __slots__ = ()
4574
- _setter_class = ts.RadiationExposureSetter
5347
+ _setter_class = field_setter.RadiationExposureSetter
4575
5348
  _dimension = dim.RADIATION_EXPOSURE
4576
5349
 
4577
5350
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4594,7 +5367,7 @@ class RadiationExposure(FieldQnty):
4594
5367
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4595
5368
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4596
5369
 
4597
- 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':
4598
5371
  """
4599
5372
  Create a setter for this radiation exposure quantity.
4600
5373
 
@@ -4609,7 +5382,17 @@ class RadiationExposure(FieldQnty):
4609
5382
  >>> length = Length("beam_length")
4610
5383
  >>> length.set(100).millimeters # Sets to 100 mm
4611
5384
  """
4612
- 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)
4613
5396
 
4614
5397
 
4615
5398
  class Radioactivity(FieldQnty):
@@ -4630,7 +5413,7 @@ class Radioactivity(FieldQnty):
4630
5413
  """
4631
5414
 
4632
5415
  __slots__ = ()
4633
- _setter_class = ts.RadioactivitySetter
5416
+ _setter_class = field_setter.RadioactivitySetter
4634
5417
  _dimension = dim.RADIOACTIVITY
4635
5418
 
4636
5419
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4653,7 +5436,7 @@ class Radioactivity(FieldQnty):
4653
5436
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4654
5437
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4655
5438
 
4656
- 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':
4657
5440
  """
4658
5441
  Create a setter for this radioactivity quantity.
4659
5442
 
@@ -4668,7 +5451,17 @@ class Radioactivity(FieldQnty):
4668
5451
  >>> length = Length("beam_length")
4669
5452
  >>> length.set(100).millimeters # Sets to 100 mm
4670
5453
  """
4671
- 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)
4672
5465
 
4673
5466
 
4674
5467
  class SecondMomentOfArea(FieldQnty):
@@ -4689,7 +5482,7 @@ class SecondMomentOfArea(FieldQnty):
4689
5482
  """
4690
5483
 
4691
5484
  __slots__ = ()
4692
- _setter_class = ts.SecondMomentOfAreaSetter
5485
+ _setter_class = field_setter.SecondMomentOfAreaSetter
4693
5486
  _dimension = dim.SECOND_MOMENT_OF_AREA
4694
5487
 
4695
5488
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4712,7 +5505,7 @@ class SecondMomentOfArea(FieldQnty):
4712
5505
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4713
5506
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4714
5507
 
4715
- 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':
4716
5509
  """
4717
5510
  Create a setter for this second moment of area quantity.
4718
5511
 
@@ -4727,7 +5520,17 @@ class SecondMomentOfArea(FieldQnty):
4727
5520
  >>> length = Length("beam_length")
4728
5521
  >>> length.set(100).millimeters # Sets to 100 mm
4729
5522
  """
4730
- 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)
4731
5534
 
4732
5535
 
4733
5536
  class SecondRadiationConstantPlanck(FieldQnty):
@@ -4748,7 +5551,7 @@ class SecondRadiationConstantPlanck(FieldQnty):
4748
5551
  """
4749
5552
 
4750
5553
  __slots__ = ()
4751
- _setter_class = ts.SecondRadiationConstantPlanckSetter
5554
+ _setter_class = field_setter.SecondRadiationConstantPlanckSetter
4752
5555
  _dimension = dim.SECOND_RADIATION_CONSTANT_PLANCK
4753
5556
 
4754
5557
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4771,7 +5574,7 @@ class SecondRadiationConstantPlanck(FieldQnty):
4771
5574
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4772
5575
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4773
5576
 
4774
- 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':
4775
5578
  """
4776
5579
  Create a setter for this second radiation constant (planck) quantity.
4777
5580
 
@@ -4786,7 +5589,17 @@ class SecondRadiationConstantPlanck(FieldQnty):
4786
5589
  >>> length = Length("beam_length")
4787
5590
  >>> length.set(100).millimeters # Sets to 100 mm
4788
5591
  """
4789
- 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)
4790
5603
 
4791
5604
 
4792
5605
  class SpecificEnthalpy(FieldQnty):
@@ -4807,7 +5620,7 @@ class SpecificEnthalpy(FieldQnty):
4807
5620
  """
4808
5621
 
4809
5622
  __slots__ = ()
4810
- _setter_class = ts.SpecificEnthalpySetter
5623
+ _setter_class = field_setter.SpecificEnthalpySetter
4811
5624
  _dimension = dim.SPECIFIC_ENTHALPY
4812
5625
 
4813
5626
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4830,7 +5643,7 @@ class SpecificEnthalpy(FieldQnty):
4830
5643
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4831
5644
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4832
5645
 
4833
- 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':
4834
5647
  """
4835
5648
  Create a setter for this specific enthalpy quantity.
4836
5649
 
@@ -4845,7 +5658,17 @@ class SpecificEnthalpy(FieldQnty):
4845
5658
  >>> length = Length("beam_length")
4846
5659
  >>> length.set(100).millimeters # Sets to 100 mm
4847
5660
  """
4848
- 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)
4849
5672
 
4850
5673
 
4851
5674
  class SpecificGravity(FieldQnty):
@@ -4866,7 +5689,7 @@ class SpecificGravity(FieldQnty):
4866
5689
  """
4867
5690
 
4868
5691
  __slots__ = ()
4869
- _setter_class = ts.SpecificGravitySetter
5692
+ _setter_class = field_setter.SpecificGravitySetter
4870
5693
  _dimension = dim.SPECIFIC_GRAVITY
4871
5694
 
4872
5695
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4889,7 +5712,7 @@ class SpecificGravity(FieldQnty):
4889
5712
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4890
5713
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4891
5714
 
4892
- 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':
4893
5716
  """
4894
5717
  Create a setter for this specific gravity quantity.
4895
5718
 
@@ -4904,7 +5727,17 @@ class SpecificGravity(FieldQnty):
4904
5727
  >>> length = Length("beam_length")
4905
5728
  >>> length.set(100).millimeters # Sets to 100 mm
4906
5729
  """
4907
- 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)
4908
5741
 
4909
5742
 
4910
5743
  class SpecificHeatCapacityConstantPressure(FieldQnty):
@@ -4925,7 +5758,7 @@ class SpecificHeatCapacityConstantPressure(FieldQnty):
4925
5758
  """
4926
5759
 
4927
5760
  __slots__ = ()
4928
- _setter_class = ts.SpecificHeatCapacityConstantPressureSetter
5761
+ _setter_class = field_setter.SpecificHeatCapacityConstantPressureSetter
4929
5762
  _dimension = dim.SPECIFIC_HEAT_CAPACITY_CONSTANT_PRESSURE
4930
5763
 
4931
5764
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -4948,7 +5781,7 @@ class SpecificHeatCapacityConstantPressure(FieldQnty):
4948
5781
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
4949
5782
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
4950
5783
 
4951
- 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':
4952
5785
  """
4953
5786
  Create a setter for this specific heat capacity (constant pressure) quantity.
4954
5787
 
@@ -4963,7 +5796,17 @@ class SpecificHeatCapacityConstantPressure(FieldQnty):
4963
5796
  >>> length = Length("beam_length")
4964
5797
  >>> length.set(100).millimeters # Sets to 100 mm
4965
5798
  """
4966
- 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)
4967
5810
 
4968
5811
 
4969
5812
  class SpecificLength(FieldQnty):
@@ -4984,7 +5827,7 @@ class SpecificLength(FieldQnty):
4984
5827
  """
4985
5828
 
4986
5829
  __slots__ = ()
4987
- _setter_class = ts.SpecificLengthSetter
5830
+ _setter_class = field_setter.SpecificLengthSetter
4988
5831
  _dimension = dim.SPECIFIC_LENGTH
4989
5832
 
4990
5833
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5007,7 +5850,7 @@ class SpecificLength(FieldQnty):
5007
5850
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5008
5851
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5009
5852
 
5010
- 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':
5011
5854
  """
5012
5855
  Create a setter for this specific length quantity.
5013
5856
 
@@ -5022,7 +5865,17 @@ class SpecificLength(FieldQnty):
5022
5865
  >>> length = Length("beam_length")
5023
5866
  >>> length.set(100).millimeters # Sets to 100 mm
5024
5867
  """
5025
- 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)
5026
5879
 
5027
5880
 
5028
5881
  class SpecificSurface(FieldQnty):
@@ -5043,7 +5896,7 @@ class SpecificSurface(FieldQnty):
5043
5896
  """
5044
5897
 
5045
5898
  __slots__ = ()
5046
- _setter_class = ts.SpecificSurfaceSetter
5899
+ _setter_class = field_setter.SpecificSurfaceSetter
5047
5900
  _dimension = dim.SPECIFIC_SURFACE
5048
5901
 
5049
5902
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5066,7 +5919,7 @@ class SpecificSurface(FieldQnty):
5066
5919
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5067
5920
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5068
5921
 
5069
- 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':
5070
5923
  """
5071
5924
  Create a setter for this specific surface quantity.
5072
5925
 
@@ -5081,7 +5934,17 @@ class SpecificSurface(FieldQnty):
5081
5934
  >>> length = Length("beam_length")
5082
5935
  >>> length.set(100).millimeters # Sets to 100 mm
5083
5936
  """
5084
- 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)
5085
5948
 
5086
5949
 
5087
5950
  class SpecificVolume(FieldQnty):
@@ -5102,7 +5965,7 @@ class SpecificVolume(FieldQnty):
5102
5965
  """
5103
5966
 
5104
5967
  __slots__ = ()
5105
- _setter_class = ts.SpecificVolumeSetter
5968
+ _setter_class = field_setter.SpecificVolumeSetter
5106
5969
  _dimension = dim.SPECIFIC_VOLUME
5107
5970
 
5108
5971
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5125,7 +5988,7 @@ class SpecificVolume(FieldQnty):
5125
5988
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5126
5989
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5127
5990
 
5128
- 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':
5129
5992
  """
5130
5993
  Create a setter for this specific volume quantity.
5131
5994
 
@@ -5140,7 +6003,17 @@ class SpecificVolume(FieldQnty):
5140
6003
  >>> length = Length("beam_length")
5141
6004
  >>> length.set(100).millimeters # Sets to 100 mm
5142
6005
  """
5143
- 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)
5144
6017
 
5145
6018
 
5146
6019
  class Stress(FieldQnty):
@@ -5161,7 +6034,7 @@ class Stress(FieldQnty):
5161
6034
  """
5162
6035
 
5163
6036
  __slots__ = ()
5164
- _setter_class = ts.StressSetter
6037
+ _setter_class = field_setter.StressSetter
5165
6038
  _dimension = dim.STRESS
5166
6039
 
5167
6040
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5184,7 +6057,7 @@ class Stress(FieldQnty):
5184
6057
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5185
6058
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5186
6059
 
5187
- 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':
5188
6061
  """
5189
6062
  Create a setter for this stress quantity.
5190
6063
 
@@ -5199,7 +6072,17 @@ class Stress(FieldQnty):
5199
6072
  >>> length = Length("beam_length")
5200
6073
  >>> length.set(100).millimeters # Sets to 100 mm
5201
6074
  """
5202
- 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)
5203
6086
 
5204
6087
 
5205
6088
  class SurfaceMassDensity(FieldQnty):
@@ -5220,7 +6103,7 @@ class SurfaceMassDensity(FieldQnty):
5220
6103
  """
5221
6104
 
5222
6105
  __slots__ = ()
5223
- _setter_class = ts.SurfaceMassDensitySetter
6106
+ _setter_class = field_setter.SurfaceMassDensitySetter
5224
6107
  _dimension = dim.SURFACE_MASS_DENSITY
5225
6108
 
5226
6109
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5243,7 +6126,7 @@ class SurfaceMassDensity(FieldQnty):
5243
6126
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5244
6127
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5245
6128
 
5246
- 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':
5247
6130
  """
5248
6131
  Create a setter for this surface mass density quantity.
5249
6132
 
@@ -5258,7 +6141,17 @@ class SurfaceMassDensity(FieldQnty):
5258
6141
  >>> length = Length("beam_length")
5259
6142
  >>> length.set(100).millimeters # Sets to 100 mm
5260
6143
  """
5261
- 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)
5262
6155
 
5263
6156
 
5264
6157
  class SurfaceTension(FieldQnty):
@@ -5279,7 +6172,7 @@ class SurfaceTension(FieldQnty):
5279
6172
  """
5280
6173
 
5281
6174
  __slots__ = ()
5282
- _setter_class = ts.SurfaceTensionSetter
6175
+ _setter_class = field_setter.SurfaceTensionSetter
5283
6176
  _dimension = dim.SURFACE_TENSION
5284
6177
 
5285
6178
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5302,7 +6195,7 @@ class SurfaceTension(FieldQnty):
5302
6195
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5303
6196
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5304
6197
 
5305
- 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':
5306
6199
  """
5307
6200
  Create a setter for this surface tension quantity.
5308
6201
 
@@ -5317,7 +6210,17 @@ class SurfaceTension(FieldQnty):
5317
6210
  >>> length = Length("beam_length")
5318
6211
  >>> length.set(100).millimeters # Sets to 100 mm
5319
6212
  """
5320
- 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)
5321
6224
 
5322
6225
 
5323
6226
  class Temperature(FieldQnty):
@@ -5338,7 +6241,7 @@ class Temperature(FieldQnty):
5338
6241
  """
5339
6242
 
5340
6243
  __slots__ = ()
5341
- _setter_class = ts.TemperatureSetter
6244
+ _setter_class = field_setter.TemperatureSetter
5342
6245
  _dimension = dim.TEMPERATURE
5343
6246
 
5344
6247
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5361,7 +6264,7 @@ class Temperature(FieldQnty):
5361
6264
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5362
6265
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5363
6266
 
5364
- 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':
5365
6268
  """
5366
6269
  Create a setter for this temperature quantity.
5367
6270
 
@@ -5376,7 +6279,17 @@ class Temperature(FieldQnty):
5376
6279
  >>> length = Length("beam_length")
5377
6280
  >>> length.set(100).millimeters # Sets to 100 mm
5378
6281
  """
5379
- 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)
5380
6293
 
5381
6294
 
5382
6295
  class ThermalConductivity(FieldQnty):
@@ -5397,7 +6310,7 @@ class ThermalConductivity(FieldQnty):
5397
6310
  """
5398
6311
 
5399
6312
  __slots__ = ()
5400
- _setter_class = ts.ThermalConductivitySetter
6313
+ _setter_class = field_setter.ThermalConductivitySetter
5401
6314
  _dimension = dim.THERMAL_CONDUCTIVITY
5402
6315
 
5403
6316
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5420,7 +6333,7 @@ class ThermalConductivity(FieldQnty):
5420
6333
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5421
6334
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5422
6335
 
5423
- 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':
5424
6337
  """
5425
6338
  Create a setter for this thermal conductivity quantity.
5426
6339
 
@@ -5435,7 +6348,17 @@ class ThermalConductivity(FieldQnty):
5435
6348
  >>> length = Length("beam_length")
5436
6349
  >>> length.set(100).millimeters # Sets to 100 mm
5437
6350
  """
5438
- 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)
5439
6362
 
5440
6363
 
5441
6364
  class Time(FieldQnty):
@@ -5456,7 +6379,7 @@ class Time(FieldQnty):
5456
6379
  """
5457
6380
 
5458
6381
  __slots__ = ()
5459
- _setter_class = ts.TimeSetter
6382
+ _setter_class = field_setter.TimeSetter
5460
6383
  _dimension = dim.TIME
5461
6384
 
5462
6385
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5479,7 +6402,7 @@ class Time(FieldQnty):
5479
6402
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5480
6403
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5481
6404
 
5482
- 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':
5483
6406
  """
5484
6407
  Create a setter for this time quantity.
5485
6408
 
@@ -5494,7 +6417,17 @@ class Time(FieldQnty):
5494
6417
  >>> length = Length("beam_length")
5495
6418
  >>> length.set(100).millimeters # Sets to 100 mm
5496
6419
  """
5497
- 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)
5498
6431
 
5499
6432
 
5500
6433
  class Torque(FieldQnty):
@@ -5515,7 +6448,7 @@ class Torque(FieldQnty):
5515
6448
  """
5516
6449
 
5517
6450
  __slots__ = ()
5518
- _setter_class = ts.TorqueSetter
6451
+ _setter_class = field_setter.TorqueSetter
5519
6452
  _dimension = dim.TORQUE
5520
6453
 
5521
6454
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5538,7 +6471,7 @@ class Torque(FieldQnty):
5538
6471
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5539
6472
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5540
6473
 
5541
- 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':
5542
6475
  """
5543
6476
  Create a setter for this torque quantity.
5544
6477
 
@@ -5553,7 +6486,17 @@ class Torque(FieldQnty):
5553
6486
  >>> length = Length("beam_length")
5554
6487
  >>> length.set(100).millimeters # Sets to 100 mm
5555
6488
  """
5556
- 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)
5557
6500
 
5558
6501
 
5559
6502
  class TurbulenceEnergyDissipationRate(FieldQnty):
@@ -5574,7 +6517,7 @@ class TurbulenceEnergyDissipationRate(FieldQnty):
5574
6517
  """
5575
6518
 
5576
6519
  __slots__ = ()
5577
- _setter_class = ts.TurbulenceEnergyDissipationRateSetter
6520
+ _setter_class = field_setter.TurbulenceEnergyDissipationRateSetter
5578
6521
  _dimension = dim.TURBULENCE_ENERGY_DISSIPATION_RATE
5579
6522
 
5580
6523
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5597,7 +6540,7 @@ class TurbulenceEnergyDissipationRate(FieldQnty):
5597
6540
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5598
6541
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5599
6542
 
5600
- 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':
5601
6544
  """
5602
6545
  Create a setter for this turbulence energy dissipation rate quantity.
5603
6546
 
@@ -5612,7 +6555,17 @@ class TurbulenceEnergyDissipationRate(FieldQnty):
5612
6555
  >>> length = Length("beam_length")
5613
6556
  >>> length.set(100).millimeters # Sets to 100 mm
5614
6557
  """
5615
- 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)
5616
6569
 
5617
6570
 
5618
6571
  class VelocityAngular(FieldQnty):
@@ -5633,7 +6586,7 @@ class VelocityAngular(FieldQnty):
5633
6586
  """
5634
6587
 
5635
6588
  __slots__ = ()
5636
- _setter_class = ts.VelocityAngularSetter
6589
+ _setter_class = field_setter.VelocityAngularSetter
5637
6590
  _dimension = dim.VELOCITY_ANGULAR
5638
6591
 
5639
6592
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5656,7 +6609,7 @@ class VelocityAngular(FieldQnty):
5656
6609
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5657
6610
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5658
6611
 
5659
- 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':
5660
6613
  """
5661
6614
  Create a setter for this velocity, angular quantity.
5662
6615
 
@@ -5671,7 +6624,17 @@ class VelocityAngular(FieldQnty):
5671
6624
  >>> length = Length("beam_length")
5672
6625
  >>> length.set(100).millimeters # Sets to 100 mm
5673
6626
  """
5674
- 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)
5675
6638
 
5676
6639
 
5677
6640
  class VelocityLinear(FieldQnty):
@@ -5692,7 +6655,7 @@ class VelocityLinear(FieldQnty):
5692
6655
  """
5693
6656
 
5694
6657
  __slots__ = ()
5695
- _setter_class = ts.VelocityLinearSetter
6658
+ _setter_class = field_setter.VelocityLinearSetter
5696
6659
  _dimension = dim.VELOCITY_LINEAR
5697
6660
 
5698
6661
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5715,7 +6678,7 @@ class VelocityLinear(FieldQnty):
5715
6678
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5716
6679
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5717
6680
 
5718
- 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':
5719
6682
  """
5720
6683
  Create a setter for this velocity, linear quantity.
5721
6684
 
@@ -5730,7 +6693,17 @@ class VelocityLinear(FieldQnty):
5730
6693
  >>> length = Length("beam_length")
5731
6694
  >>> length.set(100).millimeters # Sets to 100 mm
5732
6695
  """
5733
- 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)
5734
6707
 
5735
6708
 
5736
6709
  class ViscosityDynamic(FieldQnty):
@@ -5751,7 +6724,7 @@ class ViscosityDynamic(FieldQnty):
5751
6724
  """
5752
6725
 
5753
6726
  __slots__ = ()
5754
- _setter_class = ts.ViscosityDynamicSetter
6727
+ _setter_class = field_setter.ViscosityDynamicSetter
5755
6728
  _dimension = dim.VISCOSITY_DYNAMIC
5756
6729
 
5757
6730
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5774,7 +6747,7 @@ class ViscosityDynamic(FieldQnty):
5774
6747
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5775
6748
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5776
6749
 
5777
- 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':
5778
6751
  """
5779
6752
  Create a setter for this viscosity, dynamic quantity.
5780
6753
 
@@ -5789,7 +6762,17 @@ class ViscosityDynamic(FieldQnty):
5789
6762
  >>> length = Length("beam_length")
5790
6763
  >>> length.set(100).millimeters # Sets to 100 mm
5791
6764
  """
5792
- 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)
5793
6776
 
5794
6777
 
5795
6778
  class ViscosityKinematic(FieldQnty):
@@ -5810,7 +6793,7 @@ class ViscosityKinematic(FieldQnty):
5810
6793
  """
5811
6794
 
5812
6795
  __slots__ = ()
5813
- _setter_class = ts.ViscosityKinematicSetter
6796
+ _setter_class = field_setter.ViscosityKinematicSetter
5814
6797
  _dimension = dim.VISCOSITY_KINEMATIC
5815
6798
 
5816
6799
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5833,7 +6816,7 @@ class ViscosityKinematic(FieldQnty):
5833
6816
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5834
6817
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5835
6818
 
5836
- 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':
5837
6820
  """
5838
6821
  Create a setter for this viscosity, kinematic quantity.
5839
6822
 
@@ -5848,7 +6831,17 @@ class ViscosityKinematic(FieldQnty):
5848
6831
  >>> length = Length("beam_length")
5849
6832
  >>> length.set(100).millimeters # Sets to 100 mm
5850
6833
  """
5851
- 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)
5852
6845
 
5853
6846
 
5854
6847
  class Volume(FieldQnty):
@@ -5869,7 +6862,7 @@ class Volume(FieldQnty):
5869
6862
  """
5870
6863
 
5871
6864
  __slots__ = ()
5872
- _setter_class = ts.VolumeSetter
6865
+ _setter_class = field_setter.VolumeSetter
5873
6866
  _dimension = dim.VOLUME
5874
6867
 
5875
6868
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5892,7 +6885,7 @@ class Volume(FieldQnty):
5892
6885
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5893
6886
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5894
6887
 
5895
- 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':
5896
6889
  """
5897
6890
  Create a setter for this volume quantity.
5898
6891
 
@@ -5907,7 +6900,17 @@ class Volume(FieldQnty):
5907
6900
  >>> length = Length("beam_length")
5908
6901
  >>> length.set(100).millimeters # Sets to 100 mm
5909
6902
  """
5910
- 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)
5911
6914
 
5912
6915
 
5913
6916
  class VolumeFractionOfI(FieldQnty):
@@ -5928,7 +6931,7 @@ class VolumeFractionOfI(FieldQnty):
5928
6931
  """
5929
6932
 
5930
6933
  __slots__ = ()
5931
- _setter_class = ts.VolumeFractionOfISetter
6934
+ _setter_class = field_setter.VolumeFractionOfISetter
5932
6935
  _dimension = dim.VOLUME_FRACTION_OF_I
5933
6936
 
5934
6937
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -5951,7 +6954,7 @@ class VolumeFractionOfI(FieldQnty):
5951
6954
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
5952
6955
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
5953
6956
 
5954
- 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':
5955
6958
  """
5956
6959
  Create a setter for this volume fraction of "i" quantity.
5957
6960
 
@@ -5966,7 +6969,17 @@ class VolumeFractionOfI(FieldQnty):
5966
6969
  >>> length = Length("beam_length")
5967
6970
  >>> length.set(100).millimeters # Sets to 100 mm
5968
6971
  """
5969
- 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)
5970
6983
 
5971
6984
 
5972
6985
  class VolumetricCalorificHeatingValue(FieldQnty):
@@ -5987,7 +7000,7 @@ class VolumetricCalorificHeatingValue(FieldQnty):
5987
7000
  """
5988
7001
 
5989
7002
  __slots__ = ()
5990
- _setter_class = ts.VolumetricCalorificHeatingValueSetter
7003
+ _setter_class = field_setter.VolumetricCalorificHeatingValueSetter
5991
7004
  _dimension = dim.VOLUMETRIC_CALORIFIC_HEATING_VALUE
5992
7005
 
5993
7006
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6010,7 +7023,7 @@ class VolumetricCalorificHeatingValue(FieldQnty):
6010
7023
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6011
7024
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6012
7025
 
6013
- 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':
6014
7027
  """
6015
7028
  Create a setter for this volumetric calorific (heating) value quantity.
6016
7029
 
@@ -6025,7 +7038,17 @@ class VolumetricCalorificHeatingValue(FieldQnty):
6025
7038
  >>> length = Length("beam_length")
6026
7039
  >>> length.set(100).millimeters # Sets to 100 mm
6027
7040
  """
6028
- 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)
6029
7052
 
6030
7053
 
6031
7054
  class VolumetricCoefficientOfExpansion(FieldQnty):
@@ -6046,7 +7069,7 @@ class VolumetricCoefficientOfExpansion(FieldQnty):
6046
7069
  """
6047
7070
 
6048
7071
  __slots__ = ()
6049
- _setter_class = ts.VolumetricCoefficientOfExpansionSetter
7072
+ _setter_class = field_setter.VolumetricCoefficientOfExpansionSetter
6050
7073
  _dimension = dim.VOLUMETRIC_COEFFICIENT_OF_EXPANSION
6051
7074
 
6052
7075
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6069,7 +7092,7 @@ class VolumetricCoefficientOfExpansion(FieldQnty):
6069
7092
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6070
7093
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6071
7094
 
6072
- 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':
6073
7096
  """
6074
7097
  Create a setter for this volumetric coefficient of expansion quantity.
6075
7098
 
@@ -6084,7 +7107,17 @@ class VolumetricCoefficientOfExpansion(FieldQnty):
6084
7107
  >>> length = Length("beam_length")
6085
7108
  >>> length.set(100).millimeters # Sets to 100 mm
6086
7109
  """
6087
- 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)
6088
7121
 
6089
7122
 
6090
7123
  class VolumetricFlowRate(FieldQnty):
@@ -6105,7 +7138,7 @@ class VolumetricFlowRate(FieldQnty):
6105
7138
  """
6106
7139
 
6107
7140
  __slots__ = ()
6108
- _setter_class = ts.VolumetricFlowRateSetter
7141
+ _setter_class = field_setter.VolumetricFlowRateSetter
6109
7142
  _dimension = dim.VOLUMETRIC_FLOW_RATE
6110
7143
 
6111
7144
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6128,7 +7161,7 @@ class VolumetricFlowRate(FieldQnty):
6128
7161
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6129
7162
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6130
7163
 
6131
- 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':
6132
7165
  """
6133
7166
  Create a setter for this volumetric flow rate quantity.
6134
7167
 
@@ -6143,7 +7176,17 @@ class VolumetricFlowRate(FieldQnty):
6143
7176
  >>> length = Length("beam_length")
6144
7177
  >>> length.set(100).millimeters # Sets to 100 mm
6145
7178
  """
6146
- 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)
6147
7190
 
6148
7191
 
6149
7192
  class VolumetricFlux(FieldQnty):
@@ -6164,7 +7207,7 @@ class VolumetricFlux(FieldQnty):
6164
7207
  """
6165
7208
 
6166
7209
  __slots__ = ()
6167
- _setter_class = ts.VolumetricFluxSetter
7210
+ _setter_class = field_setter.VolumetricFluxSetter
6168
7211
  _dimension = dim.VOLUMETRIC_FLUX
6169
7212
 
6170
7213
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6187,7 +7230,7 @@ class VolumetricFlux(FieldQnty):
6187
7230
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6188
7231
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6189
7232
 
6190
- 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':
6191
7234
  """
6192
7235
  Create a setter for this volumetric flux quantity.
6193
7236
 
@@ -6202,7 +7245,17 @@ class VolumetricFlux(FieldQnty):
6202
7245
  >>> length = Length("beam_length")
6203
7246
  >>> length.set(100).millimeters # Sets to 100 mm
6204
7247
  """
6205
- 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)
6206
7259
 
6207
7260
 
6208
7261
  class VolumetricMassFlowRate(FieldQnty):
@@ -6223,7 +7276,7 @@ class VolumetricMassFlowRate(FieldQnty):
6223
7276
  """
6224
7277
 
6225
7278
  __slots__ = ()
6226
- _setter_class = ts.VolumetricMassFlowRateSetter
7279
+ _setter_class = field_setter.VolumetricMassFlowRateSetter
6227
7280
  _dimension = dim.VOLUMETRIC_MASS_FLOW_RATE
6228
7281
 
6229
7282
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6246,7 +7299,7 @@ class VolumetricMassFlowRate(FieldQnty):
6246
7299
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6247
7300
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6248
7301
 
6249
- 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':
6250
7303
  """
6251
7304
  Create a setter for this volumetric mass flow rate quantity.
6252
7305
 
@@ -6261,7 +7314,17 @@ class VolumetricMassFlowRate(FieldQnty):
6261
7314
  >>> length = Length("beam_length")
6262
7315
  >>> length.set(100).millimeters # Sets to 100 mm
6263
7316
  """
6264
- 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)
6265
7328
 
6266
7329
 
6267
7330
  class Wavenumber(FieldQnty):
@@ -6282,7 +7345,7 @@ class Wavenumber(FieldQnty):
6282
7345
  """
6283
7346
 
6284
7347
  __slots__ = ()
6285
- _setter_class = ts.WavenumberSetter
7348
+ _setter_class = field_setter.WavenumberSetter
6286
7349
  _dimension = dim.WAVENUMBER
6287
7350
 
6288
7351
  def __init__(self, name_or_value: str | int | float, unit: str | None = None, name: str | None = None, is_known: bool = True):
@@ -6305,7 +7368,7 @@ class Wavenumber(FieldQnty):
6305
7368
  raise ValueError("Must provide either just name (unknown) or value, unit, and name (known)")
6306
7369
  self.set_arithmetic_mode('expression') # Default expression mode for backward compatibility
6307
7370
 
6308
- 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':
6309
7372
  """
6310
7373
  Create a setter for this wavenumber quantity.
6311
7374
 
@@ -6320,6 +7383,16 @@ class Wavenumber(FieldQnty):
6320
7383
  >>> length = Length("beam_length")
6321
7384
  >>> length.set(100).millimeters # Sets to 100 mm
6322
7385
  """
6323
- 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)
6324
7397
 
6325
7398