pygeodesy 24.6.1__py2.py3-none-any.whl → 24.6.9__py2.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.
pygeodesy/geohash.py CHANGED
@@ -30,7 +30,7 @@ from pygeodesy.named import _name__, _NamedDict, _NamedTuple, nameof, _xnamed
30
30
  from pygeodesy.namedTuples import Bounds2Tuple, Bounds4Tuple, LatLon2Tuple, \
31
31
  PhiLam2Tuple
32
32
  from pygeodesy.props import deprecated_function, deprecated_method, \
33
- deprecated_property_RO, Property_RO, property_RO
33
+ deprecated_property_RO, Property_RO
34
34
  from pygeodesy.streprs import fstr
35
35
  from pygeodesy.units import Degrees_, Int, Lat, Lon, Precision_, Str, \
36
36
  _xStrError
@@ -38,7 +38,9 @@ from pygeodesy.units import Degrees_, Int, Lat, Lon, Precision_, Str, \
38
38
  from math import fabs, ldexp, log10, radians
39
39
 
40
40
  __all__ = _ALL_LAZY.geohash
41
- __version__ = '24.05.23'
41
+ __version__ = '24.06.10'
42
+
43
+ _formy = _MODS.into(formy=__name__)
42
44
 
43
45
 
44
46
  class _GH(object):
@@ -317,9 +319,8 @@ class Geohash(Str):
317
319
  '''
318
320
  lls = self.latlon + _2Geohash(other).latlon
319
321
  kwds = _xkwds(adjust_limit_wrap, adjust=False, limit=None, wrap=False)
320
- m = self._formy
321
- return m.equirectangular( *lls, radius=radius, **kwds) if radius else \
322
- m.equirectangular4(*lls, **kwds).distance2
322
+ return _formy.equirectangular( *lls, radius=radius, **kwds) if radius else \
323
+ _formy.equirectangular4(*lls, **kwds).distance2
323
324
 
324
325
  def euclideanTo(self, other, **radius_adjust_wrap):
325
326
  '''Approximate the distance between this and an other geohash using
@@ -335,14 +336,7 @@ class Geohash(Str):
335
336
  @raise TypeError: The B{C{other}} is not a L{Geohash}, C{LatLon}
336
337
  or C{str} or invalid B{C{radius}}.
337
338
  '''
338
- return self._distanceTo(self._formy.euclidean, other, **radius_adjust_wrap)
339
-
340
- @property_RO
341
- def _formy(self):
342
- '''(INTERNAL) Get the C{.formy} module, I{once}.
343
- '''
344
- Geohash._formy = f = _MODS.formy # overwrite property_RO
345
- return f
339
+ return self._distanceTo(_formy.euclidean, other, **radius_adjust_wrap)
346
340
 
347
341
  def haversineTo(self, other, **radius_wrap):
348
342
  '''Compute the distance between this and an other geohash using
@@ -358,7 +352,7 @@ class Geohash(Str):
358
352
  @raise TypeError: The B{C{other}} is not a L{Geohash}, C{LatLon}
359
353
  or C{str} or invalid B{C{radius}}.
360
354
  '''
361
- return self._distanceTo(self._formy.haversine, other, **radius_wrap)
355
+ return self._distanceTo(_formy.haversine, other, **radius_wrap)
362
356
 
363
357
  @Property_RO
364
358
  def latlon(self):
@@ -431,7 +425,7 @@ class Geohash(Str):
431
425
  @raise TypeError: The B{C{other}} is not a L{Geohash}, C{LatLon}
432
426
  or C{str} or invalid B{C{radius}}.
433
427
  '''
434
- return self._distanceTo(self._formy.vincentys, other, **radius_wrap)
428
+ return self._distanceTo(_formy.vincentys, other, **radius_wrap)
435
429
 
436
430
  @Property_RO
437
431
  def N(self):
@@ -803,18 +797,11 @@ def precision(res1, res2=None):
803
797
  <https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1Geohash.html>}.
804
798
  '''
805
799
  r = Degrees_(res1=res1, low=_0_0, Error=GeohashError)
806
- if res2 is None:
807
- t = r, r
808
- for p in range(1, _MaxPrec):
809
- if resolution2(p, None) <= t:
810
- return p
811
-
812
- else:
813
- t = r, Degrees_(res2=res2, low=_0_0, Error=GeohashError)
814
- for p in range(1, _MaxPrec):
815
- if resolution2(p, p) <= t:
816
- return p
817
-
800
+ N = res2 is None
801
+ t = r, (r if N else Degrees_(res2=res2, low=_0_0, Error=GeohashError))
802
+ for p in range(1, _MaxPrec):
803
+ if resolution2(p, (None if N else p)) <= t:
804
+ return p
818
805
  return _MaxPrec
819
806
 
820
807
 
pygeodesy/geoids.py CHANGED
@@ -118,7 +118,7 @@ except ImportError: # Python 3+
118
118
  from io import BytesIO as _BytesIO # PYCHOK expected
119
119
 
120
120
  __all__ = _ALL_LAZY.geoids
121
- __version__ = '24.05.23'
121
+ __version__ = '24.06.03'
122
122
 
123
123
  _assert_ = 'assert'
124
124
  _bHASH_ = b'#'
pygeodesy/hausdorff.py CHANGED
@@ -86,7 +86,7 @@ from pygeodesy.unitsBase import _Str_degrees, _Str_degrees2, _Str_meter, _Str_NN
86
86
  from random import Random
87
87
 
88
88
  __all__ = _ALL_LAZY.hausdorff
89
- __version__ = '24.05.26'
89
+ __version__ = '24.06.08'
90
90
 
91
91
 
92
92
  class HausdorffError(PointsError):
@@ -819,14 +819,13 @@ class Hausdorff6Tuple(_NamedTuple):
819
819
  _Names_ = ('hd', _i_, _j_, 'mn', 'md', _units_)
820
820
  _Units_ = (_Pass, Number_, Number_, Number_, _Pass, _Pass)
821
821
 
822
- def toUnits(self, **Error): # PYCHOK expected
822
+ def toUnits(self, **Error_name): # PYCHOK expected
823
823
  '''Overloaded C{_NamedTuple.toUnits} for C{hd} and C{md} units.
824
824
  '''
825
- U = _xUnit(self.units, Float) # PYCHOK expected
826
- M = _Pass if self.md is None else U # PYCHOK expected
827
- self._Units_ = (U,) + Hausdorff6Tuple._Units_[1:4] \
828
- + (M,) + Hausdorff6Tuple._Units_[5:]
829
- return _NamedTuple.toUnits(self, **Error)
825
+ u = list(Hausdorff6Tuple._Units_)
826
+ u[0] = U = _xUnit(self.units, Float) # PYCHOK expected
827
+ u[4] = _Pass if self.md is None else U # PYCHOK expected
828
+ return _NamedTuple.toUnits(self.reUnit(*u), **Error_name) # PYCHOK self
830
829
 
831
830
 
832
831
  def randomrangenerator(seed):
pygeodesy/heights.py CHANGED
@@ -76,7 +76,7 @@ from pygeodesy.errors import _AssertionError, LenError, PointsError, \
76
76
  # from pygeodesy.fmath import fidw # _MODS
77
77
  # from pygeodesy.formy import cosineAndoyerLambert, cosineForsytheAndoyerLambert, \
78
78
  # cosineLaw, equirectangular4, euclidean, flatLocal, \
79
- # flatPolar, haversine, thomas, vincentys # _MODS
79
+ # flatPolar, haversine, thomas, vincentys # _MODS.into
80
80
  # from pygeodesy.internals import _version2 # _MODS
81
81
  from pygeodesy.interns import NN, _COMMASPACE_, _cubic_, _insufficient_, _linear_, \
82
82
  _NOTEQUAL_, _PLUS_, _scipy_, _SPACE_, _STAR_
@@ -91,9 +91,10 @@ from pygeodesy.units import _isDegrees, Float_, Int_
91
91
  # from math import radians # from .points
92
92
 
93
93
  __all__ = _ALL_LAZY.heights
94
- __version__ = '24.05.25'
94
+ __version__ = '24.06.03'
95
95
 
96
96
  _error_ = 'error'
97
+ _formy = _MODS.into(formy=__name__)
97
98
  _llis_ = 'llis'
98
99
  _smoothing_ = 'smoothing'
99
100
 
@@ -693,20 +694,6 @@ class _HeightIDW(_HeightBase):
693
694
  i = Fmt.INDEX(knots=i)
694
695
  raise HeightError(i, k, cause=e)
695
696
 
696
- @property_RO
697
- def _fmath(self):
698
- '''(INTERNAL) Get module C{fmath}, I{once}.
699
- '''
700
- _HeightIDW._fmath = f = _MODS.fmath # overwrite property_RO
701
- return f
702
-
703
- @property_RO
704
- def _formy(self):
705
- '''(INTERNAL) Get module C{formy}, I{once}.
706
- '''
707
- _HeightIDW._formy = f = _MODS.formy # overwrite property_RO
708
- return f
709
-
710
697
  def height(self, lats, lons, **wrap):
711
698
  '''Interpolate the height for one or several lat-/longitudes.
712
699
 
@@ -735,7 +722,7 @@ class _HeightIDW(_HeightBase):
735
722
  '''
736
723
  ds, hs = self._distances(x, y), self._heights
737
724
  try:
738
- return self._fmath.fidw(hs, ds, beta=self.beta)
725
+ return _MODS.fmath.fidw(hs, ds, beta=self.beta)
739
726
  except (TypeError, ValueError) as e:
740
727
  raise HeightError(x=x, y=y, cause=e)
741
728
 
@@ -798,7 +785,7 @@ class HeightIDWcosineAndoyerLambert(_HeightIDW):
798
785
  @see: L{Here<_HeightIDW.__init__>} for further details.
799
786
  '''
800
787
  _HeightIDW.__init__(self, knots, beta=beta, **name__datum_wrap)
801
- self._func = self._formy.cosineAndoyerLambert
788
+ self._func = _formy.cosineAndoyerLambert
802
789
 
803
790
  if _FOR_DOCS:
804
791
  __call__ = _HeightIDW.__call__
@@ -821,7 +808,7 @@ class HeightIDWcosineForsytheAndoyerLambert(_HeightIDW):
821
808
  @see: L{Here<_HeightIDW.__init__>} for further details.
822
809
  '''
823
810
  _HeightIDW.__init__(self, knots, beta=beta, **name__datum_wrap)
824
- self._func = self._formy.cosineForsytheAndoyerLambert
811
+ self._func = _formy.cosineForsytheAndoyerLambert
825
812
 
826
813
  if _FOR_DOCS:
827
814
  __call__ = _HeightIDW.__call__
@@ -845,7 +832,7 @@ class HeightIDWcosineLaw(_HeightIDW):
845
832
  @see: L{Here<_HeightIDW.__init__>} for further details.
846
833
  '''
847
834
  _HeightIDW.__init__(self, knots, beta=beta, **name__radius_wrap)
848
- self._func = self._formy.cosineLaw
835
+ self._func = _formy.cosineLaw
849
836
 
850
837
  if _FOR_DOCS:
851
838
  __call__ = _HeightIDW.__call__
@@ -914,7 +901,7 @@ class HeightIDWequirectangular(_HeightIDW):
914
901
  def _distances(self, x, y):
915
902
  '''(INTERNAL) Yield distances to C{(x, y)}.
916
903
  '''
917
- _f, kwds = self._formy.equirectangular4, self._kwds
904
+ _f, kwds = _formy.equirectangular4, self._kwds
918
905
  try:
919
906
  for i, k in enumerate(self._knots):
920
907
  yield _f(y, x, k.lat, k.lon, **kwds).distance2
@@ -942,7 +929,7 @@ class HeightIDWeuclidean(_HeightIDW):
942
929
  @see: L{Here<_HeightIDW.__init__>} for further details.
943
930
  '''
944
931
  _HeightIDW.__init__(self, knots, beta=beta, **name__adjust_radius_wrap)
945
- self._func = self._formy.euclidean
932
+ self._func = _formy.euclidean
946
933
 
947
934
  if _FOR_DOCS:
948
935
  __call__ = _HeightIDW.__call__
@@ -995,7 +982,7 @@ class HeightIDWflatLocal(_HeightIDW):
995
982
  '''
996
983
  _HeightIDW.__init__(self, knots, beta=beta,
997
984
  **name__datum_hypot_scaled_wrap)
998
- self._func = self._formy.flatLocal
985
+ self._func = _formy.flatLocal
999
986
 
1000
987
  if _FOR_DOCS:
1001
988
  __call__ = _HeightIDW.__call__
@@ -1018,7 +1005,7 @@ class HeightIDWflatPolar(_HeightIDW):
1018
1005
  @see: L{Here<_HeightIDW.__init__>} for further details.
1019
1006
  '''
1020
1007
  _HeightIDW.__init__(self, knots, beta=beta, **name__radius_wrap)
1021
- self._func = self._formy.flatPolar
1008
+ self._func = _formy.flatPolar
1022
1009
 
1023
1010
  if _FOR_DOCS:
1024
1011
  __call__ = _HeightIDW.__call__
@@ -1042,7 +1029,7 @@ class HeightIDWhaversine(_HeightIDW):
1042
1029
  @see: L{Here<_HeightIDW.__init__>} for further details.
1043
1030
  '''
1044
1031
  _HeightIDW.__init__(self, knots, beta=beta, **name__radius_wrap)
1045
- self._func = self._formy.haversine
1032
+ self._func = _formy.haversine
1046
1033
 
1047
1034
  if _FOR_DOCS:
1048
1035
  __call__ = _HeightIDW.__call__
@@ -1106,7 +1093,7 @@ class HeightIDWthomas(_HeightIDW):
1106
1093
  @see: L{Here<_HeightIDW.__init__>} for further details.
1107
1094
  '''
1108
1095
  _HeightIDW.__init__(self, knots, beta=beta, **name__datum_wrap)
1109
- self._func = self._formy.thomas
1096
+ self._func = _formy.thomas
1110
1097
 
1111
1098
  if _FOR_DOCS:
1112
1099
  __call__ = _HeightIDW.__call__
@@ -1130,7 +1117,7 @@ class HeightIDWvincentys(_HeightIDW):
1130
1117
  @see: L{Here<_HeightIDW.__init__>} for further details.
1131
1118
  '''
1132
1119
  _HeightIDW.__init__(self, knots, beta=beta, **name__radius_wrap)
1133
- self._func = self._formy.vincentys
1120
+ self._func = _formy.vincentys
1134
1121
 
1135
1122
  if _FOR_DOCS:
1136
1123
  __call__ = _HeightIDW.__call__
pygeodesy/internals.py CHANGED
@@ -32,7 +32,7 @@ def _dunder_nameof(inst, *dflt):
32
32
 
33
33
 
34
34
  def _Property_RO(method):
35
- '''(INTERNAL) Can't Irecursively import L{props.property_RO}.
35
+ '''(INTERNAL) Can't I{recursively} import L{props.property_RO}.
36
36
  '''
37
37
  name = _dunder_nameof(method)
38
38
 
@@ -53,7 +53,7 @@ def _Property_RO(method):
53
53
  return property(_get, _set, _del)
54
54
 
55
55
 
56
- class _ALL_MODS_Base(object):
56
+ class _MODS_Base(object):
57
57
  '''(INTERNAL) Base-class for C{lazily._ALL_MODS}.
58
58
  '''
59
59
  def __delattr__(self, attr): # PYCHOK no cover
@@ -207,7 +207,7 @@ class _ALL_MODS_Base(object):
207
207
  from pygeodesy import streprs # DON'T _lazy_import2
208
208
  return streprs
209
209
 
210
- _MODS = _ALL_MODS_Base() # PYCHOK overwritten by .lazily
210
+ _MODS = _MODS_Base() # PYCHOK overwritten by .lazily
211
211
 
212
212
 
213
213
  def _caller3(up): # in .lazily, .named
@@ -217,8 +217,9 @@ def _caller3(up): # in .lazily, .named
217
217
  # sys._getframe(1) ... 'importlib._bootstrap' line 1032,
218
218
  # may throw a ValueError('call stack not deep enough')
219
219
  f = _sys._getframe(up + 1)
220
- return (f.f_code.co_name, # caller name
221
- _os_path.basename(f.f_code.co_filename), # file name
220
+ c = f.f_code
221
+ return (c.co_name, # caller name
222
+ _os_path.basename(c.co_filename), # file name .py
222
223
  f.f_lineno) # line number
223
224
 
224
225
 
@@ -359,7 +360,7 @@ def _plural(noun, n):
359
360
  return NN(noun, _s_) if n > 1 else (noun if n else NN)
360
361
 
361
362
 
362
- def print_(*args, **nl_nt_prec_prefix__end_file_flush_sep_kwds): # PYCHOK no cover
363
+ def print_(*args, **nl_nt_prec_prefix__end_file_flush_sep__kwds): # PYCHOK no cover
363
364
  '''Python 3+ C{print}-like formatting and printing.
364
365
 
365
366
  @arg args: Values to be converted to C{str} and joined by B{C{sep}},
@@ -367,16 +368,16 @@ def print_(*args, **nl_nt_prec_prefix__end_file_flush_sep_kwds): # PYCHOK no co
367
368
 
368
369
  @see: Function L{printf} for further details.
369
370
  '''
370
- return printf(NN, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds)
371
+ return printf(NN, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds)
371
372
 
372
373
 
373
- def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds):
374
+ def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds):
374
375
  '''C{Printf-style} and Python 3+ C{print}-like formatting and printing.
375
376
 
376
377
  @arg fmt: U{Printf-style<https://Docs.Python.org/3/library/stdtypes.html#
377
378
  printf-style-string-formatting>} format specification (C{str}).
378
379
  @arg args: Arguments to be formatted (any C{type}, all positional).
379
- @kwarg nl_nt_prec_prefix__end_file_flush_sep_kwds: Optional keyword arguments
380
+ @kwarg nl_nt_prec_prefix__end_file_flush_sep__kwds: Optional keyword arguments
380
381
  C{B{nl}=0} for the number of leading blank lines (C{int}), C{B{nt}=0}
381
382
  the number of trailing blank lines (C{int}), C{B{prefix}=NN} to be
382
383
  inserted before the formatted text (C{str}) and Python 3+ C{print}
@@ -387,7 +388,7 @@ def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds):
387
388
 
388
389
  @return: Number of bytes written.
389
390
  '''
390
- b, e, f, fl, p, s, kwds = _print7(**nl_nt_prec_prefix__end_file_flush_sep_kwds)
391
+ b, e, f, fl, p, s, kwds = _print7(**nl_nt_prec_prefix__end_file_flush_sep__kwds)
391
392
  try:
392
393
  if args:
393
394
  t = (fmt % args) if fmt else s.join(map(str, args))
@@ -399,7 +400,7 @@ def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds):
399
400
  except Exception as x:
400
401
  _E, s = _MODS.errors._xError2(x)
401
402
  unstr = _MODS.streprs.unstr
402
- t = unstr(printf, fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds)
403
+ t = unstr(printf, fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds)
403
404
  raise _E(s, txt=t, cause=x)
404
405
  try:
405
406
  n = f.write(NN(b, t, e))
@@ -543,7 +544,7 @@ def _version_ints(vs):
543
544
 
544
545
 
545
546
  __all__ = tuple(map(_dunder_nameof, (machine, print_, printf)))
546
- __version__ = '24.05.25'
547
+ __version__ = '24.06.05'
547
548
 
548
549
  if _dunder_ismain(__name__): # PYCHOK no cover
549
550
 
pygeodesy/interns.py CHANGED
@@ -10,8 +10,8 @@ except NameError: # Python 3+
10
10
  _intern = _sys.intern
11
11
 
12
12
  _COMMASPACE_ = ', ' # overriden below
13
- _sub_packages = 'auxilats', 'deprecated', 'geodesicx', 'rhumb' # PYCHOK in .lazily,
14
- # ... make._dist, MANIFEST, setup.setup, test.bases, test.testModules
13
+ _SUB_PACKAGES = 'auxilats', 'deprecated', 'geodesicx', 'rhumb' # PYCHOK in ...
14
+ # ... .lazily, make._dist, MANIFEST, setup.setup, test.bases, .testModules
15
15
 
16
16
 
17
17
  class _Dash(str):
@@ -145,7 +145,6 @@ _and_ = 'and' # PYCHOK OK
145
145
  # _AND_ = _AMPERSAND_ # PYCHOK OK
146
146
  _angle_ = 'angle' # PYCHOK OK
147
147
  _antipodal_ = 'antipodal' # PYCHOK OK
148
- _areaOf_ = 'areaOf' # PYCHOK OK
149
148
  _arg_ = 'arg' # PYCHOK OK
150
149
  # _ASTERISK_ = _STAR_ # PYCHOK OK
151
150
  _AT_ = Str_('@') # PYCHOK OK
@@ -214,7 +213,6 @@ _ELLIPSIS4_ = Str_('....') # PYCHOK OK
214
213
  # _ELLIPSISPACED_ = Str_(' ... ') # PYCHOK <https://www.ThePunctuationGuide.com/ellipses.html>
215
214
  _ellipsoid_ = 'ellipsoid' # PYCHOK OK
216
215
  _ellipsoidal_ = 'ellipsoidal' # PYCHOK OK
217
- _enabled_ = 'enabled' # PYCHOK OK
218
216
  _encode_ = 'encode' # PYCHOK OK
219
217
  _end_ = 'end' # PYCHOK OK
220
218
  _epoch_ = 'epoch' # PYCHOK OK
@@ -254,8 +252,6 @@ _intersection_ = 'intersection' # PYCHOK OK
254
252
  _Intl1924_ = 'Intl1924' # PYCHOK OK
255
253
  _invalid_ = 'invalid' # PYCHOK OK
256
254
  _invokation_ = 'invokation' # PYCHOK OK
257
- _isclockwise_ = 'isclockwise' # PYCHOK OK
258
- _ispolar_ = 'ispolar' # PYCHOK OK
259
255
  _j_ = 'j' # PYCHOK OK
260
256
  _k0_ = 'k0' # PYCHOK OK
261
257
  _keyword_ = 'keyword' # PYCHOK OK
@@ -317,7 +313,6 @@ _NLHASH_ = Str_(_NL_ + '# ') # PYCHOK OK
317
313
  _NN_ = 'NN' # PYCHOK OK
318
314
  _no_ = _Prefix('no') # PYCHOK OK
319
315
  _northing_ = 'northing' # PYCHOK OK
320
- _NorthPole_ = 'NorthPole' # PYCHOK OK
321
316
  _not_ = _Prefix('not') # PYCHOK OK
322
317
  _NOTEQUAL_ = _BANG_ + _EQUAL_ # PYCHOK OK
323
318
  _not_finite_ = 'not finite' # PYCHOK _not_(_finite_), _infinite_
@@ -385,7 +380,6 @@ _SLASH_ = Str_('/') # PYCHOK OK
385
380
  _small_ = 'small' # PYCHOK OK
386
381
  _Sphere_ = 'Sphere' # PYCHOK OK
387
382
  _spherical_ = 'spherical' # PYCHOK OK
388
- _SouthPole_ = 'SouthPole' # PYCHOK OK
389
383
  _SPACE_ = Str_(' ') # PYCHOK OK
390
384
  _specified_ = 'specified' # PYCHOK OK
391
385
  _STAR_ = Str_('*') # PYCHOK OK
@@ -447,7 +441,7 @@ _LR_PAIRS = {_LANGLE_: _RANGLE_,
447
441
 
448
442
  __all__ = (_NN_, # NOT MISSING!
449
443
  Str_.__name__) # classes
450
- __version__ = '24.05.21'
444
+ __version__ = '24.06.05'
451
445
 
452
446
  if __name__ == '__main__':
453
447
 
pygeodesy/iters.py CHANGED
@@ -26,7 +26,7 @@ from pygeodesy.units import Int, Radius
26
26
  from pygeodesy.utily import degrees2m, _Wrap, _1_0
27
27
 
28
28
  __all__ = _ALL_LAZY.iters
29
- __version__ = '24.05.23'
29
+ __version__ = '24.06.09'
30
30
 
31
31
  _items_ = 'items'
32
32
  _iterNumpy2len = 1 # adjustable for testing purposes
@@ -83,7 +83,7 @@ class _BaseIter(_Named):
83
83
  try:
84
84
  self._loop = tuple(self.next for _ in range(loop))
85
85
  if self.loop != loop:
86
- raise RuntimeError # force Error
86
+ raise RuntimeError() # force Error
87
87
  except (RuntimeError, StopIteration):
88
88
  raise self._Error(self.name, self.loop, txt=_too_(_few_))
89
89