Repository: scikit-hep/uproot5

Issue:
xrootd file globbing only works for some file + object path specifications 
uproot version: 5.2.0rc5

dict-style file + object path globbing works fine:
```
>>> import uproot
>>> events = uproot.dask({"root://cmsdcadisk.fnal.gov//dcache/uscmsdisk/store/data/Run2023C/EGamma0/NANOAOD/PromptNanoAODv11p9_v1-v1/*/*.root":"Events"}, open_files=False)
>>> events.Muon_pt
dask.awkward<Muon-pt, npartitions=71>
```

however, in-string style does not:
```
>>> events = uproot.dask("root://cmsdcadisk.fnal.gov//dcache/uscmsdisk/store/data/Run2023C/EGamma0/NANOAOD/PromptNanoAODv11p9_v1-v1/*/*.root:Events", open_files=False)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/srv/.env/lib/python3.10/site-packages/uproot/_dask.py", line 164, in dask
    files = uproot._util.regularize_files(files, steps_allowed=True, **options)
  File "/srv/.env/lib/python3.10/site-packages/uproot/_util.py", line 944, in regularize_files
    raise _file_not_found(files)
FileNotFoundError: file not found

    'root://cmsdcadisk.fnal.gov//dcache/uscmsdisk/store/data/Run2023C/EGamma0/NANOAOD/PromptNanoAODv11p9_v1-v1/*/*.root:Events'

Files may be specified as:
   * str/bytes: relative or absolute filesystem path or URL, without any colons
         other than Windows drive letter or URL schema.
         Examples: "rel/file.root", "C:\abs\file.root", "http://where/what.root"
   * str/bytes: same with an object-within-ROOT path, separated by a colon.
         Example: "rel/file.root:tdirectory/ttree"
   * pathlib.Path: always interpreted as a filesystem path or URL only (no
         object-within-ROOT path), regardless of whether there are any colons.
         Examples: Path("rel:/file.root"), Path("/abs/path:stuff.root")

Functions that accept many files (uproot.iterate, etc.) also allow:
   * glob syntax in str/bytes and pathlib.Path.
         Examples: Path("rel/*.root"), "/abs/*.root:tdirectory/ttree"
   * dict: keys are filesystem paths, values are objects-within-ROOT paths.
         Example: {"/data_v1/*.root": "ttree_v1", "/data_v2/*.root": "ttree_v2"}
   * already-open TTree objects.
   * iterables of the above.

```



Discussion:

Resolving patch:
diff --git a/src/uproot/_util.py b/src/uproot/_util.py
--- a/src/uproot/_util.py
+++ b/src/uproot/_util.py
@@ -835,7 +835,7 @@ def _regularize_files_inner(
             file_names_full = [
                 file.full_name
                 for file in fsspec.open_files(
-                    files,
+                    file_path,
                     **uproot.source.fsspec.FSSpecSource.extract_fsspec_options(options),
                 )
             ]


Test patch:
diff --git a/tests/test_0692_fsspec_reading.py b/tests/test_0692_fsspec_reading.py
--- a/tests/test_0692_fsspec_reading.py
+++ b/tests/test_0692_fsspec_reading.py
@@ -392,6 +392,15 @@ def test_issue_1035(handler):
 
 @pytest.mark.network
 @pytest.mark.xrootd
+@pytest.mark.parametrize(
+    "filename",
+    [
+        {
+            "root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/Run2012B_*.root": "Events"
+        },
+        "root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/Run2012B_*.root:Events",
+    ],
+)
 @pytest.mark.parametrize(
     "handler",
     [
@@ -399,13 +408,11 @@ def test_issue_1035(handler):
         None,
     ],
 )
-def test_fsspec_globbing_xrootd(handler):
+def test_fsspec_globbing_xrootd(handler, filename):
     pytest.importorskip("XRootD")
     pytest.importorskip("fsspec_xrootd")
     iterator = uproot.iterate(
-        {
-            "root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/Run2012B_*.root": "Events"
-        },
+        filename,
         ["PV_x"],
         handler=handler,
     )