Repository: xCDAT/xcdat

Issue:
[Feature]: Add default value for `axes` argument in `add_missing_bounds()` 
### Is your feature request related to a problem?

I think from v0.6.0 `add_missing_bounds` started requiring parameters. 

I liked its previous usage, e.g., `ds.bounds.add_missing_bounds()`, which automatically loops through the Dataset’s axes and attempts to adds bounds to its coordinates if they don’t exist. (By the way, the [documentation](https://xcdat.readthedocs.io/en/latest/generated/xarray.Dataset.bounds.add_missing_bounds.html) is still written in this way). 



### Describe the solution you'd like

I wonder if `add_missing_bounds` can be operated in two optional ways:
(1) `ds.bounds.add_missing_bounds()`: loop through axes and fill missed bounds
(2) `ds.bounds.add_missing_bounds("X")`: fill missed bounds for "X" axis

### Describe alternatives you've considered

_No response_

### Additional context

(added to the post)

Some PMP  and obs4MIP codes have implemented add_missing_bounds() routines but with xcdat update those codes needs changes, and if `ds.bounds.add_missing_bounds()` could be still used, it is going to be very efficient to update xcdat version in PMP dependency. 

@acordonez, @gleckler1, @bosup any thoughts?

Discussion:
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/xCDAT/xcdat/pull/569?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=xCDAT) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Comparison is base [(`c83f46e`)](https://app.codecov.io/gh/xCDAT/xcdat/commit/c83f46e2f35095d00ea5e05dde1142b7a318c719?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=xCDAT) 100.00% compared to head [(`400cebf`)](https://app.codecov.io/gh/xCDAT/xcdat/pull/569?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=xCDAT) 100.00%.


<details><summary>Additional details and impacted files</summary>


```diff
@@            Coverage Diff            @@
##              main      #569   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           15        15           
  Lines         1605      1605           
=========================================
  Hits          1605      1605           
```



</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/xCDAT/xcdat/pull/569?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=xCDAT).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=xCDAT).

acordonez: @tomvothecoder Thanks for your quick review. It look like I don't have write access to merge this.
tomvothecoder: No problem! I'll merge this PR for you.

I added you as an xCDAT org member with write access. You'll be able to work with the main repo directly instead of using your fork, which should be more convenient next time.




Patch:
diff --git a/xcdat/bounds.py b/xcdat/bounds.py
index 711c94a..ee59e61 100644
--- a/xcdat/bounds.py
+++ b/xcdat/bounds.py
@@ -123,7 +123,9 @@ class BoundsAccessor:
             )
         )
 
-    def add_missing_bounds(self, axes: List[CFAxisKey]) -> xr.Dataset:  # noqa: C901
+    def add_missing_bounds(  # noqa: C901
+        self, axes: List[CFAxisKey] = ["X", "Y", "T"]
+    ) -> xr.Dataset:
         """Adds missing coordinate bounds for supported axes in the Dataset.
 
         This function loops through the Dataset's axes and attempts to adds


Test patch:
diff --git a/tests/test_bounds.py b/tests/test_bounds.py
index 33befaa..4e2fd02 100644
--- a/tests/test_bounds.py
+++ b/tests/test_bounds.py
@@ -78,6 +78,13 @@ class TestAddMissingBounds:
         result = ds_no_bnds.bounds.add_missing_bounds(axes=["X", "Y", "Z"])
         assert result.identical(ds)
 
+    def test_adds_default_bounds_to_the_dataset_using_time_frequency(self):
+        ds = generate_dataset_by_frequency(freq="month")
+        ds_no_bnds = ds.drop_vars(["time_bnds", "lat_bnds", "lon_bnds"])
+
+        result = ds_no_bnds.bounds.add_missing_bounds()
+        assert result.identical(ds)
+
     def test_adds_t_bounds_to_the_dataset_using_time_frequency(self):
         ds = generate_dataset_by_frequency(freq="month")
         ds_no_bnds = ds.drop_vars(["time_bnds"])