Skip to content

Commit 14d7ba1

Browse files
committed
dev
1 parent f42d10b commit 14d7ba1

File tree

2 files changed

+43
-27
lines changed

2 files changed

+43
-27
lines changed

cf/mixin/fielddomain.py

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,6 +1345,7 @@ def autocyclic(self, key=None, coord=None, verbose=None, config={}):
13451345
# Don't do anything
13461346
return
13471347

1348+
# On a dry run, return as usual, but don't update _cyclic.
13481349
dry_run = config.get("dry_run")
13491350

13501351
if "cyclic" in config:
@@ -1364,31 +1365,16 @@ def autocyclic(self, key=None, coord=None, verbose=None, config={}):
13641365
self.cyclic(
13651366
key, iscyclic=True, period=period, config=config
13661367
)
1367-
1368+
13681369
return True
13691370

1370-
# if axis is not None:
1371-
# if coord is not None:
1372-
# raise ValueError("TODO")
1373-
#
1374-
# key, coord = self.dimension_coordinate(
1375-
# filter_by_axis=(axis,), item=True, default=(None, None)
1376-
# )
1377-
# if coord is None:
1378-
# if not dry_run:
1379-
# self.cyclic(key, iscyclic=False, config=config)
1380-
#
1381-
# return False
1382-
13831371
if coord is None:
13841372
key, coord = self.dimension_coordinate(
13851373
"X", item=True, default=(None, None)
13861374
)
13871375
if coord is None:
1388-
if not dry_run:
1389-
self.cyclic(key, iscyclic=False, config=config)
1390-
13911376
return False
1377+
13921378
elif "X" in config:
13931379
if not config["X"]:
13941380
if not dry_run:
@@ -1955,12 +1941,15 @@ def cyclic(
19551941
cyclic = self._cyclic
19561942

19571943
if not identity and not filter_kwargs:
1958-
cyclic = cyclic.copy()
1944+
cyclic = cyclic.copy()
1945+
1946+
# Check for axes that are currently marked as non-cyclic,
1947+
# but are in fact cyclic.
19591948
if (
1960-
len(cyclic) < len(self.domain_axes(todict=True))
1961-
and self.autocyclic()
1949+
len(cyclic) < len(self.domain_axes(todict=True))
1950+
and self.autocyclic()
19621951
):
1963-
cyclic = cyclic.update(self._cyclic)
1952+
cyclic.update(self._cyclic)
19641953
self._cyclic = cyclic
19651954

19661955
return cyclic
@@ -2291,8 +2280,6 @@ def get_coordinate_reference(
22912280
def iscyclic(self, *identity, **filter_kwargs):
22922281
"""Returns True if the given axis is cyclic.
22932282
2294-
If
2295-
22962283
{{unique construct}}
22972284
22982285
.. versionadded:: 1.0

cf/test/test_Domain.py

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,24 +437,53 @@ def test_Domain_cyclic_iscyclic(self):
437437
d2 = f2.domain
438438

439439
# Getting
440-
self.assertEqual(d1.cyclic(), f1.cyclic())
441440
self.assertEqual(d1.cyclic(), set())
441+
self.assertEqual(d1.cyclic(), f1.cyclic())
442442
self.assertFalse(d1.iscyclic("X"))
443443
self.assertFalse(d1.iscyclic("Y"))
444444
self.assertFalse(d1.iscyclic("Z"))
445445
self.assertFalse(d1.iscyclic("T"))
446-
self.assertEqual(d2.cyclic(), f2.cyclic())
446+
447447
self.assertEqual(d2.cyclic(), set(("domainaxis2",)))
448+
self.assertEqual(d2.cyclic(), f2.cyclic())
448449
self.assertTrue(d2.iscyclic("X"))
449450
self.assertFalse(d2.iscyclic("Y"))
450451
self.assertFalse(d2.iscyclic("Z"))
451452
self.assertFalse(d2.iscyclic("T"))
452453

453454
# Setting
454455
self.assertEqual(d2.cyclic("X", iscyclic=False), set(("domainaxis2",)))
455-
self.assertEqual(d2.cyclic(), set())
456-
self.assertEqual(d2.cyclic("X", period=360), set())
457456
self.assertEqual(d2.cyclic(), set(("domainaxis2",)))
457+
458+
d2.cyclic("Y", period=360), set()
459+
self.assertEqual(
460+
d2.cyclic(),
461+
set(
462+
(
463+
"domainaxis1",
464+
"domainaxis2",
465+
)
466+
),
467+
)
468+
self.assertTrue(d2.iscyclic("Y"))
469+
self.assertEqual(
470+
d2.cyclic("Y", iscyclic=False),
471+
set(
472+
(
473+
"domainaxis1",
474+
"domainaxis2",
475+
)
476+
),
477+
)
478+
self.assertEqual(d2.cyclic(), set(("domainaxis2",)))
479+
480+
# Auto setting of cyclicity
481+
self.assertTrue(d2.iscyclic("X"))
482+
d2.cyclic("X", iscyclic=False)
483+
self.assertFalse(d2._cyclic)
484+
self.assertEqual(d2.cyclic(), set(("domainaxis2",)))
485+
486+
d2.cyclic("X", iscyclic=False)
458487
self.assertTrue(d2.iscyclic("X"))
459488

460489

0 commit comments

Comments
 (0)