From 44cbada7a8fccde15728a48ac90cb40d0735d253 Mon Sep 17 00:00:00 2001 From: David Hassell Date: Fri, 6 Nov 2026 09:43:33 +0000 Subject: [PATCH 1/3] feat: extend stub generation to include functions and improve parsing Co-authored-by: aider (openrouter/google/gemini-3.1-pro-preview) --- generate_stub_files.py | 96 +++++++++++++++++++++++++++--------------- 1 file changed, 62 insertions(+), 34 deletions(-) diff --git a/generate_stub_files.py b/generate_stub_files.py index df6a114641..fba09862f1 100644 --- a/generate_stub_files.py +++ b/generate_stub_files.py @@ -21,42 +21,64 @@ def generate_stub_files(rst_path: Path): content = rst_path.read_text(encoding="utf-8") - - # Regular expression to match rubric sections and their - # autosummary entries - # - # Matches: .. rubric:: (Methods|Attributes) ... .. autosummary:: ... [entries] - section_pattern = re.compile( - r"\.\.\s+rubric::\s+(Methods|Attributes)\s*?\n" - r"(?:[^\n]*\n)*?" # skip options until entries - r"\.\.\s+autosummary::.*?\n\n" - r"((?:\s+~[\w\.\_]+\n)+)", - re.MULTILINE | re.DOTALL, + if not content.endswith("\n"): + content += "\n" + + # Regular expression to match autosummary blocks + # Matches: .. autosummary:: + # [indented options/text] + # [blank line] + # [indented entries] + autosummary_pattern = re.compile( + r"\.\.\s+autosummary::[^\n]*\n" + r"(?P(?:[ \t]+[^\n]*\n)*)\n" + r"(?P(?:(?:[ \t]+[^\n]*\n)|(?:[ \t]*\n))*)", + re.MULTILINE ) - for match in section_pattern.finditer(content): - member_type = match.group(1).lower() # 'methods' or 'attributes' - raw_entries = match.group(2) - - # Extract fully qualified names (e.g., - # 'cf.AuxiliaryCoordinate.del_properties') - entries = re.findall(r"~\s*([\w\.\_]+)", raw_entries) + for match in autosummary_pattern.finditer(content): + options = match.group("options") + entries_str = match.group("entries") + + toctree_match = re.search(r"^[ \t]+:toctree:[ \t]+(\S+)", options, re.MULTILINE) + if not toctree_match: + continue + + toctree = toctree_match.group(1).strip("/") + toctree = toctree.split("/")[-1] # e.g. '../method' -> 'method' + + if toctree == "method": + directive = "automethod" + out_dir = OUT_DIR / "method" + elif toctree == "attribute": + directive = "autoattribute" + out_dir = OUT_DIR / "attribute" + elif toctree == "function": + directive = "autofunction" + out_dir = OUT_DIR / "function" + else: + continue + + out_dir.mkdir(parents=True, exist_ok=True) + + # Extract fully qualified names, ignoring comments + entries = [] + for line in entries_str.splitlines(): + line = line.strip() + if not line or line.startswith(".."): + continue + # Remove leading ~ if present + if line.startswith("~"): + line = line[1:] + # Ensure it looks like a cf object + if not line.startswith("cf."): + continue + + entry_match = re.match(r"([\w\.\_]+)", line) + if entry_match: + entries.append(entry_match.group(1)) for entry in entries: - # Determine directive (automethod vs autoattribute) - if member_type == "methods": - directive = "automethod" - else: - directive = "autoattribute" - - # Determine output directory (method/ or attribute/) - if member_type == "methods": - out_dir = OUT_DIR / "method" - else: - out_dir = OUT_DIR / "attribute" - - out_dir.mkdir(parents=True, exist_ok=True) - out_file = out_dir / f"{entry}.rst" # Format underline to match title length @@ -74,8 +96,14 @@ def generate_stub_files(rst_path: Path): print(f" Generated: {out_file}") -# Run over all class rst files +# Run over all class rst files and function.rst if __name__ == "__main__": - for rst_file in sorted(SOURCE_DIR.glob("*.rst")): + rst_files = list(SOURCE_DIR.glob("*.rst")) + + function_rst = OUT_DIR / "function.rst" + if function_rst.exists(): + rst_files.append(function_rst) + + for rst_file in sorted(rst_files): print(f"Parent rst file: {rst_file}") generate_stub_files(rst_file) From aa9dc059ef2006a6e19c16d82a8befaa1508f4f7 Mon Sep 17 00:00:00 2001 From: David Hassell Date: Fri, 6 Nov 2026 10:03:06 +0000 Subject: [PATCH 2/3] fix: prevent infinite loop in autosummary regex parsing Co-authored-by: aider (openrouter/google/gemini-3.1-pro-preview) --- generate_stub_files.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/generate_stub_files.py b/generate_stub_files.py index fba09862f1..8c89deb189 100644 --- a/generate_stub_files.py +++ b/generate_stub_files.py @@ -26,21 +26,21 @@ def generate_stub_files(rst_path: Path): # Regular expression to match autosummary blocks # Matches: .. autosummary:: - # [indented options/text] - # [blank line] - # [indented entries] + # [indented block of options and entries] + # The block regex uses mutually exclusive branches to prevent + # catastrophic backtracking: + # 1. [ \t]+\S[^\n]*\n -> indented line with at least one non-whitespace char + # 2. [ \t]*\n -> blank line or line with only whitespace autosummary_pattern = re.compile( - r"\.\.\s+autosummary::[^\n]*\n" - r"(?P(?:[ \t]+[^\n]*\n)*)\n" - r"(?P(?:(?:[ \t]+[^\n]*\n)|(?:[ \t]*\n))*)", + r"^[ \t]*\.\.\s+autosummary::[^\n]*\n" + r"(?P(?:[ \t]+\S[^\n]*\n|[ \t]*\n)*)", re.MULTILINE ) for match in autosummary_pattern.finditer(content): - options = match.group("options") - entries_str = match.group("entries") + block = match.group("block") - toctree_match = re.search(r"^[ \t]+:toctree:[ \t]+(\S+)", options, re.MULTILINE) + toctree_match = re.search(r"^[ \t]+:toctree:[ \t]+(\S+)", block, re.MULTILINE) if not toctree_match: continue @@ -61,11 +61,11 @@ def generate_stub_files(rst_path: Path): out_dir.mkdir(parents=True, exist_ok=True) - # Extract fully qualified names, ignoring comments + # Extract fully qualified names, ignoring comments and options entries = [] - for line in entries_str.splitlines(): + for line in block.splitlines(): line = line.strip() - if not line or line.startswith(".."): + if not line or line.startswith("..") or line.startswith(":"): continue # Remove leading ~ if present if line.startswith("~"): From 5a78313b81cf28a4893003b5b4195ad0dc944724 Mon Sep 17 00:00:00 2001 From: David Hassell Date: Fri, 6 Nov 2026 11:10:40 +0000 Subject: [PATCH 3/3] include functions in sphinx build --- .gitignore | 1 + docs/source/function/cf.ATOL.rst | 7 ++ docs/source/function/cf.CF.rst | 7 ++ docs/source/function/cf.CHUNKSIZE.rst | 7 ++ .../function/cf.COLLAPSE_PARALLEL_MODE.rst | 7 ++ docs/source/function/cf.D.rst | 7 ++ docs/source/function/cf.FM_THRESHOLD.rst | 7 ++ docs/source/function/cf.FREE_MEMORY.rst | 7 ++ .../source/function/cf.FREE_MEMORY_FACTOR.rst | 7 ++ docs/source/function/cf.LOG_LEVEL.rst | 7 ++ docs/source/function/cf.M.rst | 7 ++ docs/source/function/cf.MIN_TOTAL_MEMORY.rst | 7 ++ docs/source/function/cf.OF_FRACTION.rst | 7 ++ docs/source/function/cf.REGRID_LOGGING.rst | 7 ++ .../source/function/cf.RELAXED_IDENTITIES.rst | 7 ++ docs/source/function/cf.RTOL.rst | 7 ++ docs/source/function/cf.SET_PERFORMANCE.rst | 7 ++ docs/source/function/cf.TEMPDIR.rst | 7 ++ docs/source/function/cf.TOTAL_MEMORY.rst | 7 ++ docs/source/function/cf.Y.rst | 7 ++ docs/source/function/cf.abspath.rst | 7 ++ docs/source/function/cf.active_storage.rst | 7 ++ .../cf.active_storage_max_requests.rst | 7 ++ .../source/function/cf.active_storage_url.rst | 7 ++ docs/source/function/cf.aggregate.rst | 7 ++ docs/source/function/cf.atol.rst | 7 ++ .../function/cf.bounds_combination_mode.rst | 7 ++ docs/source/function/cf.cellge.rst | 7 ++ docs/source/function/cf.cellgt.rst | 7 ++ docs/source/function/cf.cellle.rst | 7 ++ docs/source/function/cf.celllt.rst | 7 ++ docs/source/function/cf.cellsize.rst | 7 ++ docs/source/function/cf.cellwi.rst | 7 ++ docs/source/function/cf.cellwo.rst | 7 ++ docs/source/function/cf.chunksize.rst | 7 ++ docs/source/function/cf.climatology_cells.rst | 7 ++ docs/source/function/cf.close_files.rst | 7 ++ docs/source/function/cf.close_one_file.rst | 7 ++ .../function/cf.collapse_parallel_mode.rst | 7 ++ docs/source/function/cf.configuration.rst | 7 ++ docs/source/function/cf.contains.rst | 7 ++ docs/source/function/cf.contains_latlon.rst | 7 ++ docs/source/function/cf.curl_xy.rst | 7 ++ docs/source/function/cf.day.rst | 7 ++ .../function/cf.default_netCDF_fillvals.rst | 7 ++ docs/source/function/cf.dirname.rst | 7 ++ docs/source/function/cf.display_data.rst | 7 ++ docs/source/function/cf.div_xy.rst | 7 ++ docs/source/function/cf.djf.rst | 7 ++ docs/source/function/cf.dt.rst | 7 ++ docs/source/function/cf.dt_vector.rst | 7 ++ docs/source/function/cf.dump.rst | 7 ++ docs/source/function/cf.environment.rst | 7 ++ docs/source/function/cf.eq.rst | 7 ++ docs/source/function/cf.example_domain.rst | 7 ++ docs/source/function/cf.example_field.rst | 7 ++ docs/source/function/cf.example_fields.rst | 7 ++ docs/source/function/cf.flat.rst | 7 ++ docs/source/function/cf.fm_threshold.rst | 7 ++ docs/source/function/cf.free_memory.rst | 7 ++ .../source/function/cf.free_memory_factor.rst | 7 ++ docs/source/function/cf.ge.rst | 7 ++ docs/source/function/cf.gt.rst | 7 ++ docs/source/function/cf.h.rst | 7 ++ docs/source/function/cf.hash_array.rst | 7 ++ .../function/cf.healpix_indexing_schemes.rst | 7 ++ .../cf.healpix_max_refinement_level.rst | 7 ++ docs/source/function/cf.histogram.rst | 7 ++ docs/source/function/cf.hour.rst | 7 ++ docs/source/function/cf.implementation.rst | 7 ++ docs/source/function/cf.indices_shape.rst | 7 ++ docs/source/function/cf.inspect.rst | 7 ++ docs/source/function/cf.isclose.rst | 7 ++ docs/source/function/cf.jja.rst | 7 ++ docs/source/function/cf.le.rst | 7 ++ .../function/cf.load_stash2standard_name.rst | 7 ++ docs/source/function/cf.log_level.rst | 7 ++ docs/source/function/cf.lt.rst | 7 ++ docs/source/function/cf.m.rst | 7 ++ docs/source/function/cf.mam.rst | 7 ++ docs/source/function/cf.min_total_memory.rst | 7 ++ docs/source/function/cf.minute.rst | 7 ++ docs/source/function/cf.month.rst | 7 ++ docs/source/function/cf.ne.rst | 7 ++ docs/source/function/cf.of_fraction.rst | 7 ++ docs/source/function/cf.open_files.rst | 7 ++ .../cf.open_files_threshold_exceeded.rst | 7 ++ docs/source/function/cf.pathjoin.rst | 7 ++ docs/source/function/cf.persist_data.rst | 7 ++ docs/source/function/cf.read.rst | 7 ++ docs/source/function/cf.regrid_logging.rst | 7 ++ .../source/function/cf.relative_vorticity.rst | 7 ++ .../source/function/cf.relaxed_identities.rst | 7 ++ docs/source/function/cf.relpath.rst | 7 ++ docs/source/function/cf.rtol.rst | 7 ++ docs/source/function/cf.s.rst | 7 ++ docs/source/function/cf.seasons.rst | 7 ++ docs/source/function/cf.second.rst | 7 ++ docs/source/function/cf.set.rst | 7 ++ docs/source/function/cf.set_performance.rst | 7 ++ docs/source/function/cf.son.rst | 7 ++ .../function/cf.stash2standard_name.rst | 7 ++ docs/source/function/cf.tempdir.rst | 7 ++ docs/source/function/cf.total_memory.rst | 7 ++ docs/source/function/cf.unique_constructs.rst | 7 ++ docs/source/function/cf.wi.rst | 7 ++ docs/source/function/cf.wo.rst | 7 ++ docs/source/function/cf.write.rst | 7 ++ docs/source/function/cf.year.rst | 7 ++ generate_stub_files.py | 96 +++++++------------ 110 files changed, 791 insertions(+), 62 deletions(-) create mode 100644 docs/source/function/cf.ATOL.rst create mode 100644 docs/source/function/cf.CF.rst create mode 100644 docs/source/function/cf.CHUNKSIZE.rst create mode 100644 docs/source/function/cf.COLLAPSE_PARALLEL_MODE.rst create mode 100644 docs/source/function/cf.D.rst create mode 100644 docs/source/function/cf.FM_THRESHOLD.rst create mode 100644 docs/source/function/cf.FREE_MEMORY.rst create mode 100644 docs/source/function/cf.FREE_MEMORY_FACTOR.rst create mode 100644 docs/source/function/cf.LOG_LEVEL.rst create mode 100644 docs/source/function/cf.M.rst create mode 100644 docs/source/function/cf.MIN_TOTAL_MEMORY.rst create mode 100644 docs/source/function/cf.OF_FRACTION.rst create mode 100644 docs/source/function/cf.REGRID_LOGGING.rst create mode 100644 docs/source/function/cf.RELAXED_IDENTITIES.rst create mode 100644 docs/source/function/cf.RTOL.rst create mode 100644 docs/source/function/cf.SET_PERFORMANCE.rst create mode 100644 docs/source/function/cf.TEMPDIR.rst create mode 100644 docs/source/function/cf.TOTAL_MEMORY.rst create mode 100644 docs/source/function/cf.Y.rst create mode 100644 docs/source/function/cf.abspath.rst create mode 100644 docs/source/function/cf.active_storage.rst create mode 100644 docs/source/function/cf.active_storage_max_requests.rst create mode 100644 docs/source/function/cf.active_storage_url.rst create mode 100644 docs/source/function/cf.aggregate.rst create mode 100644 docs/source/function/cf.atol.rst create mode 100644 docs/source/function/cf.bounds_combination_mode.rst create mode 100644 docs/source/function/cf.cellge.rst create mode 100644 docs/source/function/cf.cellgt.rst create mode 100644 docs/source/function/cf.cellle.rst create mode 100644 docs/source/function/cf.celllt.rst create mode 100644 docs/source/function/cf.cellsize.rst create mode 100644 docs/source/function/cf.cellwi.rst create mode 100644 docs/source/function/cf.cellwo.rst create mode 100644 docs/source/function/cf.chunksize.rst create mode 100644 docs/source/function/cf.climatology_cells.rst create mode 100644 docs/source/function/cf.close_files.rst create mode 100644 docs/source/function/cf.close_one_file.rst create mode 100644 docs/source/function/cf.collapse_parallel_mode.rst create mode 100644 docs/source/function/cf.configuration.rst create mode 100644 docs/source/function/cf.contains.rst create mode 100644 docs/source/function/cf.contains_latlon.rst create mode 100644 docs/source/function/cf.curl_xy.rst create mode 100644 docs/source/function/cf.day.rst create mode 100644 docs/source/function/cf.default_netCDF_fillvals.rst create mode 100644 docs/source/function/cf.dirname.rst create mode 100644 docs/source/function/cf.display_data.rst create mode 100644 docs/source/function/cf.div_xy.rst create mode 100644 docs/source/function/cf.djf.rst create mode 100644 docs/source/function/cf.dt.rst create mode 100644 docs/source/function/cf.dt_vector.rst create mode 100644 docs/source/function/cf.dump.rst create mode 100644 docs/source/function/cf.environment.rst create mode 100644 docs/source/function/cf.eq.rst create mode 100644 docs/source/function/cf.example_domain.rst create mode 100644 docs/source/function/cf.example_field.rst create mode 100644 docs/source/function/cf.example_fields.rst create mode 100644 docs/source/function/cf.flat.rst create mode 100644 docs/source/function/cf.fm_threshold.rst create mode 100644 docs/source/function/cf.free_memory.rst create mode 100644 docs/source/function/cf.free_memory_factor.rst create mode 100644 docs/source/function/cf.ge.rst create mode 100644 docs/source/function/cf.gt.rst create mode 100644 docs/source/function/cf.h.rst create mode 100644 docs/source/function/cf.hash_array.rst create mode 100644 docs/source/function/cf.healpix_indexing_schemes.rst create mode 100644 docs/source/function/cf.healpix_max_refinement_level.rst create mode 100644 docs/source/function/cf.histogram.rst create mode 100644 docs/source/function/cf.hour.rst create mode 100644 docs/source/function/cf.implementation.rst create mode 100644 docs/source/function/cf.indices_shape.rst create mode 100644 docs/source/function/cf.inspect.rst create mode 100644 docs/source/function/cf.isclose.rst create mode 100644 docs/source/function/cf.jja.rst create mode 100644 docs/source/function/cf.le.rst create mode 100644 docs/source/function/cf.load_stash2standard_name.rst create mode 100644 docs/source/function/cf.log_level.rst create mode 100644 docs/source/function/cf.lt.rst create mode 100644 docs/source/function/cf.m.rst create mode 100644 docs/source/function/cf.mam.rst create mode 100644 docs/source/function/cf.min_total_memory.rst create mode 100644 docs/source/function/cf.minute.rst create mode 100644 docs/source/function/cf.month.rst create mode 100644 docs/source/function/cf.ne.rst create mode 100644 docs/source/function/cf.of_fraction.rst create mode 100644 docs/source/function/cf.open_files.rst create mode 100644 docs/source/function/cf.open_files_threshold_exceeded.rst create mode 100644 docs/source/function/cf.pathjoin.rst create mode 100644 docs/source/function/cf.persist_data.rst create mode 100644 docs/source/function/cf.read.rst create mode 100644 docs/source/function/cf.regrid_logging.rst create mode 100644 docs/source/function/cf.relative_vorticity.rst create mode 100644 docs/source/function/cf.relaxed_identities.rst create mode 100644 docs/source/function/cf.relpath.rst create mode 100644 docs/source/function/cf.rtol.rst create mode 100644 docs/source/function/cf.s.rst create mode 100644 docs/source/function/cf.seasons.rst create mode 100644 docs/source/function/cf.second.rst create mode 100644 docs/source/function/cf.set.rst create mode 100644 docs/source/function/cf.set_performance.rst create mode 100644 docs/source/function/cf.son.rst create mode 100644 docs/source/function/cf.stash2standard_name.rst create mode 100644 docs/source/function/cf.tempdir.rst create mode 100644 docs/source/function/cf.total_memory.rst create mode 100644 docs/source/function/cf.unique_constructs.rst create mode 100644 docs/source/function/cf.wi.rst create mode 100644 docs/source/function/cf.wo.rst create mode 100644 docs/source/function/cf.write.rst create mode 100644 docs/source/function/cf.year.rst diff --git a/.gitignore b/.gitignore index fc6090568c..4808572b72 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ docs/dev/ # ESMF log files **/PET*.ESMF_LogFile +.aider* diff --git a/docs/source/function/cf.ATOL.rst b/docs/source/function/cf.ATOL.rst new file mode 100644 index 0000000000..f91b444124 --- /dev/null +++ b/docs/source/function/cf.ATOL.rst @@ -0,0 +1,7 @@ +cf.ATOL +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.ATOL diff --git a/docs/source/function/cf.CF.rst b/docs/source/function/cf.CF.rst new file mode 100644 index 0000000000..f4bb5d2fe3 --- /dev/null +++ b/docs/source/function/cf.CF.rst @@ -0,0 +1,7 @@ +cf.CF +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.CF diff --git a/docs/source/function/cf.CHUNKSIZE.rst b/docs/source/function/cf.CHUNKSIZE.rst new file mode 100644 index 0000000000..d9282386f6 --- /dev/null +++ b/docs/source/function/cf.CHUNKSIZE.rst @@ -0,0 +1,7 @@ +cf.CHUNKSIZE +============ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.CHUNKSIZE diff --git a/docs/source/function/cf.COLLAPSE_PARALLEL_MODE.rst b/docs/source/function/cf.COLLAPSE_PARALLEL_MODE.rst new file mode 100644 index 0000000000..c91d2b9c8f --- /dev/null +++ b/docs/source/function/cf.COLLAPSE_PARALLEL_MODE.rst @@ -0,0 +1,7 @@ +cf.COLLAPSE_PARALLEL_MODE +========================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.COLLAPSE_PARALLEL_MODE diff --git a/docs/source/function/cf.D.rst b/docs/source/function/cf.D.rst new file mode 100644 index 0000000000..9c46698467 --- /dev/null +++ b/docs/source/function/cf.D.rst @@ -0,0 +1,7 @@ +cf.D +==== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.D diff --git a/docs/source/function/cf.FM_THRESHOLD.rst b/docs/source/function/cf.FM_THRESHOLD.rst new file mode 100644 index 0000000000..8fdfe36f92 --- /dev/null +++ b/docs/source/function/cf.FM_THRESHOLD.rst @@ -0,0 +1,7 @@ +cf.FM_THRESHOLD +=============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.FM_THRESHOLD diff --git a/docs/source/function/cf.FREE_MEMORY.rst b/docs/source/function/cf.FREE_MEMORY.rst new file mode 100644 index 0000000000..2fd141e414 --- /dev/null +++ b/docs/source/function/cf.FREE_MEMORY.rst @@ -0,0 +1,7 @@ +cf.FREE_MEMORY +============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.FREE_MEMORY diff --git a/docs/source/function/cf.FREE_MEMORY_FACTOR.rst b/docs/source/function/cf.FREE_MEMORY_FACTOR.rst new file mode 100644 index 0000000000..3602144d3c --- /dev/null +++ b/docs/source/function/cf.FREE_MEMORY_FACTOR.rst @@ -0,0 +1,7 @@ +cf.FREE_MEMORY_FACTOR +===================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.FREE_MEMORY_FACTOR diff --git a/docs/source/function/cf.LOG_LEVEL.rst b/docs/source/function/cf.LOG_LEVEL.rst new file mode 100644 index 0000000000..bc2a84e7fe --- /dev/null +++ b/docs/source/function/cf.LOG_LEVEL.rst @@ -0,0 +1,7 @@ +cf.LOG_LEVEL +============ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.LOG_LEVEL diff --git a/docs/source/function/cf.M.rst b/docs/source/function/cf.M.rst new file mode 100644 index 0000000000..baab9faa17 --- /dev/null +++ b/docs/source/function/cf.M.rst @@ -0,0 +1,7 @@ +cf.M +==== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.M diff --git a/docs/source/function/cf.MIN_TOTAL_MEMORY.rst b/docs/source/function/cf.MIN_TOTAL_MEMORY.rst new file mode 100644 index 0000000000..670daaa2f9 --- /dev/null +++ b/docs/source/function/cf.MIN_TOTAL_MEMORY.rst @@ -0,0 +1,7 @@ +cf.MIN_TOTAL_MEMORY +=================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.MIN_TOTAL_MEMORY diff --git a/docs/source/function/cf.OF_FRACTION.rst b/docs/source/function/cf.OF_FRACTION.rst new file mode 100644 index 0000000000..d0d576b083 --- /dev/null +++ b/docs/source/function/cf.OF_FRACTION.rst @@ -0,0 +1,7 @@ +cf.OF_FRACTION +============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.OF_FRACTION diff --git a/docs/source/function/cf.REGRID_LOGGING.rst b/docs/source/function/cf.REGRID_LOGGING.rst new file mode 100644 index 0000000000..fc996d0083 --- /dev/null +++ b/docs/source/function/cf.REGRID_LOGGING.rst @@ -0,0 +1,7 @@ +cf.REGRID_LOGGING +================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.REGRID_LOGGING diff --git a/docs/source/function/cf.RELAXED_IDENTITIES.rst b/docs/source/function/cf.RELAXED_IDENTITIES.rst new file mode 100644 index 0000000000..0f52550dbe --- /dev/null +++ b/docs/source/function/cf.RELAXED_IDENTITIES.rst @@ -0,0 +1,7 @@ +cf.RELAXED_IDENTITIES +===================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.RELAXED_IDENTITIES diff --git a/docs/source/function/cf.RTOL.rst b/docs/source/function/cf.RTOL.rst new file mode 100644 index 0000000000..3a8c699145 --- /dev/null +++ b/docs/source/function/cf.RTOL.rst @@ -0,0 +1,7 @@ +cf.RTOL +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.RTOL diff --git a/docs/source/function/cf.SET_PERFORMANCE.rst b/docs/source/function/cf.SET_PERFORMANCE.rst new file mode 100644 index 0000000000..22b7a57d7d --- /dev/null +++ b/docs/source/function/cf.SET_PERFORMANCE.rst @@ -0,0 +1,7 @@ +cf.SET_PERFORMANCE +================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.SET_PERFORMANCE diff --git a/docs/source/function/cf.TEMPDIR.rst b/docs/source/function/cf.TEMPDIR.rst new file mode 100644 index 0000000000..5589458fcb --- /dev/null +++ b/docs/source/function/cf.TEMPDIR.rst @@ -0,0 +1,7 @@ +cf.TEMPDIR +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.TEMPDIR diff --git a/docs/source/function/cf.TOTAL_MEMORY.rst b/docs/source/function/cf.TOTAL_MEMORY.rst new file mode 100644 index 0000000000..2c92517a52 --- /dev/null +++ b/docs/source/function/cf.TOTAL_MEMORY.rst @@ -0,0 +1,7 @@ +cf.TOTAL_MEMORY +=============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.TOTAL_MEMORY diff --git a/docs/source/function/cf.Y.rst b/docs/source/function/cf.Y.rst new file mode 100644 index 0000000000..bf8f3c5561 --- /dev/null +++ b/docs/source/function/cf.Y.rst @@ -0,0 +1,7 @@ +cf.Y +==== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.Y diff --git a/docs/source/function/cf.abspath.rst b/docs/source/function/cf.abspath.rst new file mode 100644 index 0000000000..eda975b761 --- /dev/null +++ b/docs/source/function/cf.abspath.rst @@ -0,0 +1,7 @@ +cf.abspath +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.abspath diff --git a/docs/source/function/cf.active_storage.rst b/docs/source/function/cf.active_storage.rst new file mode 100644 index 0000000000..28f0d697f6 --- /dev/null +++ b/docs/source/function/cf.active_storage.rst @@ -0,0 +1,7 @@ +cf.active_storage +================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.active_storage diff --git a/docs/source/function/cf.active_storage_max_requests.rst b/docs/source/function/cf.active_storage_max_requests.rst new file mode 100644 index 0000000000..a9fecaeb5a --- /dev/null +++ b/docs/source/function/cf.active_storage_max_requests.rst @@ -0,0 +1,7 @@ +cf.active_storage_max_requests +============================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.active_storage_max_requests diff --git a/docs/source/function/cf.active_storage_url.rst b/docs/source/function/cf.active_storage_url.rst new file mode 100644 index 0000000000..5304a34056 --- /dev/null +++ b/docs/source/function/cf.active_storage_url.rst @@ -0,0 +1,7 @@ +cf.active_storage_url +===================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.active_storage_url diff --git a/docs/source/function/cf.aggregate.rst b/docs/source/function/cf.aggregate.rst new file mode 100644 index 0000000000..218fa95654 --- /dev/null +++ b/docs/source/function/cf.aggregate.rst @@ -0,0 +1,7 @@ +cf.aggregate +============ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.aggregate diff --git a/docs/source/function/cf.atol.rst b/docs/source/function/cf.atol.rst new file mode 100644 index 0000000000..12c9c492f1 --- /dev/null +++ b/docs/source/function/cf.atol.rst @@ -0,0 +1,7 @@ +cf.atol +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.atol diff --git a/docs/source/function/cf.bounds_combination_mode.rst b/docs/source/function/cf.bounds_combination_mode.rst new file mode 100644 index 0000000000..00958d5bc6 --- /dev/null +++ b/docs/source/function/cf.bounds_combination_mode.rst @@ -0,0 +1,7 @@ +cf.bounds_combination_mode +========================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.bounds_combination_mode diff --git a/docs/source/function/cf.cellge.rst b/docs/source/function/cf.cellge.rst new file mode 100644 index 0000000000..9b7b0fea6f --- /dev/null +++ b/docs/source/function/cf.cellge.rst @@ -0,0 +1,7 @@ +cf.cellge +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.cellge diff --git a/docs/source/function/cf.cellgt.rst b/docs/source/function/cf.cellgt.rst new file mode 100644 index 0000000000..8da43d8c61 --- /dev/null +++ b/docs/source/function/cf.cellgt.rst @@ -0,0 +1,7 @@ +cf.cellgt +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.cellgt diff --git a/docs/source/function/cf.cellle.rst b/docs/source/function/cf.cellle.rst new file mode 100644 index 0000000000..524f688451 --- /dev/null +++ b/docs/source/function/cf.cellle.rst @@ -0,0 +1,7 @@ +cf.cellle +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.cellle diff --git a/docs/source/function/cf.celllt.rst b/docs/source/function/cf.celllt.rst new file mode 100644 index 0000000000..1fed84694d --- /dev/null +++ b/docs/source/function/cf.celllt.rst @@ -0,0 +1,7 @@ +cf.celllt +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.celllt diff --git a/docs/source/function/cf.cellsize.rst b/docs/source/function/cf.cellsize.rst new file mode 100644 index 0000000000..5e31db7ca8 --- /dev/null +++ b/docs/source/function/cf.cellsize.rst @@ -0,0 +1,7 @@ +cf.cellsize +=========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.cellsize diff --git a/docs/source/function/cf.cellwi.rst b/docs/source/function/cf.cellwi.rst new file mode 100644 index 0000000000..900e055de8 --- /dev/null +++ b/docs/source/function/cf.cellwi.rst @@ -0,0 +1,7 @@ +cf.cellwi +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.cellwi diff --git a/docs/source/function/cf.cellwo.rst b/docs/source/function/cf.cellwo.rst new file mode 100644 index 0000000000..69fb8f8d10 --- /dev/null +++ b/docs/source/function/cf.cellwo.rst @@ -0,0 +1,7 @@ +cf.cellwo +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.cellwo diff --git a/docs/source/function/cf.chunksize.rst b/docs/source/function/cf.chunksize.rst new file mode 100644 index 0000000000..da7b0dba83 --- /dev/null +++ b/docs/source/function/cf.chunksize.rst @@ -0,0 +1,7 @@ +cf.chunksize +============ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.chunksize diff --git a/docs/source/function/cf.climatology_cells.rst b/docs/source/function/cf.climatology_cells.rst new file mode 100644 index 0000000000..f09394a19c --- /dev/null +++ b/docs/source/function/cf.climatology_cells.rst @@ -0,0 +1,7 @@ +cf.climatology_cells +==================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.climatology_cells diff --git a/docs/source/function/cf.close_files.rst b/docs/source/function/cf.close_files.rst new file mode 100644 index 0000000000..604b888f69 --- /dev/null +++ b/docs/source/function/cf.close_files.rst @@ -0,0 +1,7 @@ +cf.close_files +============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.close_files diff --git a/docs/source/function/cf.close_one_file.rst b/docs/source/function/cf.close_one_file.rst new file mode 100644 index 0000000000..10081e1155 --- /dev/null +++ b/docs/source/function/cf.close_one_file.rst @@ -0,0 +1,7 @@ +cf.close_one_file +================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.close_one_file diff --git a/docs/source/function/cf.collapse_parallel_mode.rst b/docs/source/function/cf.collapse_parallel_mode.rst new file mode 100644 index 0000000000..217ffc3d72 --- /dev/null +++ b/docs/source/function/cf.collapse_parallel_mode.rst @@ -0,0 +1,7 @@ +cf.collapse_parallel_mode +========================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.collapse_parallel_mode diff --git a/docs/source/function/cf.configuration.rst b/docs/source/function/cf.configuration.rst new file mode 100644 index 0000000000..4d650377af --- /dev/null +++ b/docs/source/function/cf.configuration.rst @@ -0,0 +1,7 @@ +cf.configuration +================ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.configuration diff --git a/docs/source/function/cf.contains.rst b/docs/source/function/cf.contains.rst new file mode 100644 index 0000000000..76a6ba95a9 --- /dev/null +++ b/docs/source/function/cf.contains.rst @@ -0,0 +1,7 @@ +cf.contains +=========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.contains diff --git a/docs/source/function/cf.contains_latlon.rst b/docs/source/function/cf.contains_latlon.rst new file mode 100644 index 0000000000..0d8f8cfc35 --- /dev/null +++ b/docs/source/function/cf.contains_latlon.rst @@ -0,0 +1,7 @@ +cf.contains_latlon +================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.contains_latlon diff --git a/docs/source/function/cf.curl_xy.rst b/docs/source/function/cf.curl_xy.rst new file mode 100644 index 0000000000..9fa570f7c0 --- /dev/null +++ b/docs/source/function/cf.curl_xy.rst @@ -0,0 +1,7 @@ +cf.curl_xy +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.curl_xy diff --git a/docs/source/function/cf.day.rst b/docs/source/function/cf.day.rst new file mode 100644 index 0000000000..fc496bb8a4 --- /dev/null +++ b/docs/source/function/cf.day.rst @@ -0,0 +1,7 @@ +cf.day +====== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.day diff --git a/docs/source/function/cf.default_netCDF_fillvals.rst b/docs/source/function/cf.default_netCDF_fillvals.rst new file mode 100644 index 0000000000..bd7e12db07 --- /dev/null +++ b/docs/source/function/cf.default_netCDF_fillvals.rst @@ -0,0 +1,7 @@ +cf.default_netCDF_fillvals +========================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.default_netCDF_fillvals diff --git a/docs/source/function/cf.dirname.rst b/docs/source/function/cf.dirname.rst new file mode 100644 index 0000000000..ca0240a85e --- /dev/null +++ b/docs/source/function/cf.dirname.rst @@ -0,0 +1,7 @@ +cf.dirname +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.dirname diff --git a/docs/source/function/cf.display_data.rst b/docs/source/function/cf.display_data.rst new file mode 100644 index 0000000000..509ffed458 --- /dev/null +++ b/docs/source/function/cf.display_data.rst @@ -0,0 +1,7 @@ +cf.display_data +=============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.display_data diff --git a/docs/source/function/cf.div_xy.rst b/docs/source/function/cf.div_xy.rst new file mode 100644 index 0000000000..c22bbd0e2a --- /dev/null +++ b/docs/source/function/cf.div_xy.rst @@ -0,0 +1,7 @@ +cf.div_xy +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.div_xy diff --git a/docs/source/function/cf.djf.rst b/docs/source/function/cf.djf.rst new file mode 100644 index 0000000000..51d3cad819 --- /dev/null +++ b/docs/source/function/cf.djf.rst @@ -0,0 +1,7 @@ +cf.djf +====== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.djf diff --git a/docs/source/function/cf.dt.rst b/docs/source/function/cf.dt.rst new file mode 100644 index 0000000000..ee4604d9ef --- /dev/null +++ b/docs/source/function/cf.dt.rst @@ -0,0 +1,7 @@ +cf.dt +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.dt diff --git a/docs/source/function/cf.dt_vector.rst b/docs/source/function/cf.dt_vector.rst new file mode 100644 index 0000000000..409d47e35c --- /dev/null +++ b/docs/source/function/cf.dt_vector.rst @@ -0,0 +1,7 @@ +cf.dt_vector +============ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.dt_vector diff --git a/docs/source/function/cf.dump.rst b/docs/source/function/cf.dump.rst new file mode 100644 index 0000000000..9871594497 --- /dev/null +++ b/docs/source/function/cf.dump.rst @@ -0,0 +1,7 @@ +cf.dump +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.dump diff --git a/docs/source/function/cf.environment.rst b/docs/source/function/cf.environment.rst new file mode 100644 index 0000000000..28e922e886 --- /dev/null +++ b/docs/source/function/cf.environment.rst @@ -0,0 +1,7 @@ +cf.environment +============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.environment diff --git a/docs/source/function/cf.eq.rst b/docs/source/function/cf.eq.rst new file mode 100644 index 0000000000..8bdd8721a2 --- /dev/null +++ b/docs/source/function/cf.eq.rst @@ -0,0 +1,7 @@ +cf.eq +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.eq diff --git a/docs/source/function/cf.example_domain.rst b/docs/source/function/cf.example_domain.rst new file mode 100644 index 0000000000..393e75f811 --- /dev/null +++ b/docs/source/function/cf.example_domain.rst @@ -0,0 +1,7 @@ +cf.example_domain +================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.example_domain diff --git a/docs/source/function/cf.example_field.rst b/docs/source/function/cf.example_field.rst new file mode 100644 index 0000000000..ce6df0fda2 --- /dev/null +++ b/docs/source/function/cf.example_field.rst @@ -0,0 +1,7 @@ +cf.example_field +================ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.example_field diff --git a/docs/source/function/cf.example_fields.rst b/docs/source/function/cf.example_fields.rst new file mode 100644 index 0000000000..bcef4e205f --- /dev/null +++ b/docs/source/function/cf.example_fields.rst @@ -0,0 +1,7 @@ +cf.example_fields +================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.example_fields diff --git a/docs/source/function/cf.flat.rst b/docs/source/function/cf.flat.rst new file mode 100644 index 0000000000..c73f846efe --- /dev/null +++ b/docs/source/function/cf.flat.rst @@ -0,0 +1,7 @@ +cf.flat +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.flat diff --git a/docs/source/function/cf.fm_threshold.rst b/docs/source/function/cf.fm_threshold.rst new file mode 100644 index 0000000000..24e6cd865f --- /dev/null +++ b/docs/source/function/cf.fm_threshold.rst @@ -0,0 +1,7 @@ +cf.fm_threshold +=============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.fm_threshold diff --git a/docs/source/function/cf.free_memory.rst b/docs/source/function/cf.free_memory.rst new file mode 100644 index 0000000000..3df3826c52 --- /dev/null +++ b/docs/source/function/cf.free_memory.rst @@ -0,0 +1,7 @@ +cf.free_memory +============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.free_memory diff --git a/docs/source/function/cf.free_memory_factor.rst b/docs/source/function/cf.free_memory_factor.rst new file mode 100644 index 0000000000..fd9854e9b8 --- /dev/null +++ b/docs/source/function/cf.free_memory_factor.rst @@ -0,0 +1,7 @@ +cf.free_memory_factor +===================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.free_memory_factor diff --git a/docs/source/function/cf.ge.rst b/docs/source/function/cf.ge.rst new file mode 100644 index 0000000000..50c2d1a7a5 --- /dev/null +++ b/docs/source/function/cf.ge.rst @@ -0,0 +1,7 @@ +cf.ge +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.ge diff --git a/docs/source/function/cf.gt.rst b/docs/source/function/cf.gt.rst new file mode 100644 index 0000000000..73fb6f9b26 --- /dev/null +++ b/docs/source/function/cf.gt.rst @@ -0,0 +1,7 @@ +cf.gt +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.gt diff --git a/docs/source/function/cf.h.rst b/docs/source/function/cf.h.rst new file mode 100644 index 0000000000..456cf4d743 --- /dev/null +++ b/docs/source/function/cf.h.rst @@ -0,0 +1,7 @@ +cf.h +==== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.h diff --git a/docs/source/function/cf.hash_array.rst b/docs/source/function/cf.hash_array.rst new file mode 100644 index 0000000000..e08bc61bfb --- /dev/null +++ b/docs/source/function/cf.hash_array.rst @@ -0,0 +1,7 @@ +cf.hash_array +============= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.hash_array diff --git a/docs/source/function/cf.healpix_indexing_schemes.rst b/docs/source/function/cf.healpix_indexing_schemes.rst new file mode 100644 index 0000000000..23848de6ea --- /dev/null +++ b/docs/source/function/cf.healpix_indexing_schemes.rst @@ -0,0 +1,7 @@ +cf.healpix_indexing_schemes +=========================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.healpix_indexing_schemes diff --git a/docs/source/function/cf.healpix_max_refinement_level.rst b/docs/source/function/cf.healpix_max_refinement_level.rst new file mode 100644 index 0000000000..4c274782d9 --- /dev/null +++ b/docs/source/function/cf.healpix_max_refinement_level.rst @@ -0,0 +1,7 @@ +cf.healpix_max_refinement_level +=============================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.healpix_max_refinement_level diff --git a/docs/source/function/cf.histogram.rst b/docs/source/function/cf.histogram.rst new file mode 100644 index 0000000000..98441b4841 --- /dev/null +++ b/docs/source/function/cf.histogram.rst @@ -0,0 +1,7 @@ +cf.histogram +============ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.histogram diff --git a/docs/source/function/cf.hour.rst b/docs/source/function/cf.hour.rst new file mode 100644 index 0000000000..570a50da20 --- /dev/null +++ b/docs/source/function/cf.hour.rst @@ -0,0 +1,7 @@ +cf.hour +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.hour diff --git a/docs/source/function/cf.implementation.rst b/docs/source/function/cf.implementation.rst new file mode 100644 index 0000000000..7ac8c433b3 --- /dev/null +++ b/docs/source/function/cf.implementation.rst @@ -0,0 +1,7 @@ +cf.implementation +================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.implementation diff --git a/docs/source/function/cf.indices_shape.rst b/docs/source/function/cf.indices_shape.rst new file mode 100644 index 0000000000..45d86079fa --- /dev/null +++ b/docs/source/function/cf.indices_shape.rst @@ -0,0 +1,7 @@ +cf.indices_shape +================ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.indices_shape diff --git a/docs/source/function/cf.inspect.rst b/docs/source/function/cf.inspect.rst new file mode 100644 index 0000000000..21cd492950 --- /dev/null +++ b/docs/source/function/cf.inspect.rst @@ -0,0 +1,7 @@ +cf.inspect +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.inspect diff --git a/docs/source/function/cf.isclose.rst b/docs/source/function/cf.isclose.rst new file mode 100644 index 0000000000..df87fb7189 --- /dev/null +++ b/docs/source/function/cf.isclose.rst @@ -0,0 +1,7 @@ +cf.isclose +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.isclose diff --git a/docs/source/function/cf.jja.rst b/docs/source/function/cf.jja.rst new file mode 100644 index 0000000000..5b0a450d17 --- /dev/null +++ b/docs/source/function/cf.jja.rst @@ -0,0 +1,7 @@ +cf.jja +====== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.jja diff --git a/docs/source/function/cf.le.rst b/docs/source/function/cf.le.rst new file mode 100644 index 0000000000..c71502ec1f --- /dev/null +++ b/docs/source/function/cf.le.rst @@ -0,0 +1,7 @@ +cf.le +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.le diff --git a/docs/source/function/cf.load_stash2standard_name.rst b/docs/source/function/cf.load_stash2standard_name.rst new file mode 100644 index 0000000000..3ea8954e4d --- /dev/null +++ b/docs/source/function/cf.load_stash2standard_name.rst @@ -0,0 +1,7 @@ +cf.load_stash2standard_name +=========================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.load_stash2standard_name diff --git a/docs/source/function/cf.log_level.rst b/docs/source/function/cf.log_level.rst new file mode 100644 index 0000000000..f6a44ae85f --- /dev/null +++ b/docs/source/function/cf.log_level.rst @@ -0,0 +1,7 @@ +cf.log_level +============ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.log_level diff --git a/docs/source/function/cf.lt.rst b/docs/source/function/cf.lt.rst new file mode 100644 index 0000000000..9b8117455c --- /dev/null +++ b/docs/source/function/cf.lt.rst @@ -0,0 +1,7 @@ +cf.lt +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.lt diff --git a/docs/source/function/cf.m.rst b/docs/source/function/cf.m.rst new file mode 100644 index 0000000000..34078d8e19 --- /dev/null +++ b/docs/source/function/cf.m.rst @@ -0,0 +1,7 @@ +cf.m +==== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.m diff --git a/docs/source/function/cf.mam.rst b/docs/source/function/cf.mam.rst new file mode 100644 index 0000000000..317db74f86 --- /dev/null +++ b/docs/source/function/cf.mam.rst @@ -0,0 +1,7 @@ +cf.mam +====== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.mam diff --git a/docs/source/function/cf.min_total_memory.rst b/docs/source/function/cf.min_total_memory.rst new file mode 100644 index 0000000000..52d61fcbb5 --- /dev/null +++ b/docs/source/function/cf.min_total_memory.rst @@ -0,0 +1,7 @@ +cf.min_total_memory +=================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.min_total_memory diff --git a/docs/source/function/cf.minute.rst b/docs/source/function/cf.minute.rst new file mode 100644 index 0000000000..e62de2243e --- /dev/null +++ b/docs/source/function/cf.minute.rst @@ -0,0 +1,7 @@ +cf.minute +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.minute diff --git a/docs/source/function/cf.month.rst b/docs/source/function/cf.month.rst new file mode 100644 index 0000000000..2136f977da --- /dev/null +++ b/docs/source/function/cf.month.rst @@ -0,0 +1,7 @@ +cf.month +======== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.month diff --git a/docs/source/function/cf.ne.rst b/docs/source/function/cf.ne.rst new file mode 100644 index 0000000000..967c1f2909 --- /dev/null +++ b/docs/source/function/cf.ne.rst @@ -0,0 +1,7 @@ +cf.ne +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.ne diff --git a/docs/source/function/cf.of_fraction.rst b/docs/source/function/cf.of_fraction.rst new file mode 100644 index 0000000000..ff2d5d055f --- /dev/null +++ b/docs/source/function/cf.of_fraction.rst @@ -0,0 +1,7 @@ +cf.of_fraction +============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.of_fraction diff --git a/docs/source/function/cf.open_files.rst b/docs/source/function/cf.open_files.rst new file mode 100644 index 0000000000..bbe61b5f3a --- /dev/null +++ b/docs/source/function/cf.open_files.rst @@ -0,0 +1,7 @@ +cf.open_files +============= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.open_files diff --git a/docs/source/function/cf.open_files_threshold_exceeded.rst b/docs/source/function/cf.open_files_threshold_exceeded.rst new file mode 100644 index 0000000000..01eda2e40a --- /dev/null +++ b/docs/source/function/cf.open_files_threshold_exceeded.rst @@ -0,0 +1,7 @@ +cf.open_files_threshold_exceeded +================================ + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.open_files_threshold_exceeded diff --git a/docs/source/function/cf.pathjoin.rst b/docs/source/function/cf.pathjoin.rst new file mode 100644 index 0000000000..fb398f7b28 --- /dev/null +++ b/docs/source/function/cf.pathjoin.rst @@ -0,0 +1,7 @@ +cf.pathjoin +=========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.pathjoin diff --git a/docs/source/function/cf.persist_data.rst b/docs/source/function/cf.persist_data.rst new file mode 100644 index 0000000000..0a7eb09ceb --- /dev/null +++ b/docs/source/function/cf.persist_data.rst @@ -0,0 +1,7 @@ +cf.persist_data +=============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.persist_data diff --git a/docs/source/function/cf.read.rst b/docs/source/function/cf.read.rst new file mode 100644 index 0000000000..1b5713f973 --- /dev/null +++ b/docs/source/function/cf.read.rst @@ -0,0 +1,7 @@ +cf.read +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.read diff --git a/docs/source/function/cf.regrid_logging.rst b/docs/source/function/cf.regrid_logging.rst new file mode 100644 index 0000000000..80eff42270 --- /dev/null +++ b/docs/source/function/cf.regrid_logging.rst @@ -0,0 +1,7 @@ +cf.regrid_logging +================= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.regrid_logging diff --git a/docs/source/function/cf.relative_vorticity.rst b/docs/source/function/cf.relative_vorticity.rst new file mode 100644 index 0000000000..70b116ff1c --- /dev/null +++ b/docs/source/function/cf.relative_vorticity.rst @@ -0,0 +1,7 @@ +cf.relative_vorticity +===================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.relative_vorticity diff --git a/docs/source/function/cf.relaxed_identities.rst b/docs/source/function/cf.relaxed_identities.rst new file mode 100644 index 0000000000..947a8ef5cc --- /dev/null +++ b/docs/source/function/cf.relaxed_identities.rst @@ -0,0 +1,7 @@ +cf.relaxed_identities +===================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.relaxed_identities diff --git a/docs/source/function/cf.relpath.rst b/docs/source/function/cf.relpath.rst new file mode 100644 index 0000000000..04656c59d5 --- /dev/null +++ b/docs/source/function/cf.relpath.rst @@ -0,0 +1,7 @@ +cf.relpath +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.relpath diff --git a/docs/source/function/cf.rtol.rst b/docs/source/function/cf.rtol.rst new file mode 100644 index 0000000000..95dfc1b704 --- /dev/null +++ b/docs/source/function/cf.rtol.rst @@ -0,0 +1,7 @@ +cf.rtol +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.rtol diff --git a/docs/source/function/cf.s.rst b/docs/source/function/cf.s.rst new file mode 100644 index 0000000000..010d3c6c1e --- /dev/null +++ b/docs/source/function/cf.s.rst @@ -0,0 +1,7 @@ +cf.s +==== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.s diff --git a/docs/source/function/cf.seasons.rst b/docs/source/function/cf.seasons.rst new file mode 100644 index 0000000000..7912ecf4f8 --- /dev/null +++ b/docs/source/function/cf.seasons.rst @@ -0,0 +1,7 @@ +cf.seasons +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.seasons diff --git a/docs/source/function/cf.second.rst b/docs/source/function/cf.second.rst new file mode 100644 index 0000000000..b91f5d008f --- /dev/null +++ b/docs/source/function/cf.second.rst @@ -0,0 +1,7 @@ +cf.second +========= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.second diff --git a/docs/source/function/cf.set.rst b/docs/source/function/cf.set.rst new file mode 100644 index 0000000000..ec2ff9be6c --- /dev/null +++ b/docs/source/function/cf.set.rst @@ -0,0 +1,7 @@ +cf.set +====== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.set diff --git a/docs/source/function/cf.set_performance.rst b/docs/source/function/cf.set_performance.rst new file mode 100644 index 0000000000..d1807760c3 --- /dev/null +++ b/docs/source/function/cf.set_performance.rst @@ -0,0 +1,7 @@ +cf.set_performance +================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.set_performance diff --git a/docs/source/function/cf.son.rst b/docs/source/function/cf.son.rst new file mode 100644 index 0000000000..221e55dfc1 --- /dev/null +++ b/docs/source/function/cf.son.rst @@ -0,0 +1,7 @@ +cf.son +====== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.son diff --git a/docs/source/function/cf.stash2standard_name.rst b/docs/source/function/cf.stash2standard_name.rst new file mode 100644 index 0000000000..c8fc2e678e --- /dev/null +++ b/docs/source/function/cf.stash2standard_name.rst @@ -0,0 +1,7 @@ +cf.stash2standard_name +====================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.stash2standard_name diff --git a/docs/source/function/cf.tempdir.rst b/docs/source/function/cf.tempdir.rst new file mode 100644 index 0000000000..ceb3903fb4 --- /dev/null +++ b/docs/source/function/cf.tempdir.rst @@ -0,0 +1,7 @@ +cf.tempdir +========== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.tempdir diff --git a/docs/source/function/cf.total_memory.rst b/docs/source/function/cf.total_memory.rst new file mode 100644 index 0000000000..3d4df57dab --- /dev/null +++ b/docs/source/function/cf.total_memory.rst @@ -0,0 +1,7 @@ +cf.total_memory +=============== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.total_memory diff --git a/docs/source/function/cf.unique_constructs.rst b/docs/source/function/cf.unique_constructs.rst new file mode 100644 index 0000000000..b22a9dee3b --- /dev/null +++ b/docs/source/function/cf.unique_constructs.rst @@ -0,0 +1,7 @@ +cf.unique_constructs +==================== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.unique_constructs diff --git a/docs/source/function/cf.wi.rst b/docs/source/function/cf.wi.rst new file mode 100644 index 0000000000..7e4b8a057d --- /dev/null +++ b/docs/source/function/cf.wi.rst @@ -0,0 +1,7 @@ +cf.wi +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.wi diff --git a/docs/source/function/cf.wo.rst b/docs/source/function/cf.wo.rst new file mode 100644 index 0000000000..5861e45967 --- /dev/null +++ b/docs/source/function/cf.wo.rst @@ -0,0 +1,7 @@ +cf.wo +===== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.wo diff --git a/docs/source/function/cf.write.rst b/docs/source/function/cf.write.rst new file mode 100644 index 0000000000..e7d21849cc --- /dev/null +++ b/docs/source/function/cf.write.rst @@ -0,0 +1,7 @@ +cf.write +======== + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.write diff --git a/docs/source/function/cf.year.rst b/docs/source/function/cf.year.rst new file mode 100644 index 0000000000..5c4c9ad30a --- /dev/null +++ b/docs/source/function/cf.year.rst @@ -0,0 +1,7 @@ +cf.year +======= + +.. currentmodule:: cf +.. default-role:: obj + +.. autofunction:: cf.year diff --git a/generate_stub_files.py b/generate_stub_files.py index 8c89deb189..df6a114641 100644 --- a/generate_stub_files.py +++ b/generate_stub_files.py @@ -21,64 +21,42 @@ def generate_stub_files(rst_path: Path): content = rst_path.read_text(encoding="utf-8") - if not content.endswith("\n"): - content += "\n" - - # Regular expression to match autosummary blocks - # Matches: .. autosummary:: - # [indented block of options and entries] - # The block regex uses mutually exclusive branches to prevent - # catastrophic backtracking: - # 1. [ \t]+\S[^\n]*\n -> indented line with at least one non-whitespace char - # 2. [ \t]*\n -> blank line or line with only whitespace - autosummary_pattern = re.compile( - r"^[ \t]*\.\.\s+autosummary::[^\n]*\n" - r"(?P(?:[ \t]+\S[^\n]*\n|[ \t]*\n)*)", - re.MULTILINE + + # Regular expression to match rubric sections and their + # autosummary entries + # + # Matches: .. rubric:: (Methods|Attributes) ... .. autosummary:: ... [entries] + section_pattern = re.compile( + r"\.\.\s+rubric::\s+(Methods|Attributes)\s*?\n" + r"(?:[^\n]*\n)*?" # skip options until entries + r"\.\.\s+autosummary::.*?\n\n" + r"((?:\s+~[\w\.\_]+\n)+)", + re.MULTILINE | re.DOTALL, ) - for match in autosummary_pattern.finditer(content): - block = match.group("block") - - toctree_match = re.search(r"^[ \t]+:toctree:[ \t]+(\S+)", block, re.MULTILINE) - if not toctree_match: - continue - - toctree = toctree_match.group(1).strip("/") - toctree = toctree.split("/")[-1] # e.g. '../method' -> 'method' - - if toctree == "method": - directive = "automethod" - out_dir = OUT_DIR / "method" - elif toctree == "attribute": - directive = "autoattribute" - out_dir = OUT_DIR / "attribute" - elif toctree == "function": - directive = "autofunction" - out_dir = OUT_DIR / "function" - else: - continue - - out_dir.mkdir(parents=True, exist_ok=True) - - # Extract fully qualified names, ignoring comments and options - entries = [] - for line in block.splitlines(): - line = line.strip() - if not line or line.startswith("..") or line.startswith(":"): - continue - # Remove leading ~ if present - if line.startswith("~"): - line = line[1:] - # Ensure it looks like a cf object - if not line.startswith("cf."): - continue - - entry_match = re.match(r"([\w\.\_]+)", line) - if entry_match: - entries.append(entry_match.group(1)) + for match in section_pattern.finditer(content): + member_type = match.group(1).lower() # 'methods' or 'attributes' + raw_entries = match.group(2) + + # Extract fully qualified names (e.g., + # 'cf.AuxiliaryCoordinate.del_properties') + entries = re.findall(r"~\s*([\w\.\_]+)", raw_entries) for entry in entries: + # Determine directive (automethod vs autoattribute) + if member_type == "methods": + directive = "automethod" + else: + directive = "autoattribute" + + # Determine output directory (method/ or attribute/) + if member_type == "methods": + out_dir = OUT_DIR / "method" + else: + out_dir = OUT_DIR / "attribute" + + out_dir.mkdir(parents=True, exist_ok=True) + out_file = out_dir / f"{entry}.rst" # Format underline to match title length @@ -96,14 +74,8 @@ def generate_stub_files(rst_path: Path): print(f" Generated: {out_file}") -# Run over all class rst files and function.rst +# Run over all class rst files if __name__ == "__main__": - rst_files = list(SOURCE_DIR.glob("*.rst")) - - function_rst = OUT_DIR / "function.rst" - if function_rst.exists(): - rst_files.append(function_rst) - - for rst_file in sorted(rst_files): + for rst_file in sorted(SOURCE_DIR.glob("*.rst")): print(f"Parent rst file: {rst_file}") generate_stub_files(rst_file)