Skip to content

Commit 41f48fe

Browse files
committed
Formatted angle precision setting.
1 parent 36b876f commit 41f48fe

3 files changed

Lines changed: 22 additions & 8 deletions

File tree

immanuel/classes/wrap.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,15 @@
1919

2020

2121
class Angle:
22-
def __init__(self, angle: float, format: int = convert.FORMAT_DMS) -> None:
22+
precision = {
23+
calc.DEGREE: convert.ROUND_DEGREE,
24+
calc.MINUTE: convert.ROUND_MINUTE,
25+
calc.SECOND: convert.ROUND_SECOND,
26+
}
27+
28+
def __init__(self, angle: float, format: int = convert.FORMAT_DMS, round_to: int = calc.SECOND) -> None:
2329
self.raw = angle
24-
self.formatted = convert.dec_to_string(angle, format)
30+
self.formatted = convert.dec_to_string(angle, format, Angle.precision[round_to])
2531
self.direction = None
2632
self.degrees = None
2733
self.minutes = None
@@ -41,8 +47,8 @@ def __init__(self, aspect: dict, objects: dict) -> None:
4147
self.type = _(names.ASPECTS[aspect['aspect']])
4248
self.aspect = aspect['aspect']
4349
self.orb = aspect['orb']
44-
self.distance = Angle(aspect['distance'])
45-
self.difference = Angle(aspect['difference'])
50+
self.distance = Angle(aspect['distance'], round_to=settings.angle_precision)
51+
self.difference = Angle(aspect['difference'], round_to=settings.angle_precision)
4652
self.movement = AspectMovement(aspect)
4753
self.condition = AspectCondition(aspect)
4854

@@ -193,10 +199,10 @@ def __init__(self, object: dict, objects: dict = None, houses: dict = None, is_d
193199
self.date_time = DateTime(object['date_time'])
194200

195201
if 'lat' in object:
196-
self.latitude = Angle(object['lat'])
202+
self.latitude = Angle(object['lat'], round_to=settings.angle_precision)
197203

198-
self.longitude = Angle(object['lon'])
199-
self.sign_longitude = Angle(position.sign_longitude(object))
204+
self.longitude = Angle(object['lon'], round_to=settings.angle_precision)
205+
self.sign_longitude = Angle(position.sign_longitude(object), round_to=settings.angle_precision)
200206
self.sign = Sign(position.sign(object))
201207
self.decan = Decan(position.decan(object))
202208

@@ -212,7 +218,7 @@ def __init__(self, object: dict, objects: dict = None, houses: dict = None, is_d
212218
self.movement = ObjectMovement(object)
213219

214220
if 'dec' in object:
215-
self.declination = Angle(object['dec'])
221+
self.declination = Angle(object['dec'], round_to=settings.angle_precision)
216222

217223
if object['type'] not in (chart.HOUSE, chart.ANGLE, chart.FIXED_STAR):
218224
self.out_of_bounds = calculate.is_out_of_bounds(object=object, obliquity=obliquity)

immanuel/const/calc.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,8 @@
109109
SEESAW = 4
110110
SPLAY = 5
111111
SPLASH = 6
112+
113+
""" Angle rounding. """
114+
DEGREE = 0
115+
MINUTE = 1
116+
SECOND = 2

immanuel/setup.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ def __init__(self) -> None:
101101
that object. """
102102
self.output_typical_object_motion = False
103103

104+
""" Rounding for formatted angle strings. """
105+
self.angle_precision = calc.SECOND
106+
104107
""" House system as supported by pyswisseph. """
105108
self.house_system = chart.PLACIDUS
106109

0 commit comments

Comments
 (0)