Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LAMA to Dask: towards a full test suite pass #428

Closed
sadielbartholomew opened this issue Aug 2, 2022 · 3 comments
Closed

LAMA to Dask: towards a full test suite pass #428

sadielbartholomew opened this issue Aug 2, 2022 · 3 comments
Assignees
Labels
dask Relating to the use of Dask
Milestone

Comments

@sadielbartholomew
Copy link
Member

sadielbartholomew commented Aug 2, 2022

The next step to close #182 is to get all remaining (metadata-focused) tests to pass after ('alpha' like) completion of the migration from LAMA to Dask of the Data modules and hence object (see #295). This PR enumerates all tests and their status so we can manage aspects in the codebase that need to be tweaked in light of the Data object migration, where one issue is likely to affect multiple tests so it is helpful to see what is hitting what and so on.


Test suite pass/fail listing

Test module name Passes fully? (Bool as emoji) Relevant PR tag(s) if relevant) Failing test methods, if any Erroring test methods, if any Notes
setup_create_field ✔️ #570 . . .
test_AuxiliaryCoordinate ✔️ . . . .
test_CellMeasure ✔️ . . . .
test_CellMethod ✔️ . . . .
test_Constructs ✔️ . . . .
test_CoordinateReference ✔️ . . . .
test_Count ✔️ . . . .
test_Data ✔️ #548, #553 . . One skip.
test_Data_utils ✔️ . . . .
test_Datetime ✔️ . . . .
test_DimensionCoordinate ✔️ #543, #553 . . .
test_Domain ✔️ . . . .
test_DomainAncillary ✔️ . . . .
test_DomainAxis ✔️ . . . .
test_Field ✔️ #506, #531, #532, #557 . . .
test_FieldAncillary ✔️ . . . .
test_FieldList ✔️ #504 . . .
test_Index ✔️ . . . .
test_List ✔️ . . . .
test_Maths ✔️ . . . .
test_Query ✔️ . . . .
test_RegridOperator ✔️ #438 . . .
test_TimeDuration ✔️ . . . .
test_aggregate ✔️ #572 . . .
test_cfa ✔️ #515 . . .
test_collapse ✔️ #532 . . .
test_decorators ✔️ #503. . . .
test_docstring ✔️ : #550, #551, #552 . . .
test_dsg ✔️ . . . .
test_external ✔️ . . . .
test_formula_terms ✔️ . . . .
test_functions ✔️ #554 . . .
test_gathering ✔️ . . . .
test_general ✔️ #489 . . .
test_geometry ✔️ #498, #504 . . .
test_groups ✔️ #517 . . .
test_pp ✔️ . . . .
test_read_write ✔️ #506, #522, NCAS-CMS/cfdm#234, #510 . . .
test_regrid ✔️ #438 . . .
test_style ✔️ #503. . . .
test_subsampling ✔️ #502, NCAS-CMS/cfdm#235 . . .

Notes: code to regenerate table structure

from os import listdir
from tabulate import tabulate

TEST_DIR_PATH = "."  # set this to the location of 'cf/test' relative to $PWD


# List out all of the Python files under the 'cf/test' directory
all_test_files = [
    f[:-3] for f in listdir(TEST_DIR_PATH) if
    f.startswith("test_") and f.endswith(".py")
]
all_test_files.sort()  # alphabetise rows listing in table
### print(all_test_files)

# Processing
complete_convert_to_emoji = {
    f: ":heavy_multiplication_x:" for f in all_test_files
}

blank_methods_list = [
    [f"`{m}`", v, ".", ".", ".", "."] for
    m, v in complete_convert_to_emoji.items()
]
print(tabulate(
    blank_methods_list, tablefmt="github",
    headers=[
        "Test module name", "Passes fully? (Bool as emoji)",
        "Relevant PR tag(s) if relevant)",
        "Failing test methods, if any",
        "Erroring test methods, if any",
        "Notes"
    ]
))
# Copy and paste output of above call into comment.
# THEN update the columns to reflect status of test modules based on running them.
@sadielbartholomew sadielbartholomew changed the title LAMA to Dask:: LAMA to Dask: ... Aug 2, 2022
@sadielbartholomew sadielbartholomew changed the title LAMA to Dask: ... LAMA to Dask: towards a full test suite pass Aug 2, 2022
@sadielbartholomew sadielbartholomew added the dask Relating to the use of Dask label Aug 2, 2022
@davidhassell davidhassell added this to the 3.14.0 milestone Nov 15, 2022
@sadielbartholomew
Copy link
Member Author

I am about to provide an updated table to enumerate what is left to be done here. For reference, I have updated my lama-to-dask branch to the latest state (as of the comment posting time) and the upstream cfdm main branch too, to get the latest state of the libraries. Running the full test suite, I see the following locally:

Click to expand STDOUT report [updated by @sadielbartholomew 2022-11-21T18:05]...
$ python run_tests.py 
--------------------
CF-PYTHON TEST SUITE
--------------------
Run date: 2022-11-21 17:53:36.572225
Platform: Linux-4.15.0-54-generic-x86_64-with-glibc2.10 
HDF5 library: 1.10.6 
netcdf library: 4.8.0 
udunits2 library: /home/sadie/anaconda3/envs/cf-env/lib/libudunits2.so.0 
Python: 3.8.10 /home/sadie/anaconda3/envs/cf-env/bin/python
netCDF4: 1.5.6 /home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/netCDF4/__init__.py
cftime: 1.6.0 /home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/cftime/__init__.py
numpy: 1.22.2 /home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/numpy/__init__.py
psutil: 5.9.0 /home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/psutil/__init__.py
scipy: 1.8.0 /home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/scipy/__init__.py
matplotlib: 3.4.3 /home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/matplotlib/__init__.py
ESMF: 8.1.1 /home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/ESMF/__init__.py
cfdm: 1.10.0.1 /home/sadie/cfdm/cfdm/__init__.py
cfunits: 3.3.5 /home/sadie/cfunits/cfunits/__init__.py
cfplot: 3.1.18 /home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/cfplot/__init__.py
cf: 3.14.0b0 /home/sadie/cf-python/cf/__init__.py

Running tests from /home/sadie/cf-python/cf/test


----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
test_create_field (setup_create_field.create_fieldTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.578s

OK
test_read_select (test_read_write.read_writeTest) ... ok
test_read_mask (test_read_write.read_writeTest) ... ok
test_read_write_domain (test_read_write.read_writeTest) ... ok
test_read_write_netCDF4_compress_shuffle (test_read_write.read_writeTest) ... ok
test_read_squeeze (test_read_write.read_writeTest) ... ok
test_read_extra (test_read_write.read_writeTest) ... ok
test_write_netcdf_mode (test_read_write.read_writeTest)
Test the `mode` parameter to `write`, notably append mode. ... ERROR
test_read_broken_bounds (test_read_write.read_writeTest) ... ERROR
test_write_filename (test_read_write.read_writeTest) ... ok
test_write_omit_data (test_read_write.read_writeTest)
Test the `omit_data` parameter to `write`. ... ok
test_read_write_unlimited (test_read_write.read_writeTest) ... ok
test_write_datatype (test_read_write.read_writeTest) ... ok
test_read_aggregate (test_read_write.read_writeTest) ... ok
test_read_cdl_string (test_read_write.read_writeTest)
Test the `cdl_string` keyword of the `read` function. ... ok
test_write_reference_datetime (test_read_write.read_writeTest) ... ok
test_read_write_format (test_read_write.read_writeTest) ... ok
test_read_write_string (test_read_write.read_writeTest) ... ERROR
test_read_directory (test_read_write.read_writeTest) ... ok
test_read_CDL (test_read_write.read_writeTest) ... ok
test_write_coordinates (test_read_write.read_writeTest) ... ok
test_TimeDuration_interval (test_TimeDuration.TimeDurationTest) ... ok
test_TimeDuration_arithmetic (test_TimeDuration.TimeDurationTest) ... ok
test_Timeduration__days_in_month (test_TimeDuration.TimeDurationTest) ... ok
test_TimeDuration_bounds (test_TimeDuration.TimeDurationTest) ... ok
test_TimeDuration_iso (test_TimeDuration.TimeDurationTest) ... ok
test_TimeDuration (test_TimeDuration.TimeDurationTest) ... ok
test_Index__repr__str__dump (test_Index.IndexTest) ... ok
test_Field_coordinate_reference (test_Field.FieldTest) ... ok
test_Field_laplacian_xy (test_Field.FieldTest) ... ok
test_Field_anchor (test_Field.FieldTest) ... ok
test_Field_radius (test_Field.FieldTest) ... ok
test_Field_bin (test_Field.FieldTest) ... ok
test_Field_del_domain_axis (test_Field.FieldTest) ... ok
test_Field_unsqueeze (test_Field.FieldTest) ... ok
test_Field_dimension_coordinate (test_Field.FieldTest) ... ok
test_Field_creation_commands (test_Field.FieldTest) ... ok
test_Field_direction (test_Field.FieldTest) ... ok
test_Field_domain_axis_position (test_Field.FieldTest) ... ok
test_Field_derivative (test_Field.FieldTest) ... ok
test_Field__setitem__ (test_Field.FieldTest) ... ok
test_Field_apply_masking (test_Field.FieldTest) ... ok
test_Field_flip (test_Field.FieldTest) ... ok
test_Field_any (test_Field.FieldTest) ... ok
test_Field_match (test_Field.FieldTest) ... ok
test_Field_where (test_Field.FieldTest) ... ok
test_Field_has_construct (test_Field.FieldTest) ... ok
test_Field_compress_uncompress (test_Field.FieldTest) ... ERROR
test_Field_transpose (test_Field.FieldTest) ... ok
test_Field_collapse (test_Field.FieldTest) ... ERROR
test_Field__mul__ (test_Field.FieldTest) ... ok
test_Field_squeeze (test_Field.FieldTest) ... ok
test_Field_get_original_filenames (test_Field.FieldTest)
Test Field.orignal_filenames. ... ok
test_Field_atol_rtol (test_Field.FieldTest) ... ok
test_Field_get_data_axes (test_Field.FieldTest) ... ok
test_Field_convert (test_Field.FieldTest) ... ok
test_Field_cell_method (test_Field.FieldTest) ... ok
test_Field_cumsum (test_Field.FieldTest) ... ok
test_Field_flatten (test_Field.FieldTest) ... ok
test_Field_cell_measure (test_Field.FieldTest) ... ok
test_Field_cell_area (test_Field.FieldTest) ... ok
test_Field_equals (test_Field.FieldTest) ... Constructs: Can't match constructs
Field: Different metadata constructs
Constructs: Can't match constructs
Field: Different metadata constructs
ok
test_Field_grad_xy (test_Field.FieldTest) ... ok
test_Field__gt__ (test_Field.FieldTest) ... ok
test_Field_domain_ancillary (test_Field.FieldTest) ... ok
test_Field_convolution_filter (test_Field.FieldTest) ... ok
test_Field_replace_construct (test_Field.FieldTest) ... ok
test_Field_set_get_del_has_data (test_Field.FieldTest) ... ok
test_Field_auxiliary_coordinate (test_Field.FieldTest) ... ok
test_Field_concatenate (test_Field.FieldTest) ... ok
test_Field_section (test_Field.FieldTest) ... ok
test_Field_halo (test_Field.FieldTest) ... ok
test_Field_domain_mask (test_Field.FieldTest) ... ok
test_Field_masked_invalid (test_Field.FieldTest) ... ok
test_Field_construct_key (test_Field.FieldTest) ... ok
test_Field_domain_axis (test_Field.FieldTest) ... ok
test_Field__getitem__ (test_Field.FieldTest) ... ok
test_Field_combine_with_Query (test_Field.FieldTest) ... ok
test_Field_indices (test_Field.FieldTest) ... ok
test_Field__add__ (test_Field.FieldTest) ... NotImplemented has been set in the place of a dask array.

This could occur if any sort of exception is raised by a function that is run on chunks (via, for instance, da.map_blocks or dask.array.core.elemwise). Such a function could get run at definition time in order to ascertain suitability (such as data type casting, broadcasting, etc.). Note that the exception may be difficult to diagnose, as dask will have silently trapped it and returned NotImplemented (for instance, see dask.array.core.elemwise). Print statements in a local copy of dask are possibly the way to go if the cause of the error is not obvious.
NotImplemented has been set in the place of a dask array.

This could occur if any sort of exception is raised by a function that is run on chunks (via, for instance, da.map_blocks or dask.array.core.elemwise). Such a function could get run at definition time in order to ascertain suitability (such as data type casting, broadcasting, etc.). Note that the exception may be difficult to diagnose, as dask will have silently trapped it and returned NotImplemented (for instance, see dask.array.core.elemwise). Print statements in a local copy of dask are possibly the way to go if the cause of the error is not obvious.
ok
test_Field_allclose (test_Field.FieldTest) ... ok
test_Field_autocyclic (test_Field.FieldTest) ... ok
test_Field_all (test_Field.FieldTest) ... ok
test_Field_weights (test_Field.FieldTest) ... ok
test_Field_coordinate (test_Field.FieldTest) ... ok
test_Field_field_ancillary (test_Field.FieldTest) ... ok
test_Field_insert_dimension (test_Field.FieldTest) ... ok
test_Field_to_dask_array (test_Field.FieldTest) ... ok
test_Field_moving_window (test_Field.FieldTest) ... ok
test_Field_percentile (test_Field.FieldTest) ... ok
test_List__repr__str__dump (test_List.ListTest) ... ok
test_compute_vertical_coordinates (test_formula_terms.FormulaTermsTest) ... ok
test_Domain_equals (test_Domain.DomainTest) ... ok
test_Domain_properties (test_Domain.DomainTest) ... ok
test_Domain_size (test_Domain.DomainTest) ... ok
test_Domain_creation_commands (test_Domain.DomainTest) ... ok
test_Domain__repr__str__dump (test_Domain.DomainTest) ... ok
test_Domain_subspace (test_Domain.DomainTest) ... ok
test_Domain__init__ (test_Domain.DomainTest) ... ok
test_Domain_flip (test_Domain.DomainTest) ... ok
test_Domain_transpose (test_Domain.DomainTest) ... ok
test_FieldList_reverse (test_FieldList.FieldTest) ... ok
test_FieldList__repr__ (test_FieldList.FieldTest) ... ok
test_FieldList__len__ (test_FieldList.FieldTest) ... ok
test_FieldList_concatenate (test_FieldList.FieldTest) ... ok
test_FieldList_index (test_FieldList.FieldTest) ... ok
test_FieldList (test_FieldList.FieldTest) ... ok
test_FieldList_equals (test_FieldList.FieldTest) ... ok
test_FieldList_append_extend (test_FieldList.FieldTest) ... ok
test_FieldList_count (test_FieldList.FieldTest) ... ok
test_FieldList_select_by_construct (test_FieldList.FieldTest) ... ok
test_FieldList_select (test_FieldList.FieldTest) ... ok
test_FieldList_copy (test_FieldList.FieldTest) ... ok
test_FieldList__mul__imul__ (test_FieldList.FieldTest) ... ok
test_FieldList_insert_pop_remove (test_FieldList.FieldTest) ... ok
test_FieldList_select_field (test_FieldList.FieldTest) ... ok
test_FieldList__add__iadd__ (test_FieldList.FieldTest) ... ok
test_FieldList__getslice__ (test_FieldList.FieldTest) ... ok
test_FieldList__contains__ (test_FieldList.FieldTest) ... ok
test_FieldList_close (test_FieldList.FieldTest) ... ERROR
test_geometry_interior_ring (test_geometry.DSGTest) ... ok
test_geometry_3 (test_geometry.DSGTest) ... ok
test_geometry_interior_ring_close (test_geometry.DSGTest) ... ERROR
test_geometry_interior_ring_flatten (test_geometry.DSGTest) ... ok
test_geometry_interior_ring_files (test_geometry.DSGTest) ... ERROR
test_geometry_interior_ring_roll (test_geometry.DSGTest) ... ok
test_geometry_interior_ring_flip (test_geometry.DSGTest) ... ok
test_geometry_2 (test_geometry.DSGTest) ... ok
test_node_count (test_geometry.DSGTest) ... ok
test_geometry_4 (test_geometry.DSGTest) ... ok
test_Query__or__ (test_Query.QueryTest) ... ok
test_Query_iscontains (test_Query.QueryTest) ... ok
test_Query_evaluate (test_Query.QueryTest) ... ok
test_Query_contains (test_Query.QueryTest) ... ok
test_Query_year_month_day_hour_minute_second (test_Query.QueryTest) ... ok
test_Query_set_condition_units (test_Query.QueryTest) ... ok
test_Query_object_units (test_Query.QueryTest)
Check units are processed correctly in and from queries. ... ok
test_Query__and__ (test_Query.QueryTest) ... ok
test_Query_dteq_dtne_dtge_dtgt_dtle_dtlt (test_Query.QueryTest) ... ok
test_Query_as_where_condition (test_Query.QueryTest)
Check queries work correctly as conditions in 'where' ... ok
test_Query_datetime1 (test_Query.QueryTest) ... ok
test_Query (test_Query.QueryTest) ... ok
test_DomainAncillary (test_DomainAncillary.DomainAncillaryTest) ... ok
test_curl_xy (test_Maths.MathTest) ... ok
test_div_xy (test_Maths.MathTest) ... ok
test_relative_vorticity_distance (test_Maths.MathTest) ... ok
test_relative_vorticity_latlong (test_Maths.MathTest) ... ok
test_differential_operators (test_Maths.MathTest) ... ok
test_Configuration (test_functions.functionTest) ... ok
test_Constant (test_functions.functionTest) ... ok
test_example_field (test_functions.functionTest) ... ok
test_indices_shape (test_functions.functionTest) ... ok
test_aliases (test_functions.functionTest) ... ok
test_configuration (test_functions.functionTest) ... ok
test_context_managers (test_functions.functionTest) ... ok
test_environment (test_functions.functionTest) ... ok
test_keyword_deprecation (test_functions.functionTest) ... ok
test_hash_array (test_functions.functionTest) ... ok
test_Data_compressed_array (test_Data.DataTest)
Test the `compressed_array` Data property. ... ok
test_Data_any (test_Data.DataTest)
Test the `any` Data method. ... ok
test_Data_uncompress (test_Data.DataTest)
Test the `uncompress` Data method. ... ok
test_Data_halo (test_Data.DataTest)
Test the `halo` Data method. ... ok
test_Data__contains__ (test_Data.DataTest)
Test containment checking against Data. ... ok
test_Data_clip (test_Data.DataTest)
Test the `clip` Data method. ... ok
test_Data_reshape (test_Data.DataTest)
Test the `reshape` Data method. ... ok
test_Data_min (test_Data.DataTest)
Test the `min` Data method. ... ok
test_Data_chunks (test_Data.DataTest)
Test the `chunks` Data property. ... ok
test_Data_log (test_Data.DataTest)
Test the `log` Data method. ... ok
test_Data_del_calendar (test_Data.DataTest)
Test the `del_calendar` Data method. ... ok
test_Data_percentile_median (test_Data.DataTest)
Test the `percentile` and `median` Data methods. ... ok
test_Data_convolution_filter (test_Data.DataTest)
Test the `convolution_filter` Data method. ... ok
test_Data_compressed (test_Data.DataTest)
Test the `compressed` Data method. ... ok
test_Data_override_units (test_Data.DataTest)
Test the `override_units` Data method. ... ok
test_Data_flatten (test_Data.DataTest)
Test the `flatten` Data method. ... ok
test_Data_ceil (test_Data.DataTest)
Test the `ceil` Data method. ... ok
test_Data__init__dtype_mask (test_Data.DataTest)
Test `__init__` for Data with `dtype` and `mask` keywords. ... ok
test_Data_get_list (test_Data.DataTest)
Test the `get_list` Data method. ... ok
test_Data_override_calendar (test_Data.DataTest)
Test the `override_calendar` Data method. ... ok
test_Data_max (test_Data.DataTest)
Test the `max` Data method. ... ok
test_Data_std (test_Data.DataTest)
Test the `std` Data method. ... ok
test_Data__bool__ (test_Data.DataTest)
Test the `__bool__` Data method. ... ok
test_Data_mask (test_Data.DataTest)
Test the `mask` Data property. ... ok
test_Data_del_units (test_Data.DataTest)
Test the `del_units` Data method. ... ok
test_Data_collapse_dtype (test_Data.DataTest)
Test the `dtype` property after collapse Data methods. ... ok
test_Data_filled (test_Data.DataTest)
Test the `filled` Data method. ... ok
test_Data_count_masked (test_Data.DataTest)
Test the `count_masked` Data method. ... ok
test_Data_cumsum (test_Data.DataTest)
Test the `cumsum` Data method. ... ok
test_Data_rechunk (test_Data.DataTest)
Test the `rechunk` Data method. ... ok
test_Data_all (test_Data.DataTest)
Test the `all` Data method. ... ok
test_Data_mean_of_upper_decile (test_Data.DataTest)
Test the `mean_of_upper_decile` Data method. ... ok
test_Data_hardmask (test_Data.DataTest)
Test the `hardmask` Data property. ... ok
test_Data_concatenate (test_Data.DataTest)
Test the `concatenate` Data method. ... ERROR
test_Data_set_calendar (test_Data.DataTest)
Test the `set_calendar` Data method. ... ok
test_Data_count (test_Data.DataTest)
Test the `count` Data method. ... ok
test_Data_integral (test_Data.DataTest)
Test the `integral` Data method. ... ok
test_Data_to_dask_array (test_Data.DataTest)
Test the `to_dask_array` Data method. ... ok
test_Data_allclose (test_Data.DataTest)
Test the `allclose` Data method. ... ok
test_Data_get_data (test_Data.DataTest)
Test the `get_data` Data method. ... ok
test_Data_zeros (test_Data.DataTest)
Test the `zeros` Data method. ... ok
test_Data_ones (test_Data.DataTest)
Test the `ones` Data method. ... ok
test_Data_argmax (test_Data.DataTest)
Test the `argmax` Data method. ... ok
test_Data_Units (test_Data.DataTest)
Test the `Units` Data property. ... ok
test_Data__getitem__ (test_Data.DataTest)
Test the access of data elements from Data. ... ok
test_Data_inspect (test_Data.DataTest)
Test the `inspect` Data method. ... ok
test_Data_isclose (test_Data.DataTest)
Test the `isclose` Data method. ... FAIL
test_Data_sum_of_weights2 (test_Data.DataTest)
Test the `sum_of_weights2` Data method. ... ok
test_Data_masked_all (test_Data.DataTest)
Test the `masked_all` Data method. ... ok
test_Data_apply_masking (test_Data.DataTest)
Test the `apply_masking` Field method. ... ok
test_Data_unique (test_Data.DataTest)
Test the `unique` Data method. ... ok
test_Data_var (test_Data.DataTest)
Test the `var` Data method. ... ok
test_Data_masked_invalid (test_Data.DataTest)
Test the `masked_invalid` Data method. ... ok
test_Data_floor (test_Data.DataTest)
Test the `floor` Data method. ... ok
test_Data_minimum_absolute_value (test_Data.DataTest)
Test the `minimum_absolute_value` Data method. ... ok
test_Data_rtol (test_Data.DataTest)
Test the `_rtol` Data property. ... ok
test_Data_equals (test_Data.DataTest)
Test the equality-testing Data method. ... ERROR
test_Data__str__ (test_Data.DataTest)
Test `Data.__str__` ... ok
test_Data_trunc (test_Data.DataTest)
Test the `trunc` Data method. ... ok
test_Data_square (test_Data.DataTest)
Test the `square` Data method. ... ok
test_Data_fits_in_memory (test_Data.DataTest)
Test the `fits_in_memory` Data method. ... ok
test_Data_rint (test_Data.DataTest)
Test the `rint` Data method. ... ok
test_Data_cyclic (test_Data.DataTest)
Test the `cyclic` Data method. ... ok
test_Data_harden_mask (test_Data.DataTest)
Test the `harden_mask` Data method. ... ok
test_Data_maximum_absolute_value (test_Data.DataTest)
Test the `maximum_absolute_value` Data method. ... ok
test_Data_roll (test_Data.DataTest)
Test the `roll` Data method. ... ok
test_Data_BROADCASTING (test_Data.DataTest)
Test broadcasting of arrays in binary Data operations. ... ok
test_Data_trigonometric_hyperbolic (test_Data.DataTest)
Test the trigonometric and hyperbolic Data methods. ... ok
test_Data_sum_of_squares (test_Data.DataTest)
Test the `sum_of_squares` Data method. ... ok
test_Data_mean_absolute_value (test_Data.DataTest)
Test the `mean_absolute_value` Data method. ... ok
test_Data_asdata (test_Data.DataTest)
Test the `asdata` Data method. ... ok
test_Data_ndindex (test_Data.DataTest)
Test the `ndindex` Data method. ... ok
test_Data_cached_arithmetic_units (test_Data.DataTest)
Test arithmetic with, and units of, Data cached to disk. ... ok
test_Data_digitize (test_Data.DataTest)
Test the `digitize` Data method. ... ok
test_Data__float__ (test_Data.DataTest)
Test the `__float__` Data method. ... ok
test_Data_mean (test_Data.DataTest)
Test the `mean` Data method. ... ok
test_Data__len__ (test_Data.DataTest)
Test the `__len__` Data method. ... ok
test_Data__init__basic (test_Data.DataTest)
Test basic `__init__` cases for Data. ... ok
test_Data_swapaxes (test_Data.DataTest)
Test the `swapaxes` Data method. ... ok
test_Data_get_calendar (test_Data.DataTest)
Test the `get_calendar` Data method. ... ok
test_Data_collapse_mtol (test_Data.DataTest)
Test the `mtol` keyword to the collapse Data methods. ... ok
test_Data__init__compression (test_Data.DataTest)
Test Data initialised from compressed data sources. ... ok
test_Data_sum_of_weights (test_Data.DataTest)
Test the `sum_of_weights` Data method. ... ok
test_Data__init__datetime (test_Data.DataTest)
Test `Data.__init__` for datetime objects. ... ok
test_Data_collapse_units (test_Data.DataTest)
Test the `Units` property after collapse Data methods. ... ok
test_Data_atol (test_Data.DataTest)
Test the `_atol` Data property. ... ok
test_Data_transpose (test_Data.DataTest)
Test the `transpose` Data method. ... ok
test_Data_dump (test_Data.DataTest)
Test the `dump` Data method. ... ok
test_Data_stats (test_Data.DataTest)
Test the `stats` Data method. ... ok
test_Data__setitem__ (test_Data.DataTest)
Test the assignment of data elements on Data. ... ok
test_Data_outerproduct (test_Data.DataTest)
Test the `outerproduct` Data method. ... ok
test_Data_asdatetime_asreftime_isdatetime (test_Data.DataTest)
Test the `{as, is}datetime` and `asreftime` methods. ... ok
test_Data_full (test_Data.DataTest)
Test the `full` Data method. ... ok
test_Data_datetime_array (test_Data.DataTest)
Test the `datetime_array` Data property. ... ok
test_Data_compute (test_Data.DataTest)
Test the `compute` Data method. ... ok
test_Data_soften_mask (test_Data.DataTest)
Test the `soften_mask` Data method. ... ok
test_Data_data (test_Data.DataTest)
Test the `data` Data property. ... ok
test_Data_where (test_Data.DataTest)
Test the `where` Data method. ... ok
test_Data_year_month_day_hour_minute_second (test_Data.DataTest)
Test the datetime component Data properties e.g. `day`. ... ok
test_Data_section (test_Data.DataTest)
Test the `section` Data method. ... ok
test_Data_has_calendar (test_Data.DataTest)
Test the `has_calendar` Data method. ... ok
test_Data_get_units (test_Data.DataTest)
Test the `get_units` Data method. ... ok
test_Data_get_count (test_Data.DataTest)
Test the `get_count` Data method. ... ok
test_Data__iter__ (test_Data.DataTest)
Test the `__iter__` Data method. ... ok
test_Data_datum (test_Data.DataTest)
Test the `datum` Data method. ... ok
test_Data_diff (test_Data.DataTest)
Test the `diff` Data method. ... ok
test_Data_root_mean_square (test_Data.DataTest)
Test the `root_mean_square` Data method. ... ok
test_Data_tolist (test_Data.DataTest)
Test the `tolist` Data method. ... ok
test_Data_sum (test_Data.DataTest)
Test the `sum` Data method. ... ok
test_Data_collapse_keepdims (test_Data.DataTest)
Test the dimensions of outputs of collapse Data methods. ... ok
test_Data_array (test_Data.DataTest)
Test the `array` Data property. ... ok
test_Data_sample_size (test_Data.DataTest)
Test the `sample_size` Data method. ... ok
test_Data__int__ (test_Data.DataTest)
Test the `__int__` Data method. ... ok
test_Data_mid_range (test_Data.DataTest)
Test the `mid_range` Data method. ... ok
test_Data_exp (test_Data.DataTest)
Test the `exp` Data method. ... ok
test_Data_get_index (test_Data.DataTest)
Test the `get_index` Data method. ... ok
test_Data_has_units (test_Data.DataTest)
Test the `has_units` Data method. ... ok
test_Data_set_units (test_Data.DataTest)
Test the `set_units` Data method. ... ok
test_Data_get_compressed (test_Data.DataTest)
Test the Data methods which get compression properties. ... ok
test_Data_BINARY_AND_UNARY_OPERATORS (test_Data.DataTest)
Test arithmetic, logical and comparison operators on Data. ... ok
test_Data_persist (test_Data.DataTest)
Test the `persist` Data method. ... ok
test_Data_change_calendar (test_Data.DataTest)
Test the `change_calendar` Data method. ... ok
test_Data_flip (test_Data.DataTest)
Test the `flip` Data method. ... ok
test_Data_fill_value (test_Data.DataTest)
Test the `fill_value` Data property. ... ok
test_Data_flat (test_Data.DataTest)
Test the `flat` Data method. ... ok
test_Data_sqrt (test_Data.DataTest)
Test the `sqrt` Data method. ... ok
test_Data_range (test_Data.DataTest)
Test the `range` Data method. ... ok
test_Data_squeeze_insert_dimension (test_Data.DataTest)
Test the `squeeze` and `insert_dimension` Data methods. ... ok
test_Data_empty (test_Data.DataTest)
Test the `empty` Data method. ... ok
test_Data_func (test_Data.DataTest)
Test the `func` Data method. ... ok
test_Data_months_years (test_Data.DataTest)
Test Data with 'months/years since' units specifications. ... skipped "Failing due to 'has_year_zero' differences in actual and expected outputs: relates to github.com/Unidata/cftime/issues/233, see also NCAS-CMS/cfunits/commit/ca15e7f6db76fe613db740993b4e45115341d865."
test_Data_round (test_Data.DataTest)
Test the `round` Data method. ... ok
test_Data_binary_mask (test_Data.DataTest)
Test the `binary_mask` Data property. ... ok
test_Data_Utils_unique_calendars (test_Data_utils.DataUtilsTest)
TODO. ... ok
test_Data_Utils_convert_to_datetime (test_Data_utils.DataUtilsTest)
TODO. ... ok
test_Data_Utils_first_non_missing_value (test_Data_utils.DataUtilsTest)
TODO. ... ok
test_Data_Utils_conform_units (test_Data_utils.DataUtilsTest) ... ok
test_Data_Utils__is_numeric_dtype (test_Data_utils.DataUtilsTest)
TODO. ... ok
test_Data_Utils_convert_to_reftime (test_Data_utils.DataUtilsTest)
TODO. ... ok
test_Data_Utils__da_ma_allclose (test_Data_utils.DataUtilsTest)
TODO. ... FAIL
test_Field_regrids (test_regrid.RegridTest) ... ERROR
test_Field_regrids_operator (test_regrid.RegridTest) ... ERROR
test_Field_regridc (test_regrid.RegridTest) ... ERROR
test_Field_regridc_operator (test_regrid.RegridTest) ... ERROR
test_Field_regrid_size1_dimensions (test_regrid.RegridTest) ... ERROR
test_cfa (test_cfa.cfaTest) ... ok
test_cfa_base (test_cfa.cfaTest) ... ERROR
test_DomainAxis__repr__str (test_DomainAxis.DomainAxisTest) ... ok
test_DomainAxis (test_DomainAxis.DomainAxisTest) ... ok
test_GENERAL (test_general.generalTest) ... ERROR
test_CoordinateReference_structural_signature (test_CoordinateReference.CoordinateReferenceTest) ... ok
test_CoordinateReference_equals (test_CoordinateReference.CoordinateReferenceTest) ... ok
test_CoordinateReference_default_value (test_CoordinateReference.CoordinateReferenceTest) ... ok
test_CoordinateReference_canonical_units (test_CoordinateReference.CoordinateReferenceTest) ... ok
test_CoordinateReference__repr__str__dump (test_CoordinateReference.CoordinateReferenceTest) ... ok
test_CoordinateReference_get__getitem__ (test_CoordinateReference.CoordinateReferenceTest) ... ok
test_CoordinateReference_match (test_CoordinateReference.CoordinateReferenceTest) ... ok
test_AuxiliaryCoordinate__repr__str__dump (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_bounds (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_cyclic (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_count (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_insert_dimension (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_log_exp (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_rint (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_ceil (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_masked_invalid (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_clip (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_roll (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_squeeze (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_floor (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_properties (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_trunc (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_sin_cos_tan (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_round (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_AuxiliaryCoordinate_transpose (test_AuxiliaryCoordinate.AuxiliaryCoordinateTest) ... ok
test_Constructs__repr__ (test_Constructs.ConstructsTest)
Test all means of Construct inspection. ... ok
test_Constructs_filter_by_naxes (test_Constructs.ConstructsTest)
Test the `filter_by_naxes` Constructs method. ... ok
test_FieldAncillary_insert_dimension (test_FieldAncillary.FieldAncillaryTest) ... ok
test_FieldAncillary_source (test_FieldAncillary.FieldAncillaryTest) ... ok
test_FieldAncillary (test_FieldAncillary.FieldAncillaryTest) ... ok
test_FieldAncillary_squeeze (test_FieldAncillary.FieldAncillaryTest) ... ok
test_FieldAncillary_properties (test_FieldAncillary.FieldAncillaryTest) ... ok
test_FieldAncillary_transpose (test_FieldAncillary.FieldAncillaryTest) ... ok
test_DimensionCoordinate_binary_operation (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_set_bounds (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_unary_operation (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_cellsize (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate__setitem__ (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_properties (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_override_calendar (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_insert_dimension (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_override_units (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensiconCoordinate__getitem__ (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate__repr__str__dump (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_convert_reference_time (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_set_data (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_bounds (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DimensionCoordinate_roll (test_DimensionCoordinate.DimensionCoordinateTest) ... ok
test_DSG_indexed_contiguous (test_dsg.DSGTest) ... ERROR
test_DSG_indexed (test_dsg.DSGTest) ... ok
test_DSG_contiguous (test_dsg.DSGTest) ... ok
test_DSG_create_contiguous (test_dsg.DSGTest) ... ok
test_Datetime_st2dt (test_Datetime.DatetimeTest) ... ok
test_Datetime_rt2dt (test_Datetime.DatetimeTest) ... ok
test_Datetime_dt_vector (test_Datetime.DatetimeTest) ... ok
test_Datetime_dt2rt (test_Datetime.DatetimeTest) ... ok
test_Datetime_Data (test_Datetime.DatetimeTest) ... ok
test_Datetime (test_Datetime.DatetimeTest) ... ok
test_EXTERNAL_AGGREGATE (test_external.ExternalVariableTest) ... ok
test_EXTERNAL_READ (test_external.ExternalVariableTest) ... ok
test_EXTERNAL_WRITE (test_external.ExternalVariableTest) ... ok
test_groups_geometry (test_groups.GroupsTest) ... FAIL
test_groups_dimension (test_groups.GroupsTest) ... ok
test_groups_compression (test_groups.GroupsTest) ... ERROR
test_groups (test_groups.GroupsTest) ... FAIL
test_CellMeasure_measure (test_CellMeasure.CellMeasureTest) ... ok
test_CellMeasure_identity (test_CellMeasure.CellMeasureTest) ... ok
test_CellMeasure__repr__str__dump (test_CellMeasure.CellMeasureTest) ... ok
test_GATHERING_create (test_gathering.DSGTest) ... ok
test_GATHERING (test_gathering.DSGTest) ... ok
test_PP_extra_data (test_pp.ppTest) ... ok
test_PP_WGDOS_UNPACKING (test_pp.ppTest) ... ok
test_PP_read_select (test_pp.ppTest) ... ok
test_stash2standard_name (test_pp.ppTest) ... ok
test_PP_read_um (test_pp.ppTest) ... ok
test_load_stash2standard_name (test_pp.ppTest) ... ok
test_Count__repr__str__dump (test_Count.CountTest) ... ok
test_CellMethod_get_set_delete (test_CellMethod.CellMethodTest) ... ok
test_CellMethod__repr__str__ (test_CellMethod.CellMethodTest) ... ok
test_CellMethod_intervals (test_CellMethod.CellMethodTest) ... ok
test_CellMethod_equals (test_CellMethod.CellMethodTest) ... ok
test_CellMethod_equivalent (test_CellMethod.CellMethodTest) ... ok
test_pep8_compliance (test_style.styleTest) ... ../read_write/netcdf/netcdfread.py:552:29: W292 no newline at end of file
FAIL
test_aggregate_verbosity (test_aggregate.aggregateTest) ... ok
test_aggregate_keyword_consistency (test_aggregate.aggregateTest)
Test acceptable keyword combinations. ... ok
test_aggregate_equal_equal_all (test_aggregate.aggregateTest) ... ok
test_aggregate_exist_equal_ignore_opts (test_aggregate.aggregateTest) ... ok
test_basic_aggregate (test_aggregate.aggregateTest) ... ERROR
test_aggregate_domain (test_aggregate.aggregateTest) ... ok
test_aggregate_dimension (test_aggregate.aggregateTest)
Test the promotion of property to axis. ... /home/sadie/cf-python/cf/functions.py:1701: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  return np.all(a == b)
ok
test_aggregate_bad_units (test_aggregate.aggregateTest) ... ok
test_aggregate_exist_exist_all (test_aggregate.aggregateTest) ... ok
test_RegridOperator (unittest.loader._FailedTest) ... ERROR
test_manage_log_level_via_verbose_attr (test_decorators.DecoratorsTest) ... ok
test_deprecated_kwarg_check (test_decorators.DecoratorsTest) ... ERROR
test_Field_collapse_GROUPS (test_collapse.Field_collapseTest) ... ok
test_Field_collapse_CLIMATOLOGICAL_TIME (test_collapse.Field_collapseTest) ... ERROR
test_Field_collapse_WEIGHTS (test_collapse.Field_collapseTest) ... ok
test_Field_collapse (test_collapse.Field_collapseTest) ... FAIL
test_docstring_docstring_substitutions (test_docstring.DocstringTest) ... ok
test_docstring_classmethod (test_docstring.DocstringTest) ... ok
test_docstring (test_docstring.DocstringTest) ... FAIL
test_docstring_class (test_docstring.DocstringTest) ... ERROR
test_docstring_package (test_docstring.DocstringTest) ... ERROR
test_docstring_staticmethod (test_docstring.DocstringTest) ... ok
test_docstring_default (test_docstring.DocstringTest) ... ok
test_docstring_repr (test_docstring.DocstringTest) ... ok

======================================================================
ERROR: test_write_netcdf_mode (test_read_write.read_writeTest)
Test the `mode` parameter to `write`, notably append mode.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_read_write.py", line 342, in test_write_netcdf_mode
    cf.write(ex_field, tmpfile, fmt=fmt, mode="a")
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/write.py", line 751, in write
    netcdf.write(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 4741, in write
    effective_fields = self._NetCDFRead(self.implementation).read(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 1348, in read
    geometry_ncvar = self._parse_geometry(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 2199, in _parse_geometry
    nodes_per_geometry = self._create_Count(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 4988, in _create_Count
    data = self._create_data(ncvar, variable, uncompress_override=True)
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 199, in _create_data
    if not self._is_cfa_variable(ncvar):
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 245, in _is_cfa_variable
    if not g["cfa"] or ncvar in g["external_variables"]:
KeyError: 'cfa'

======================================================================
ERROR: test_read_broken_bounds (test_read_write.read_writeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_read_write.py", line 790, in test_read_broken_bounds
    f = cf.read(self.broken_bounds, verbose=0)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/read.py", line 781, in read
    file_contents = _read_a_file(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/read.py", line 1008, in _read_a_file
    out = netcdf.read(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 1437, in read
    field_or_domain = self._create_field_or_domain(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 3106, in _create_field_or_domain
    coord = self._create_dimension_coordinate(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 4456, in _create_dimension_coordinate
    return self._create_bounded_construct(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 4592, in _create_bounded_construct
    data = self._create_data(ncvar, c, parent_ncvar=field_ncvar)
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 201, in _create_data
    return super()._create_data(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 5661, in _create_data
    data = self._create_Data(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 313, in _create_Data
    self._cache_data_elements(data, ncvar)
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 498, in _cache_data_elements
    value = value.item()
ValueError: can only convert an array of size 1 to a Python scalar

======================================================================
ERROR: test_read_write_string (test_read_write.read_writeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_read_write.py", line 761, in test_read_write_string
    f = cf.read(self.string_filename)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/read.py", line 781, in read
    file_contents = _read_a_file(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/read.py", line 1008, in _read_a_file
    out = netcdf.read(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 1437, in read
    field_or_domain = self._create_field_or_domain(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 3181, in _create_field_or_domain
    data = self._create_data(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 201, in _create_data
    return super()._create_data(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 5661, in _create_data
    data = self._create_Data(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 313, in _create_Data
    self._cache_data_elements(data, ncvar)
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 498, in _cache_data_elements
    value = value.item()
AttributeError: 'str' object has no attribute 'item'

======================================================================
ERROR: test_Field_compress_uncompress (test_Field.FieldTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_Field.py", line 171, in test_Field_compress_uncompress
    c = cf.read(tmpfile)[0]
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/read.py", line 781, in read
    file_contents = _read_a_file(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/read.py", line 1008, in _read_a_file
    out = netcdf.read(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 1437, in read
    field_or_domain = self._create_field_or_domain(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 3181, in _create_field_or_domain
    data = self._create_data(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 201, in _create_data
    return super()._create_data(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 5661, in _create_data
    data = self._create_Data(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 313, in _create_Data
    self._cache_data_elements(data, ncvar)
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 498, in _cache_data_elements
    value = value.item()
AttributeError: 'str' object has no attribute 'item'

======================================================================
ERROR: test_Field_collapse (test_Field.FieldTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_Field.py", line 479, in test_Field_collapse
    a = f.collapse(method, axes=axes, weights=weights).data
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 8813, in collapse
    getattr(f.data, method)(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/data/data.py", line 5987, in mean
    d, _ = _collapse(
  File "/home/sadie/cf-python/cf/data/data.py", line 11835, in _collapse
    weights = _parse_weights(d, weights, axis)
  File "/home/sadie/cf-python/cf/data/data.py", line 11956, in _parse_weights
    value = value.transpose(skey)
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/data/data.py", line 10318, in transpose
    iaxes = d._parse_axes(axes)
  File "/home/sadie/cfdm/cfdm/data/data.py", line 801, in _parse_axes
    raise ValueError(f"Invalid axis: {axis!r}")
ValueError: Invalid axis: 2

======================================================================
ERROR: test_FieldList_close (test_FieldList.FieldTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_FieldList.py", line 61, in test_FieldList_close
    self.assertIsNone(f.close())
  File "/home/sadie/cf-python/cf/constructlist.py", line 263, in close
    f.close()
  File "/home/sadie/cf-python/cf/field.py", line 4986, in close
    super().close()
  File "/home/sadie/cf-python/cf/mixin/propertiesdata.py", line 2520, in close
    data.close()
  File "/home/sadie/cf-python/cf/data/mixin/deprecations.py", line 304, in close
    _DEPRECATION_ERROR_METHOD(
  File "/home/sadie/cf-python/cf/functions.py", line 3210, in _DEPRECATION_ERROR_METHOD
    raise DeprecationError(
cf.functions.DeprecationError: Data method 'close' has been deprecated at version TODODASKVER and is no longer available and will be removed at version 5.0.0. All files are now automatically closed when not being accessed.

======================================================================
ERROR: test_geometry_interior_ring_close (test_geometry.DSGTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_geometry.py", line 311, in test_geometry_interior_ring_close
    self.assertIsNone(f.close())
  File "/home/sadie/cf-python/cf/field.py", line 4986, in close
    super().close()
  File "/home/sadie/cf-python/cf/mixin/propertiesdata.py", line 2520, in close
    data.close()
  File "/home/sadie/cf-python/cf/data/mixin/deprecations.py", line 304, in close
    _DEPRECATION_ERROR_METHOD(
  File "/home/sadie/cf-python/cf/functions.py", line 3210, in _DEPRECATION_ERROR_METHOD
    raise DeprecationError(
cf.functions.DeprecationError: Data method 'close' has been deprecated at version TODODASKVER and is no longer available and will be removed at version 5.0.0. All files are now automatically closed when not being accessed.

======================================================================
ERROR: test_geometry_interior_ring_files (test_geometry.DSGTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_geometry.py", line 316, in test_geometry_interior_ring_files
    self.assertTrue(isinstance(f.get_filenames(), set))
  File "/home/sadie/cf-python/cf/mixin/propertiesdata.py", line 4894, in get_filenames
    _DEPRECATION_ERROR_METHOD(
  File "/home/sadie/cf-python/cf/functions.py", line 3210, in _DEPRECATION_ERROR_METHOD
    raise DeprecationError(
cf.functions.DeprecationError: Field method 'get_filenames' has been deprecated at version 3.0.0 and is no longer available. Consider using the 'get_original_filenames' method instead.

======================================================================
ERROR: test_Data_concatenate (test_Data.DataTest)
Test the `concatenate` Data method.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_Data.py", line 1115, in test_Data_concatenate
    with self.assertLogs(level=cf.log_level().value) as catch:
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/unittest/case.py", line 348, in __enter__
    logger.setLevel(self.level)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/logging/__init__.py", line 1421, in setLevel
    self.level = _checkLevel(level)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/logging/__init__.py", line 198, in _checkLevel
    raise ValueError("Unknown level: %r" % level)
ValueError: Unknown level: 'DISABLE'

======================================================================
ERROR: test_Data_equals (test_Data.DataTest)
Test the equality-testing Data method.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_Data.py", line 168, in test_Data_equals
    with self.assertLogs(level=cf.log_level().value) as catch:
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/unittest/case.py", line 348, in __enter__
    logger.setLevel(self.level)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/logging/__init__.py", line 1421, in setLevel
    self.level = _checkLevel(level)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/logging/__init__.py", line 198, in _checkLevel
    raise ValueError("Unknown level: %r" % level)
ValueError: Unknown level: 'DISABLE'

======================================================================
ERROR: test_Field_regrids (test_regrid.RegridTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/data/data.py", line 10328, in transpose
    dx = da.transpose(dx, axes=axes)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/array/routines.py", line 181, in transpose
    if axes:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_regrid.py", line 57, in test_Field_regrids
    r = f1.regrids(f2, "conservative")
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 15439, in regrids
    src_data = src_data.transpose(src_order).array
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/data/data.py", line 10330, in transpose
    raise ValueError(
ValueError: Can't transpose: Axes don't match array: [1 0]

======================================================================
ERROR: test_Field_regrids_operator (test_regrid.RegridTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/data/data.py", line 10328, in transpose
    dx = da.transpose(dx, axes=axes)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/array/routines.py", line 181, in transpose
    if axes:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_regrid.py", line 149, in test_Field_regrids_operator
    op = f1.regrids(f2, "conservative", return_operator=True)
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 15439, in regrids
    src_data = src_data.transpose(src_order).array
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/data/data.py", line 10330, in transpose
    raise ValueError(
ValueError: Can't transpose: Axes don't match array: [1 0]

======================================================================
ERROR: test_Field_regridc (test_regrid.RegridTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_regrid.py", line 98, in test_Field_regridc
    f3.equals(f1.regridc(f2, axes="T", method="linear")),
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 16183, in regridc
    subsections = d.data.section(
  File "/home/sadie/cf-python/cf/data/data.py", line 11423, in section
    _DEPRECATION_ERROR_KWARGS(
  File "/home/sadie/cf-python/cf/functions.py", line 3177, in _DEPRECATION_ERROR_KWARGS
    raise DeprecationError(
cf.functions.DeprecationError: Keyword 'chunks' of method 'Data.section' has been deprecated at version TODODASKVER and is no longer available and will be removed at version 5.0.0. Consider using Data.rechunk() instead.

======================================================================
ERROR: test_Field_regridc_operator (test_regrid.RegridTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_regrid.py", line 196, in test_Field_regridc_operator
    op = f1.regridc(
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 16183, in regridc
    subsections = d.data.section(
  File "/home/sadie/cf-python/cf/data/data.py", line 11423, in section
    _DEPRECATION_ERROR_KWARGS(
  File "/home/sadie/cf-python/cf/functions.py", line 3177, in _DEPRECATION_ERROR_KWARGS
    raise DeprecationError(
cf.functions.DeprecationError: Keyword 'chunks' of method 'Data.section' has been deprecated at version TODODASKVER and is no longer available and will be removed at version 5.0.0. Consider using Data.rechunk() instead.

======================================================================
ERROR: test_Field_regrid_size1_dimensions (test_regrid.RegridTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/data/data.py", line 10328, in transpose
    dx = da.transpose(dx, axes=axes)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/array/routines.py", line 181, in transpose
    if axes:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_regrid.py", line 245, in test_Field_regrid_size1_dimensions
    g = f.regrids(f, method="linear")
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 15439, in regrids
    src_data = src_data.transpose(src_order).array
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/data/data.py", line 10330, in transpose
    raise ValueError(
ValueError: Can't transpose: Axes don't match array: [1 0]

======================================================================
ERROR: test_cfa_base (test_cfa.cfaTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_cfa.py", line 58, in test_cfa_base
    cf.write(f, cfa_file, fmt="CFA4", cfa_options={"base": ""})
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/write.py", line 751, in write
    netcdf.write(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 4803, in write
    self._file_io_iteration(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 5072, in _file_io_iteration
    self._write_field_or_domain(f)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 3257, in _write_field_or_domain
    ncvar = self._write_dimension_coordinate(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfwrite.py", line 197, in _write_dimension_coordinate
    return super()._write_dimension_coordinate(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 704, in _write_dimension_coordinate
    extra = self._write_bounds(f, coord, key, ncdimensions, ncvar)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 1339, in _write_bounds
    self._write_netcdf_variable(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 2694, in _write_netcdf_variable
    kwargs = self._customize_createVariable(cfvar, kwargs)
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfwrite.py", line 79, in _customize_createVariable
    raise ValueError(_cfa_message)
ValueError: Writing CFA files has been temporarily disabled, and will return at version 4.0.0. CFA-0.4 functionality is still available at version 3.13.x.

======================================================================
ERROR: test_GENERAL (test_general.generalTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_general.py", line 150, in test_GENERAL
    g.data.to_memory(1)
TypeError: to_memory() takes 1 positional argument but 2 were given

======================================================================
ERROR: test_DSG_indexed_contiguous (test_dsg.DSGTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_dsg.py", line 280, in test_DSG_indexed_contiguous
    cf.write(f, tmpfile, verbose=0)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/write.py", line 751, in write
    netcdf.write(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 4803, in write
    self._file_io_iteration(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 5072, in _file_io_iteration
    self._write_field_or_domain(f)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 3617, in _write_field_or_domain
    coordinates = self._write_auxiliary_coordinate(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfwrite.py", line 275, in _write_auxiliary_coordinate
    return super()._write_auxiliary_coordinate(f, key, coord, coordinates)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 2115, in _write_auxiliary_coordinate
    already_in_file = self._already_in_file(coord, ncdimensions)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfwrite.py", line 1121, in _already_in_file
    if self.implementation.equal_components(
  File "/home/sadie/cfdm/cfdm/cfdmimplementation.py", line 1170, in equal_components
    return construct0.equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/mixin/propertiesdata.py", line 2964, in equals
    return super().equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/mixin/propertiesdatabounds.py", line 1020, in equals
    if not self._equals(
  File "/home/sadie/cfdm/cfdm/mixin/container.py", line 137, in _equals
    return eq(y, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/mixin/propertiesdata.py", line 2964, in equals
    return super().equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/mixin/propertiesdata.py", line 807, in equals
    if not self._equals(
  File "/home/sadie/cfdm/cfdm/mixin/container.py", line 137, in _equals
    return eq(y, **kwargs)
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/data/data.py", line 7129, in equals
    if not result.compute():
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/base.py", line 312, in compute
    (result,) = compute(self, traverse=False, **kwargs)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/base.py", line 600, in compute
    results = schedule(dsk, keys, **kwargs)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 554, in get_sync
    return get_async(
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 497, in get_async
    for key, res_info, failed in queue_get(queue).result():
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/concurrent/futures/_base.py", line 437, in result
    return self.__get_result()
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 539, in submit
    fut.set_result(fn(*args, **kwargs))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 235, in batch_execute_tasks
    return [execute_task(*a) for a in it]
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 235, in <listcomp>
    return [execute_task(*a) for a in it]
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 226, in execute_task
    result = pack_exception(e, dumps)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 221, in execute_task
    result = _execute_task(task, data)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/core.py", line 119, in _execute_task
    return func(*(_execute_task(a, cache) for a in args))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/optimization.py", line 990, in __call__
    return core.get(self.dsk, self.outkey, dict(zip(self.inkeys, args)))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/core.py", line 149, in get
    result = _execute_task(task, cache)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/core.py", line 119, in _execute_task
    return func(*(_execute_task(a, cache) for a in args))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/utils.py", line 41, in apply
    return func(*args, **kwargs)
  File "<__array_function__ internals>", line 180, in all
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/numpy/core/fromnumeric.py", line 2487, in all
    return _wrapreduction(a, np.logical_and, 'all', axis, None, out,
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/numpy/core/fromnumeric.py", line 86, in _wrapreduction
    return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
numpy.AxisError: axis 1 is out of bounds for array of dimension 1

======================================================================
ERROR: test_groups_compression (test_groups.GroupsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_groups.py", line 289, in test_groups_compression
    g = cf.read(ungrouped_file)[0]
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/read.py", line 781, in read
    file_contents = _read_a_file(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/read_write/read.py", line 1008, in _read_a_file
    out = netcdf.read(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 1437, in read
    field_or_domain = self._create_field_or_domain(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 3181, in _create_field_or_domain
    data = self._create_data(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 201, in _create_data
    return super()._create_data(
  File "/home/sadie/cfdm/cfdm/read_write/netcdf/netcdfread.py", line 5661, in _create_data
    data = self._create_Data(
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 313, in _create_Data
    self._cache_data_elements(data, ncvar)
  File "/home/sadie/cf-python/cf/read_write/netcdf/netcdfread.py", line 498, in _cache_data_elements
    value = value.item()
AttributeError: 'str' object has no attribute 'item'

======================================================================
ERROR: test_basic_aggregate (test_aggregate.aggregateTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_aggregate.py", line 43, in test_basic_aggregate
    self.assertTrue(g.equals(g0, verbose=-1), "g != g0")
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/constructlist.py", line 531, in equals
    if not f.equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/mixin/propertiesdata.py", line 2964, in equals
    return super().equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/mixin/fielddomain.py", line 1872, in equals
    if not self.constructs.equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/constructs.py", line 1342, in equals
    if item0.equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/mixin/propertiesdata.py", line 2964, in equals
    return super().equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/mixin/propertiesdatabounds.py", line 988, in equals
    if not super().equals(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cfdm/cfdm/mixin/propertiesdata.py", line 807, in equals
    if not self._equals(
  File "/home/sadie/cfdm/cfdm/mixin/container.py", line 137, in _equals
    return eq(y, **kwargs)
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/data/data.py", line 7129, in equals
    if not result.compute():
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/base.py", line 312, in compute
    (result,) = compute(self, traverse=False, **kwargs)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/base.py", line 600, in compute
    results = schedule(dsk, keys, **kwargs)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 554, in get_sync
    return get_async(
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 497, in get_async
    for key, res_info, failed in queue_get(queue).result():
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/concurrent/futures/_base.py", line 437, in result
    return self.__get_result()
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 539, in submit
    fut.set_result(fn(*args, **kwargs))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 235, in batch_execute_tasks
    return [execute_task(*a) for a in it]
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 235, in <listcomp>
    return [execute_task(*a) for a in it]
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 226, in execute_task
    result = pack_exception(e, dumps)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/local.py", line 221, in execute_task
    result = _execute_task(task, data)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/core.py", line 119, in _execute_task
    return func(*(_execute_task(a, cache) for a in args))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/optimization.py", line 990, in __call__
    return core.get(self.dsk, self.outkey, dict(zip(self.inkeys, args)))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/core.py", line 149, in get
    result = _execute_task(task, cache)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/core.py", line 119, in _execute_task
    return func(*(_execute_task(a, cache) for a in args))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/utils.py", line 41, in apply
    return func(*args, **kwargs)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/array/core.py", line 4787, in _enforce_dtype
    raise ValueError(
ValueError: Inferred dtype from function 'logical_and' was 'bool' but got 'float64', which can't be cast using casting='same_kind'

======================================================================
ERROR: test_RegridOperator (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_RegridOperator
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/data/data.py", line 10328, in transpose
    dx = da.transpose(dx, axes=axes)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/array/routines.py", line 181, in transpose
    if axes:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/unittest/loader.py", line 436, in _find_test_path
    module = self._get_module_from_name(name)
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/sadie/cf-python/cf/test/test_RegridOperator.py", line 10, in <module>
    class RegridOperatorTest(unittest.TestCase):
  File "/home/sadie/cf-python/cf/test/test_RegridOperator.py", line 12, in RegridOperatorTest
    r = f.regrids(f, "conservative", return_operator=True)
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 15439, in regrids
    src_data = src_data.transpose(src_order).array
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 44, in inplace_wrapper
    processed_copy = operation_method(self, *args, **kwargs)
  File "/home/sadie/cf-python/cf/data/data.py", line 10330, in transpose
    raise ValueError(
ValueError: Can't transpose: Axes don't match array: [1 0]


======================================================================
ERROR: test_deprecated_kwarg_check (test_decorators.DecoratorsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_decorators.py", line 101, in test_deprecated_kwarg_check
    test_class.func_2(good_kwarg="good", traceback=True)
  File "/home/sadie/cf-python/cf/test/test_decorators.py", line 33, in func_2
    cf.functions._DEPRECATION_ERROR_KWARGS(
  File "/home/sadie/cf-python/cf/functions.py", line 3162, in _DEPRECATION_ERROR_KWARGS
    raise ValueError("Must provide deprecation version, e.g. '3.14.0'")
ValueError: Must provide deprecation version, e.g. '3.14.0'

======================================================================
ERROR: test_Field_collapse_CLIMATOLOGICAL_TIME (test_collapse.Field_collapseTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/field.py", line 10318, in _collapse_grouped
    f = self.concatenate(fl, axis=iaxis, _preserve=False)
  File "/home/sadie/cf-python/cf/field.py", line 5070, in concatenate
    new_data = Data.concatenate(
  File "/home/sadie/cf-python/cf/data/data.py", line 3581, in concatenate
    data0._set_dask(da.concatenate(dxs, axis=axis))
  File "/home/sadie/anaconda3/envs/cf-env/lib/python3.8/site-packages/dask/array/core.py", line 4104, in concatenate
    meta = _concatenate(seq_metas, axis=axis)
  File "<__array_function__ internals>", line 180, in concatenate
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 4 has 3 dimension(s)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_collapse.py", line 190, in test_Field_collapse_CLIMATOLOGICAL_TIME
    g = f.collapse(
  File "/home/sadie/cf-python/cf/decorators.py", line 72, in precede_with_kwarg_deprecation_check
    operation_method_result = operation_method(self, *args, **kwargs)
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 8685, in collapse
    f = f._collapse_grouped(
  File "/home/sadie/cfdm/cfdm/decorators.py", line 171, in verbose_override_wrapper
    return method_with_verbose_kwarg(*args, **kwargs)
  File "/home/sadie/cf-python/cf/field.py", line 10320, in _collapse_grouped
    raise ValueError(f"Can't collapse: {error}")
ValueError: Can't collapse: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 4 has 3 dimension(s)

======================================================================
ERROR: test_docstring_class (test_docstring.DocstringTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_docstring.py", line 130, in test_docstring_class
    for x in (klass, klass()):
  File "/home/sadie/cf-python/cf/data/array/cfanetcdfarray.py", line 138, in __init__
    from CFAPython import CFAFileFormat
ModuleNotFoundError: No module named 'CFAPython'

======================================================================
ERROR: test_docstring_package (test_docstring.DocstringTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_docstring.py", line 109, in test_docstring_package
    for x in (klass, klass()):
  File "/home/sadie/cf-python/cf/data/array/cfanetcdfarray.py", line 138, in __init__
    from CFAPython import CFAFileFormat
ModuleNotFoundError: No module named 'CFAPython'

======================================================================
FAIL: test_Data_isclose (test_Data.DataTest)
Test the `isclose` Data method.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_Data.py", line 3982, in test_Data_isclose
    self.assertFalse(d.isclose(1.1))
AssertionError: <CF Data(): True> is not false

======================================================================
FAIL: test_Data_Utils__da_ma_allclose (test_Data_utils.DataUtilsTest)
TODO.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_Data_utils.py", line 48, in test_Data_Utils__da_ma_allclose
    self.assertFalse(allclose(e, a).compute())
AssertionError: True is not false

======================================================================
FAIL: test_groups_geometry (test_groups.GroupsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_groups.py", line 180, in test_groups_geometry
    self.assertTrue(f.equals(h[0], verbose=3))
AssertionError: False is not true

======================================================================
FAIL: test_groups (test_groups.GroupsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_groups.py", line 101, in test_groups
    self.assertTrue(f.equals(h[0], verbose=2))
AssertionError: False is not true

======================================================================
FAIL: test_pep8_compliance (test_style.styleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_style.py", line 76, in test_pep8_compliance
    self.assertEqual(
AssertionError: 1 != 0 : Detected 1 PEP8 errors or warnings:

======================================================================
FAIL: test_Field_collapse (test_collapse.Field_collapseTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_collapse.py", line 318, in test_Field_collapse
    self.assertTrue(numpy.allclose(a, g.array[m % 12]))
AssertionError: False is not true

======================================================================
FAIL: test_docstring (test_docstring.DocstringTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sadie/cf-python/cf/test/test_docstring.py", line 98, in test_docstring
    self.assertNotIn(
AssertionError: '{{' unexpectedly found in '**Initialisation**\n\n        :Parameters:\n\n            filename: `str` or `None`\n                The name of the netCDF fragment file containing the\n                array.\n\n            address: `str`, optional\n                The name of the netCDF variable containing the\n                fragment array. Required unless *varid* is set.\n\n            dtype: `numpy.dtype`\n                The data type of the aggregated array. May be `None`\n                if the numpy data-type is not known (which can be the\n                case for netCDF string types, for example). This may\n                differ from the data type of the netCDF fragment\n                variable.\n\n            shape: `tuple`\n                The shape of the fragment within the aggregated\n                array. This may differ from the shape of the netCDF\n                fragment variable in that the latter may have fewer\n                size 1 dimensions.\n\n            units: `str` or `None`, optional\n                The units of the fragment data. Ignored, as the data\n                are all missing values.\n\n            calendar: `str` or `None`, optional\n                The calendar of the fragment data. Ignored, as the data\n                are all missing values.\n\n            {{aggregated_units: `str` or `None`, optional}}"\n\n            {{aggregated_calendar: `str` or `None`, optional}}\n\n            source: optional\n                Initialise the array from the given object.\n\n                Note that if *source* is a `MissingFragmentArray` instance then\n                ``cf.MissingFragmentArray(source=source)`` is equivalent\n                to ``source.copy()``.\n\n            copy: `bool`, optional\n                If True (the default) then deep copy input\n                parameters prior to initialisation, else they are\n                not (deep) copied.\n\n        ' : 
CLASS: <class 'cf.data.fragment.missingfragmentarray.MissingFragmentArray'>
METHOD NAME: __init__
METHOD: <function MissingFragmentArray.__init__ at 0x7fcdc17cadc0>

----------------------------------------------------------------------
Ran 414 tests in 338.133s

FAILED (failures=7, errors=25, skipped=1)

@sadielbartholomew
Copy link
Member Author

sadielbartholomew commented Nov 22, 2022

@davidhassell, please see the opening comment which I have updated; this is where it seems we are at now with this, including my referencing of PRs that should address certain test failures or errors (you may want to check this as all but one of the open PRs are your own). I might blitz some trivial aspects now, namely by reviewing your PR #489 to get test_general passing and put up a PR or two to fix some low-hanging fruit.

@davidhassell
Copy link
Collaborator

Test suite now passes!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dask Relating to the use of Dask
Projects
None yet
Development

No branches or pull requests

2 participants