martinfleis: Looking good so far. Feel free to ignore CI with python 3.5 (#1492). There is also an unrelated issue with arrow (#1536). 
ian-r-rose: Sorry for the slow update here @martinfleis, this should be close-to-ready. It tries to cover the two main issues discussed in #1531 

* More general file-like objects can be read than just those deriving from `TextIO`. I have tested using `fsspec`, but others should work as well.
* We try to infer if a `zip://` scheme should be added to local files in order to match the behavior of remote files, which don't need that scheme.

I see that I still have a windows path-related failure to address, but comments would be appreciated.
ian-r-rose: Okay, here is a summary of the behavior as of this PR:

* If the filename is URL-like, geopandas will download the file and feed the bytes to fiona to be opened. Zipped files are automatically recognized.
* If the filename is a file-like object, its bytes are read and fed to fiona to be opened. Zipped files are automatically recognized.
* If the file is a path to a local file on disk, that path is passed to fiona for opening. If the path to the file ends with `".zip"`, then a `zip://` scheme is added to the path. This is to match the behavior of the above two code paths, so in all instances users should not need to add `zip://`.
* If the path is a GDAL-style `/vsi` virtual filesystem path, then it is passed to fiona unmodified.

ian-r-rose: Thanks for the review @jorisvandenbossche. I know this one got a bit more complex than I intended (who knew that path handling had edge cases?), so happy for suggestions of how to simplify.
jorisvandenbossche: > I know this one got a bit more complex than I intended (who knew that path handling had edge cases?), so happy for suggestions of how to simplify.

No problem! Filesystems / path handling is not the simplest topic ;)

The best way to simplify this is if fiona would do this automatic handling of zip files ;-) Something to discuss with them, but in the meantime, I think it would be good to already handle it in geopandas. It will make the experience with reading zip files a lot smoother! (it's a long time item on my list with small things I want to improve in geopandas ;-))
jorisvandenbossche: @ian-r-rose One more thing, could you add an example of using ffspec at the end of this section:https://geopandas.readthedocs.io/en/latest/docs/user_guide/io.html#reading-spatial-data ? There is already one using `open`, so it can fit after that one (the page is a bit messy, we need to reorganize that page, but at least having a small example ensures we include it when redoing the page)
ian-r-rose: Example added to the docs (with some fun filesystem chaining)
diff --git a/ci/travis/36-minimal.yaml b/ci/travis/36-minimal.yaml
index c7b37397..3533fc12 100644
--- a/ci/travis/36-minimal.yaml
+++ b/ci/travis/36-minimal.yaml
@@ -14,6 +14,7 @@ dependencies:
   - pytest
   - pytest-cov
   - codecov
+  - fsspec
   # optional
   - rtree
   - matplotlib
diff --git a/ci/travis/36-pd025.yaml b/ci/travis/36-pd025.yaml
index 713078a5..cf5df536 100644
--- a/ci/travis/36-pd025.yaml
+++ b/ci/travis/36-pd025.yaml
@@ -12,6 +12,7 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
+  - fsspec
   #- codecov
   # optional
   - rtree
diff --git a/ci/travis/37-dev.yaml b/ci/travis/37-dev.yaml
index 7dd3f16c..2b463640 100644
--- a/ci/travis/37-dev.yaml
+++ b/ci/travis/37-dev.yaml
@@ -13,6 +13,7 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
+  - fsspec
   #- codecov
   # optional
   - rtree
diff --git a/doc/source/docs/user_guide/io.rst b/doc/source/docs/user_guide/io.rst
index b22b0dd6..b5826b3f 100644
--- a/doc/source/docs/user_guide/io.rst
+++ b/doc/source/docs/user_guide/io.rst
@@ -57,6 +57,14 @@ as a file handler (e.g. via built-in ``open`` function) or ``StringIO``::
     file = open(filename)
     df = geopandas.read_file(file)
 
+File-like objects from `fsspec <https://filesystem-spec.readthedocs.io/en/latest>`_
+can also be used to read data, allowing for any combination of storage backends and caching
+supported by that project::
+
+    path = "simplecache::http://download.geofabrik.de/antarctica-latest-free.shp.zip"
+    with fsspec.open(path) as file:
+        df = geopandas.read_file(file)
+
 You can also read path objects::
 
     import pathlib
diff --git a/geopandas/geodataframe.py b/geopandas/geodataframe.py
index 0038aee4..a764b178 100644
--- a/geopandas/geodataframe.py
+++ b/geopandas/geodataframe.py
@@ -192,7 +192,7 @@ class GeoDataFrame(GeoPandasBase, DataFrame):
         Parameters
         ----------
         col : column label or array
-        drop : boolean, default True
+        drop : boolean, default False
             Delete column to be used as the new geometry
         inplace : boolean, default False
             Modify the GeoDataFrame in place (do not create a new object)
diff --git a/geopandas/io/file.py b/geopandas/io/file.py
index 2a94f3f3..080935a2 100644
--- a/geopandas/io/file.py
+++ b/geopandas/io/file.py
@@ -1,6 +1,5 @@
 from distutils.version import LooseVersion
 
-import io
 import warnings
 import numpy as np
 import pandas as pd
@@ -36,6 +35,16 @@ def _is_url(url):
         return False
 
 
+def _is_zip(path):
+    """Check if a given path is a zipfile"""
+    parsed = fiona.path.ParsedPath.from_uri(path)
+    return (
+        parsed.archive.endswith(".zip")
+        if parsed.archive
+        else parsed.path.endswith(".zip")
+    )
+
+
 def _read_file(filename, bbox=None, mask=None, rows=None, **kwargs):
     """
     Returns a GeoDataFrame from a file or URL.
@@ -85,10 +94,30 @@ def _read_file(filename, bbox=None, mask=None, rows=None, **kwargs):
         req = _urlopen(filename)
         path_or_bytes = req.read()
         reader = fiona.BytesCollection
-    elif isinstance(filename, io.TextIOBase):
-        path_or_bytes = filename.read()
-        reader = fiona.open
+    elif pd.api.types.is_file_like(filename):
+        data = filename.read()
+        path_or_bytes = data.encode("utf-8") if isinstance(data, str) else data
+        reader = fiona.BytesCollection
     else:
+        # Opening a file via URL or file-like-object above automatically detects a
+        # zipped file. In order to match that behavior, attempt to add a zip scheme
+        # if missing.
+        if _is_zip(str(filename)):
+            parsed = fiona.parse_path(str(filename))
+            if isinstance(parsed, fiona.path.ParsedPath):
+                # If fiona is able to parse the path, we can safely look at the scheme
+                # and update it to have a zip scheme if necessary.
+                schemes = (parsed.scheme or "").split("+")
+                if "zip" not in schemes:
+                    parsed.scheme = "+".join(["zip"] + schemes)
+                filename = parsed.name
+            elif isinstance(parsed, fiona.path.UnparsedPath) and not str(
+                filename
+            ).startswith("/vsi"):
+                # If fiona is unable to parse the path, it might have a Windows drive
+                # scheme. Try adding zip:// to the front. If the path starts with "/vsi"
+                # it is a legacy GDAL path type, so let it pass unmodified.
+                filename = "zip://" + parsed.name
         path_or_bytes = filename
         reader = fiona.open
 
diff --git a/geopandas/tools/clip.py b/geopandas/tools/clip.py
index da76e0f2..75ef3ce6 100644
--- a/geopandas/tools/clip.py
+++ b/geopandas/tools/clip.py
@@ -127,7 +127,7 @@ def clip(gdf, mask, keep_geom_type=False):
     if not isinstance(mask, (GeoDataFrame, GeoSeries, Polygon, MultiPolygon)):
         raise TypeError(
             "'mask' should be GeoDataFrame, GeoSeries or"
-            "(Multi)Polygon, got {}".format(type(gdf))
+            "(Multi)Polygon, got {}".format(type(mask))
         )
 
     if isinstance(mask, (GeoDataFrame, GeoSeries)):

Improving reading from remotes and file-like objects
I'm happy to see progress in the ability to load from file-like objects in #1329. I've been interested in improving the ability for geopandas to load from file-like objects, especially those produced by [`fsspec` ](https://filesystem-spec.readthedocs.io), which should increase the universe of storage backends that we can use here. Since `fsspec` and OGR/Fiona have mutually incompatible virtual filesystems and URL compounding schemes, I think that proceeding with file-like objects is probably the best way to have these two libraries talk to each other.

When I looked into this, I found that the code paths for file loading in GeoPandas are a bit muddled, and could probably use some clarification. Here is a brief survey of the different scenarios I've found. The relevant code block is 
https://github.com/geopandas/geopandas/blob/d3228ddb6814515506921ad5c2e6d6f8bd99c9ae/geopandas/io/file.py#L85-L97
I'll be referring to the three branches of this if-elif-else block below.

### Loading a local text file
```python
geopandas.read_file("test.geojson")
```
This is likely the most common usage. It takes the third branch, and fiona opens the file by path.

### Loading a local binary file
```python
geopandas.read_file("gdal_sample.gpkg", driver="GPKG")
```
This also takes the third branch, and fiona opens the file by path.

### Loading a local zip file:
```python
geopandas.read_file("zip://shapefile.zip")
```
This takes the third branch. Note, however, that I need to include the fiona `zip://` scheme to tell fiona to open it as a zipped file. This is unsurprising, except see below.

### Loading a remote text file
```python
geopandas.read_file("https://opendata.arcgis.com/datasets/76104f230e384f38871eb3c4782f903d_13.geojson")
```
This takes the first branch, loading the GeoJSON into a `fiona.BytesCollection`.

### Loading a remote zipped file
```python
geopandas.read_file("https://opendata.arcgis.com/datasets/76104f230e384f38871eb3c4782f903d_13.zip")
```
This takes the first branch. Note the surprising behavior that *this zipped file doesn't need the `zip://` scheme*. As far as I can tell, this is because fiona's `BytesCollection` does some [automagic detection](https://github.com/Toblerity/Fiona/blob/4750ae99119c7bd2bc38d7842fd57c1c2db2cd2e/fiona/collection.py#L533-L536) of a zipped collection of bytes. The difference between URI schemes for remote and local zipped  files is pretty confusing, and not really documented anywhere, I think. Indeed, if I include `zip://` in the URL above, it fails.

### Loading a `StringIO` file-like object
```python
with open("test.geojson", "r") as f:
    gdf = geopandas.read_file(f, driver="GeoJSON")
```
This takes the second branch, as intended by #1329.

### Loading a `BytesIO` file-like object
```python
with open("gdal_sample.gpkg", "rb") as f:
    gdf = geopandas.read_file(f, driver="GPKG")
```
This *does not* take the second branch, as the `instanceof` check only looks for text objects. Instead it takes the third branch, which I think is not intended. However, fiona has some understanding of file-like objects as well, and it works anyways.

### Loading a zipped `BytesIO` file-like object
This may or may not be an important case, but I was unable to get this to work. In the future, I would hope to be able to get this working using `fsspec`.


Okay, so that is a whole lot of different behaviors, including a couple that I think are probably not intended. Additionally, it seems that @sgillies intends to deprecate `BytesCollection` in favor of `MemoryFile` at some point in the future, though I'm not sure when.  I don't know what the best way forward is right now, but I think there are a couple of behaviors that would be good to get right:
1. I think that having a more duck-typed check for file-like objects (e.g., `pandas.api.types.is_file_like()`) is probably worthwhile. Then it might work better for things like `BytesIO` or `fsspec`. Alternatively, maybe fiona's file-like logic is sufficient?
1. Ideally the differences in how zipped shapefiles are handled could be smoothed out, though I'm not sure how right now.

diff --git a/ci/travis/37-latest-conda-forge.yaml b/ci/travis/37-latest-conda-forge.yaml
index 80ff961b..71f87fca 100644
--- a/ci/travis/37-latest-conda-forge.yaml
+++ b/ci/travis/37-latest-conda-forge.yaml
@@ -13,6 +13,7 @@ dependencies:
   - pytest
   - pytest-cov
   - codecov
+  - fsspec
   # optional
   - rtree
   - matplotlib
diff --git a/ci/travis/37-latest-defaults.yaml b/ci/travis/37-latest-defaults.yaml
index 5a8839a2..ad96f2c6 100644
--- a/ci/travis/37-latest-defaults.yaml
+++ b/ci/travis/37-latest-defaults.yaml
@@ -12,6 +12,7 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
+  - fsspec
   #- codecov
   # optional
   - rtree
diff --git a/ci/travis/38-latest-conda-forge.yaml b/ci/travis/38-latest-conda-forge.yaml
index d19642f2..951d7a41 100644
--- a/ci/travis/38-latest-conda-forge.yaml
+++ b/ci/travis/38-latest-conda-forge.yaml
@@ -13,6 +13,7 @@ dependencies:
   - pytest
   - pytest-cov
   - codecov
+  - fsspec
   # optional
   - rtree
   - matplotlib
diff --git a/geopandas/io/tests/test_file.py b/geopandas/io/tests/test_file.py
index 236c856d..09b5a355 100644
--- a/geopandas/io/tests/test_file.py
+++ b/geopandas/io/tests/test_file.py
@@ -304,6 +304,16 @@ def test_read_file_remote_geojson_url():
     assert isinstance(gdf, geopandas.GeoDataFrame)
 
 
+@pytest.mark.web
+def test_read_file_remote_zipfile_url():
+    url = (
+        "https://raw.githubusercontent.com/geopandas/geopandas/"
+        "master/geopandas/datasets/nybb_16a.zip"
+    )
+    gdf = read_file(url)
+    assert isinstance(gdf, geopandas.GeoDataFrame)
+
+
 def test_read_file_textio(file_path):
     file_text_stream = open(file_path)
     file_stringio = io.StringIO(open(file_path).read())
@@ -356,6 +366,47 @@ def test_read_file_tempfile():
     temp.close()
 
 
+def test_read_binary_file_fsspec():
+    fsspec = pytest.importorskip("fsspec")
+    # Remove the zip scheme so fsspec doesn't open as a zipped file,
+    # instead we want to read as bytes and let fiona decode it.
+    path = geopandas.datasets.get_path("nybb")[6:]
+    with fsspec.open(path, "rb") as f:
+        gdf = read_file(f)
+        assert isinstance(gdf, geopandas.GeoDataFrame)
+
+
+def test_read_text_file_fsspec(file_path):
+    fsspec = pytest.importorskip("fsspec")
+    with fsspec.open(file_path, "r") as f:
+        gdf = read_file(f)
+        assert isinstance(gdf, geopandas.GeoDataFrame)
+
+
+def test_infer_zipped_file():
+    # Remove the zip scheme so that the test for a zipped file can
+    # check it and add it back.
+    path = geopandas.datasets.get_path("nybb")[6:]
+    gdf = read_file(path)
+    assert isinstance(gdf, geopandas.GeoDataFrame)
+
+    # Check that it can sucessfully add a zip scheme to a path that already has a scheme
+    gdf = read_file("file+file://" + path)
+    assert isinstance(gdf, geopandas.GeoDataFrame)
+
+    # Check that it can add a zip scheme for a path that includes a subpath
+    # within the archive.
+    gdf = read_file(path + "!nybb.shp")
+    assert isinstance(gdf, geopandas.GeoDataFrame)
+
+
+def test_allow_legacy_gdal_path():
+    # Construct a GDAL-style zip path.
+    path = "/vsizip/" + geopandas.datasets.get_path("nybb")[6:]
+    gdf = read_file(path)
+    assert isinstance(gdf, geopandas.GeoDataFrame)
+
+
 def test_read_file_filtered(df_nybb):
     full_df_shape = df_nybb.shape
     nybb_filename = geopandas.datasets.get_path("nybb")

environment.yml
pip install -e .[dev]
parse_log_pytest
environment.yml
pytest
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1741918516150/work
black @ file:///home/conda/feedstock_root/build_artifacts/black-recipe_1742502760723/work
Brotli @ file:///home/conda/feedstock_root/build_artifacts/brotli-split_1648883617327/work
certifi @ file:///home/conda/feedstock_root/build_artifacts/certifi_1739515848642/work/certifi
cffi @ file:///home/conda/feedstock_root/build_artifacts/cffi_1636046055389/work
cfgv @ file:///home/conda/feedstock_root/build_artifacts/cfgv_1734267080977/work
charset-normalizer @ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1735929714516/work
click @ file:///home/conda/feedstock_root/build_artifacts/click_1734858813237/work
click-plugins @ file:///home/conda/feedstock_root/build_artifacts/click-plugins_1733731077999/work
cligj @ file:///home/conda/feedstock_root/build_artifacts/cligj_1733749956636/work
codecov @ file:///home/conda/feedstock_root/build_artifacts/codecov_1734975286850/work
colorama @ file:///home/conda/feedstock_root/build_artifacts/colorama_1733218098505/work
contourpy @ file:///home/conda/feedstock_root/build_artifacts/contourpy_1652954513473/work
coverage @ file:///home/conda/feedstock_root/build_artifacts/coverage_1743381221492/work
cycler @ file:///home/conda/feedstock_root/build_artifacts/cycler_1733332471406/work
descartes @ file:///home/conda/feedstock_root/build_artifacts/descartes_1734602598660/work
distlib @ file:///home/conda/feedstock_root/build_artifacts/distlib_1733238395481/work
exceptiongroup @ file:///home/conda/feedstock_root/build_artifacts/exceptiongroup_1733208806608/work
filelock @ file:///home/conda/feedstock_root/build_artifacts/filelock_1741969488311/work
Fiona==1.8.20
fonttools @ file:///home/conda/feedstock_root/build_artifacts/fonttools_1651017733844/work
GDAL==3.3.2
geographiclib @ file:///home/conda/feedstock_root/build_artifacts/geographiclib_1734342349249/work
-e git+https://github.com/geopandas/geopandas.git@a17c61f54a3b2ee9409fb34c484b1f0013693e11#egg=geopandas
geopy @ file:///home/conda/feedstock_root/build_artifacts/geopy_1734341931581/work
greenlet @ file:///home/conda/feedstock_root/build_artifacts/greenlet_1648882382645/work
h2 @ file:///home/conda/feedstock_root/build_artifacts/h2_1738578511449/work
hpack @ file:///home/conda/feedstock_root/build_artifacts/hpack_1737618293087/work
hyperframe @ file:///home/conda/feedstock_root/build_artifacts/hyperframe_1737618333194/work
identify @ file:///home/conda/feedstock_root/build_artifacts/identify_1741502659866/work
idna @ file:///home/conda/feedstock_root/build_artifacts/idna_1733211830134/work
importlib_resources @ file:///home/conda/feedstock_root/build_artifacts/importlib_resources_1736252299705/work
iniconfig @ file:///home/conda/feedstock_root/build_artifacts/iniconfig_1733223141826/work
kiwisolver @ file:///home/conda/feedstock_root/build_artifacts/kiwisolver_1648854392795/work
matplotlib @ file:///croot/matplotlib-suite_1713336378214/work
munch @ file:///home/conda/feedstock_root/build_artifacts/munch_1734441240299/work
munkres==1.1.4
mypy_extensions @ file:///home/conda/feedstock_root/build_artifacts/mypy_extensions_1733230897951/work
nodeenv @ file:///home/conda/feedstock_root/build_artifacts/nodeenv_1734112117269/work
numpy @ file:///home/conda/feedstock_root/build_artifacts/numpy_1651020388495/work
olefile @ file:///home/conda/feedstock_root/build_artifacts/olefile_1734769783178/work
packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1733203243479/work
pandas==1.4.2
pathspec @ file:///home/conda/feedstock_root/build_artifacts/pathspec_1733233363808/work
Pillow @ file:///home/conda/feedstock_root/build_artifacts/pillow_1630696601414/work
platformdirs @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_platformdirs_1742485085/work
pluggy @ file:///home/conda/feedstock_root/build_artifacts/pluggy_1733222765875/work
pre_commit @ file:///home/conda/feedstock_root/build_artifacts/pre-commit_1742475552107/work
psycopg2 @ file:///home/conda/feedstock_root/build_artifacts/psycopg2-split_1636701485031/work
pycparser @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_pycparser_1733195786/work
pyparsing @ file:///home/conda/feedstock_root/build_artifacts/pyparsing_1652235407899/work
pyproj @ file:///home/conda/feedstock_root/build_artifacts/pyproj_1650803091911/work
PyQt5==5.12.3
PyQt5_sip==4.19.18
PyQtChart==5.12
PyQtWebEngine==5.12.1
PySocks @ file:///home/conda/feedstock_root/build_artifacts/pysocks_1733217236728/work
pytest @ file:///home/conda/feedstock_root/build_artifacts/pytest_1740946542080/work
pytest-cov @ file:///home/conda/feedstock_root/build_artifacts/pytest-cov_1733223023082/work
python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1733215673016/work
pytz @ file:///home/conda/feedstock_root/build_artifacts/pytz_1742920838005/work
PyYAML @ file:///home/conda/feedstock_root/build_artifacts/pyyaml_1648757097602/work
requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1733217035951/work
rtree @ file:///home/conda/feedstock_root/build_artifacts/rtree_1741378561624/work
Shapely @ file:///home/conda/feedstock_root/build_artifacts/shapely_1635194355088/work
six @ file:///home/conda/feedstock_root/build_artifacts/six_1733380938961/work
SQLAlchemy @ file:///home/conda/feedstock_root/build_artifacts/sqlalchemy_1651017976253/work
toml @ file:///home/conda/feedstock_root/build_artifacts/toml_1734091811753/work
tomli @ file:///home/conda/feedstock_root/build_artifacts/tomli_1733256695513/work
tornado @ file:///home/conda/feedstock_root/build_artifacts/tornado_1648827245914/work
typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_typing_extensions_1743201626/work
ukkonen @ file:///home/conda/feedstock_root/build_artifacts/ukkonen_1649407036294/work
unicodedata2 @ file:///home/conda/feedstock_root/build_artifacts/unicodedata2_1649111919389/work
urllib3 @ file:///home/conda/feedstock_root/build_artifacts/urllib3_1734859416348/work
virtualenv @ file:///home/conda/feedstock_root/build_artifacts/virtualenv_1741337798015/work
zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1732827521216/work
zstandard @ file:///croot/zstandard_1677013143055/work

name: geopandas
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - alsa-lib=1.2.3.2=h166bdaf_0
  - attrs=25.3.0=pyh71513ae_0
  - black=25.1.0=pyha5154f8_0
  - boost-cpp=1.74.0=h312852a_4
  - brotli=1.0.9=h166bdaf_7
  - brotli-bin=1.0.9=h166bdaf_7
  - brotli-python=1.0.9=py39h5a03fae_7
  - bzip2=1.0.8=h7f98852_4
  - c-ares=1.18.1=h7f98852_0
  - ca-certificates=2025.2.25=h06a4308_0
  - cairo=1.16.0=h6cf1ce9_1008
  - certifi=2025.1.31=pyhd8ed1ab_0
  - cffi=1.15.0=py39h4bc2ebd_0
  - cfgv=3.3.1=pyhd8ed1ab_1
  - cfitsio=3.470=hb418390_7
  - charset-normalizer=3.4.1=pyhd8ed1ab_0
  - click=8.1.8=pyh707e725_0
  - click-plugins=1.1.1=pyhd8ed1ab_1
  - cligj=0.7.2=pyhd8ed1ab_2
  - codecov=2.1.13=pyhd8ed1ab_1
  - colorama=0.4.6=pyhd8ed1ab_1
  - contourpy=1.0.2=py39hf939315_2
  - coverage=7.8.0=pyhe1237c8_0
  - curl=7.79.1=h2574ce0_1
  - cycler=0.12.1=pyhd8ed1ab_1
  - dbus=1.13.6=h48d8840_2
  - descartes=1.1.0=pyhd8ed1ab_5
  - distlib=0.3.9=pyhd8ed1ab_1
  - exceptiongroup=1.2.2=pyhd8ed1ab_1
  - expat=2.4.8=h27087fc_0
  - filelock=3.18.0=pyhd8ed1ab_0
  - fiona=1.8.20=py39h427c1bf_2
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=h77eed37_3
  - fontconfig=2.14.0=h8e229c2_0
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.33.3=py39hb9d737c_0
  - freetype=2.10.4=h0708190_1
  - freexl=1.0.6=h7f98852_0
  - gdal=3.3.2=py39h218ed2d_2
  - geographiclib=2.0=pyhd8ed1ab_1
  - geopy=2.4.1=pyhd8ed1ab_2
  - geos=3.9.1=h9c3ff4c_2
  - geotiff=1.7.0=h4f31c25_0
  - gettext=0.19.8.1=h73d1719_1008
  - giflib=5.2.1=h36c2ea0_2
  - glib=2.68.4=h9c3ff4c_1
  - glib-tools=2.68.4=h9c3ff4c_1
  - greenlet=1.1.2=py39h5a03fae_2
  - gst-plugins-base=1.18.5=hf529b03_0
  - gstreamer=1.18.5=h76c114f_0
  - h2=4.2.0=pyhd8ed1ab_0
  - hdf4=4.2.15=h10796ff_3
  - hdf5=1.12.1=nompi_h2750804_100
  - hpack=4.1.0=pyhd8ed1ab_0
  - hyperframe=6.1.0=pyhd8ed1ab_0
  - icu=68.2=h9c3ff4c_0
  - identify=2.6.9=pyhd8ed1ab_0
  - idna=3.10=pyhd8ed1ab_1
  - importlib_resources=6.5.2=pyhd8ed1ab_0
  - iniconfig=2.0.0=pyhd8ed1ab_1
  - jbig=2.1=h7f98852_2003
  - jpeg=9e=h166bdaf_1
  - json-c=0.15=h98cffda_0
  - kealib=1.4.14=h87e4c3c_3
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.4.2=py39hf939315_1
  - krb5=1.19.3=h3790be6_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - lerc=2.2.1=h9c3ff4c_0
  - libblas=3.9.0=16_linux64_openblas
  - libbrotlicommon=1.0.9=h166bdaf_7
  - libbrotlidec=1.0.9=h166bdaf_7
  - libbrotlienc=1.0.9=h166bdaf_7
  - libcblas=3.9.0=16_linux64_openblas
  - libclang=11.1.0=default_ha53f305_1
  - libcurl=7.79.1=h2574ce0_1
  - libdap4=3.20.6=hd7c4107_2
  - libdeflate=1.7=h7f98852_5
  - libedit=3.1.20191231=he28a2e2_2
  - libev=4.33=h516909a_1
  - libevent=2.1.10=h9b69904_4
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgdal=3.3.2=hd2dd7ad_2
  - libgfortran-ng=13.2.0=h69a702a_0
  - libgfortran5=13.2.0=ha4646dd_0
  - libglib=2.68.4=h174f98d_1
  - libgomp=11.2.0=h1234567_1
  - libiconv=1.17=h166bdaf_0
  - libkml=1.3.0=h238a007_1014
  - liblapack=3.9.0=16_linux64_openblas
  - libllvm11=11.1.0=hf817b99_2
  - libnetcdf=4.8.1=nompi_hb3fd0d9_101
  - libnghttp2=1.43.0=h812cca2_1
  - libnsl=2.0.0=h7f98852_0
  - libogg=1.3.4=h7f98852_1
  - libopenblas=0.3.21=h043d6bf_0
  - libopus=1.3.1=h7f98852_1
  - libpng=1.6.37=h21135ba_2
  - libpq=13.3=hd57d9b9_0
  - librttopo=1.1.0=h1185371_6
  - libspatialindex=1.9.3=h9c3ff4c_4
  - libspatialite=5.0.1=h8694cbe_6
  - libssh2=1.10.0=ha56f1ee_2
  - libstdcxx-ng=11.2.0=h1234567_1
  - libtiff=4.3.0=hf544144_1
  - libuuid=2.32.1=h7f98852_1000
  - libvorbis=1.3.7=h9c3ff4c_0
  - libwebp-base=1.2.2=h7f98852_1
  - libxcb=1.13=h7f98852_1004
  - libxkbcommon=1.0.3=he3ba5ed_0
  - libxml2=2.9.12=h72842e0_0
  - libzip=1.8.0=h4de3113_1
  - lz4-c=1.9.3=h9c3ff4c_1
  - matplotlib=3.8.4=py39hf3d152e_2
  - matplotlib-base=3.8.4=py39h1128e8f_0
  - munch=4.0.0=pyhd8ed1ab_1
  - munkres=1.1.4=pyh9f0ad1d_0
  - mypy_extensions=1.0.0=pyha770c72_1
  - mysql-common=8.0.25=ha770c72_2
  - mysql-libs=8.0.25=hfa10184_2
  - ncurses=6.4=h6a678d5_0
  - nodeenv=1.9.1=pyhd8ed1ab_1
  - nspr=4.32=h9c3ff4c_1
  - nss=3.69=hb5efdd6_1
  - numpy=1.22.3=py39hc58783e_2
  - olefile=0.47=pyhd8ed1ab_1
  - openjpeg=2.4.0=hb52868f_1
  - openssl=1.1.1o=h166bdaf_0
  - packaging=24.2=pyhd8ed1ab_2
  - pandas=1.4.2=py39h1832856_1
  - pathspec=0.12.1=pyhd8ed1ab_1
  - pcre=8.45=h9c3ff4c_0
  - pillow=8.3.2=py39ha612740_0
  - pip=25.0=py39h06a4308_0
  - pixman=0.40.0=h36c2ea0_0
  - platformdirs=4.3.7=pyh29332c3_0
  - pluggy=1.5.0=pyhd8ed1ab_1
  - poppler=21.09.0=ha39eefc_3
  - poppler-data=0.4.12=hd8ed1ab_0
  - postgresql=13.3=h2510834_0
  - pre-commit=4.2.0=pyha770c72_0
  - proj=8.0.1=h277dcde_0
  - psycopg2=2.9.2=py39h3811e60_0
  - pthread-stubs=0.4=h36c2ea0_1001
  - pycparser=2.22=pyh29332c3_1
  - pyparsing=3.0.9=pyhd8ed1ab_0
  - pyproj=3.3.1=py39h02a9fcc_0
  - pyqt=5.12.3=py39hf3d152e_8
  - pyqt-impl=5.12.3=py39hde8b62d_8
  - pyqt5-sip=4.19.18=py39he80948d_8
  - pyqtchart=5.12=py39h0fcd23e_8
  - pyqtwebengine=5.12.1=py39h0fcd23e_8
  - pysocks=1.7.1=pyha55dd90_7
  - pytest=8.3.5=pyhd8ed1ab_0
  - pytest-cov=6.0.0=pyhd8ed1ab_1
  - python=3.9.7=hb7a2778_3_cpython
  - python-dateutil=2.9.0.post0=pyhff2d567_1
  - python_abi=3.9=5_cp39
  - pytz=2025.2=pyhd8ed1ab_0
  - pyyaml=6.0=py39hb9d737c_4
  - qt=5.12.9=hda022c4_4
  - readline=8.2=h5eee18b_0
  - requests=2.32.3=pyhd8ed1ab_1
  - rtree=1.4.0=pyh11ca60a_1
  - setuptools=75.8.0=py39h06a4308_0
  - shapely=1.8.0=py39ha61afbd_0
  - six=1.17.0=pyhd8ed1ab_0
  - sqlalchemy=1.4.36=py39hb9d737c_0
  - sqlite=3.45.3=h5eee18b_0
  - tiledb=2.3.4=he87e0bf_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd8ed1ab_1
  - tomli=2.2.1=pyhd8ed1ab_1
  - tornado=6.1=py39hb9d737c_3
  - typing_extensions=4.13.0=pyh29332c3_1
  - tzcode=2022a=h166bdaf_0
  - tzdata=2025a=h04d1e81_0
  - ukkonen=1.0.1=py39hf939315_2
  - unicodedata2=14.0.0=py39hb9d737c_1
  - urllib3=2.3.0=pyhd8ed1ab_0
  - virtualenv=20.29.3=pyhd8ed1ab_0
  - wheel=0.45.1=py39h06a4308_0
  - xerces-c=3.2.3=h9d8b166_3
  - xorg-kbproto=1.0.7=h7f98852_1002
  - xorg-libice=1.0.10=h7f98852_0
  - xorg-libsm=1.2.3=hd9c2040_1000
  - xorg-libx11=1.7.2=h7f98852_0
  - xorg-libxau=1.0.9=h7f98852_0
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xorg-libxext=1.3.4=h7f98852_1
  - xorg-libxrender=0.9.10=h7f98852_1003
  - xorg-renderproto=0.11.1=h7f98852_1002
  - xorg-xextproto=7.3.0=h7f98852_1002
  - xorg-xproto=7.0.31=h7f98852_1007
  - xz=5.6.4=h5eee18b_1
  - yaml=0.2.5=h7f98852_2
  - zipp=3.21.0=pyhd8ed1ab_1
  - zlib=1.2.13=h5eee18b_1
  - zstandard=0.19.0=py39h5eee18b_0
  - zstd=1.5.0=ha95c52a_0
prefix: /opt/conda/envs/geopandas

geopandas/io/tests/test_file.py::test_infer_zipped_file
geopandas/io/tests/test_file.py::test_to_file_bool[GPKG-gpkg] geopandas/io/tests/test_file.py::test_to_file_datetime geopandas/io/tests/test_file.py::test_append_file[GeoJSON-geojson] geopandas/io/tests/test_file.py::test_read_file_remote_geojson_url geopandas/io/tests/test_file.py::test_read_file_remote_zipfile_url
geopandas/io/tests/test_file.py::test_to_file[ESRI geopandas/io/tests/test_file.py::test_to_file[GeoJSON-geojson] geopandas/io/tests/test_file.py::test_to_file[GPKG-gpkg] geopandas/io/tests/test_file.py::test_to_file_pathlib[ESRI geopandas/io/tests/test_file.py::test_to_file_pathlib[GeoJSON-geojson] geopandas/io/tests/test_file.py::test_to_file_pathlib[GPKG-gpkg] geopandas/io/tests/test_file.py::test_to_file_bool[ESRI geopandas/io/tests/test_file.py::test_to_file_bool[GeoJSON-geojson] geopandas/io/tests/test_file.py::test_to_file_with_point_z[ESRI geopandas/io/tests/test_file.py::test_to_file_with_point_z[GeoJSON-geojson] geopandas/io/tests/test_file.py::test_to_file_with_point_z[GPKG-gpkg] geopandas/io/tests/test_file.py::test_to_file_with_poly_z[ESRI geopandas/io/tests/test_file.py::test_to_file_with_poly_z[GeoJSON-geojson] geopandas/io/tests/test_file.py::test_to_file_with_poly_z[GPKG-gpkg] geopandas/io/tests/test_file.py::test_to_file_types geopandas/io/tests/test_file.py::test_to_file_int64 geopandas/io/tests/test_file.py::test_to_file_empty geopandas/io/tests/test_file.py::test_to_file_privacy geopandas/io/tests/test_file.py::test_to_file_schema geopandas/io/tests/test_file.py::test_to_file_column_len geopandas/io/tests/test_file.py::test_append_file[ESRI geopandas/io/tests/test_file.py::test_append_file[GPKG-gpkg] geopandas/io/tests/test_file.py::test_read_file geopandas/io/tests/test_file.py::test_read_file_textio geopandas/io/tests/test_file.py::test_read_file_bytesio geopandas/io/tests/test_file.py::test_read_file_raw_stream geopandas/io/tests/test_file.py::test_read_file_pathlib geopandas/io/tests/test_file.py::test_read_file_tempfile geopandas/io/tests/test_file.py::test_allow_legacy_gdal_path geopandas/io/tests/test_file.py::test_read_file_filtered geopandas/io/tests/test_file.py::test_read_file_filtered__rows geopandas/io/tests/test_file.py::test_read_file_filtered__rows_bbox geopandas/io/tests/test_file.py::test_read_file_filtered__rows_bbox__polygon geopandas/io/tests/test_file.py::test_read_file_filtered_rows_invalid geopandas/io/tests/test_file.py::test_read_file__ignore_geometry geopandas/io/tests/test_file.py::test_read_file__ignore_all_fields geopandas/io/tests/test_file.py::test_read_file_filtered_with_gdf_boundary geopandas/io/tests/test_file.py::test_read_file_filtered_with_gdf_boundary__mask geopandas/io/tests/test_file.py::test_read_file_filtered_with_gdf_boundary__mask__polygon geopandas/io/tests/test_file.py::test_read_file_filtered_with_gdf_boundary_mismatched_crs geopandas/io/tests/test_file.py::test_read_file_filtered_with_gdf_boundary_mismatched_crs__mask geopandas/io/tests/test_file.py::test_read_file_empty_shapefile geopandas/io/tests/test_file.py::test_read_file_privacy geopandas/io/tests/test_file.py::test_write_index_to_file[ESRI geopandas/io/tests/test_file.py::test_write_index_to_file[GeoJSON-geojson]
geopandas/tools/clip.py geopandas/io/file.py ci/travis/37-dev.yaml doc/source/docs/user_guide/io.rst ci/travis/36-minimal.yaml ci/travis/36-pd025.yaml geopandas/geodataframe.py
geopandas/tools/clip.py geopandas/io/file.py ci/travis/37-dev.yaml doc/source/docs/user_guide/io.rst ci/travis/36-minimal.yaml ci/travis/36-pd025.yaml geopandas/geodataframe.py