diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000..7c7a7068
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,39 @@
+---
+
+name: Bug Report
+about: Create a bug report to help us improve geopandas
+title: "BUG:"
+labels: "bug, needs triage"
+
+---
+
+- [ ] I have checked that this issue has not already been reported.
+
+- [ ] I have confirmed this bug exists on the latest version of geopandas.
+
+- [ ] (optional) I have confirmed this bug exists on the master branch of geopandas.
+
+---
+
+**Note**: Please read [this guide](https://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) detailing how to provide the necessary information for us to reproduce your bug.
+
+#### Code Sample, a copy-pastable example
+
+```python
+# Your code here
+
+```
+
+#### Problem description
+
+[this should explain **why** the current behaviour is a problem and why the expected output is a better solution]
+
+#### Expected Output
+
+#### Output of ``geopandas.show_versions()``
+
+<details>
+
+[paste the output of ``geopandas.show_versions()`` here leaving a blank line after the details tag]
+
+</details>
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 00000000..cdb5ba02
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,34 @@
+---
+
+name: Feature Request
+about: Suggest an idea for geopandas
+title: "ENH:"
+labels: "enhancement"
+
+---
+
+#### Is your feature request related to a problem?
+
+[this should provide a description of what the problem is, e.g. "I wish I could use geopandas to do [...]"]
+
+#### Describe the solution you'd like
+
+[this should provide a description of the feature request, e.g. "`GeoDataFrame.foo` should get a new parameter `bar` that [...]", try to write a docstring for the desired feature]
+
+#### API breaking implications
+
+[this should provide a description of how this feature will affect the API]
+
+#### Describe alternatives you've considered
+
+[this should provide a description of any alternative solutions or features you've considered]
+
+#### Additional context
+
+[add any other context, code examples, or references to existing implementations about the feature request here]
+
+```python
+# Your code here, if applicable
+
+```
+
diff --git a/.github/ISSUE_TEMPLATE/installation_issue.md b/.github/ISSUE_TEMPLATE/installation_issue.md
new file mode 100644
index 00000000..d0564330
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/installation_issue.md
@@ -0,0 +1,29 @@
+---
+
+name: Installation Issue 
+about: Ask about installing geopandas 
+title: ""
+labels: "installation"
+
+---
+
+- [ ] I have read the [documentation on installation](https://geopandas.org/install.html) and followed the instructions provided.
+
+- [ ] I have looked through [issues labeled "installation"](https://github.com/geopandas/geopandas/labels/installation) in the geopandas repo.
+
+---
+
+#### System information
+
+[what operating system do you have and what package management system are you
+using]
+
+#### Environment details
+
+<details>
+
+[if using conda, paste the output of `conda info` and `conda list`; if using
+pip, `pip freeze`] 
+
+</details>
+
diff --git a/.github/ISSUE_TEMPLATE/submit_question.md b/.github/ISSUE_TEMPLATE/submit_question.md
new file mode 100644
index 00000000..c118c3d9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/submit_question.md
@@ -0,0 +1,24 @@
+---
+
+name: Submit Question
+about: Ask a general question about geopandas
+title: "QST:"
+labels: "question"
+
+---
+
+- [ ] I have searched the [geopandas] tag on [StackOverflow](https://stackoverflow.com/questions/tagged/geopandas) and [GIS StackExchange](https://gis.stackexchange.com/questions/tagged/geopandas) for similar questions.
+
+- [ ] I have asked my usage related question on [StackOverflow](https://stackoverflow.com) or [GIS StackExhange](https://gis.stackexchange.com).
+
+---
+
+#### Question about geopandas
+
+**Note**: If you'd still like to submit a question, please read [this guide](
+https://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) detailing how to provide the necessary information for us to reproduce your question.
+
+```python
+# Your code here, if applicable
+
+```
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index b6390b7b..0ec40998 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,3 +1,4 @@
+files: 'geopandas\/'
 repos:
 -   repo: https://github.com/python/black
     rev: 20.8b1
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 4ba4225c..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-language: python
-
-sudo: false
-
-matrix:
-  include:
-    # One build with minimum versions of dependencies
-    - env: ENV_FILE="ci/travis/36-minimal.yaml"
-
-    # one build with no optional dependencies
-    - env: ENV_FILE="ci/travis/38-no-optional-deps.yaml"
-
-    # Python 3.6 test all supported Pandas versions
-    - env: ENV_FILE="ci/travis/36-pd025.yaml" PYGEOS=true
-
-    - env: ENV_FILE="ci/travis/37-latest-defaults.yaml" STYLE=true PYGEOS=true
-    - env: ENV_FILE="ci/travis/37-latest-conda-forge.yaml" PYGEOS=true
-
-    - env: ENV_FILE="ci/travis/38-latest-conda-forge.yaml" PYGEOS=true POSTGIS=true PGUSER=postgres PGPASSWORD=postgres
-
-    - env: ENV_FILE="ci/travis/37-dev.yaml" DEV=true PYGEOS=true
-
-  allow_failures:
-    - env: ENV_FILE="ci/travis/37-dev.yaml" DEV=true PYGEOS=true
-
-before_install:
-  - chmod +x ci/travis/setup_postgres.sh
-
-install:
-  # Install conda
-  - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
-  - bash miniconda.sh -b -p $HOME/miniconda
-  - export PATH="$HOME/miniconda/bin:$PATH"
-  - conda config --set always_yes yes --set changeps1 no
-  - conda update conda
-  - conda info
-
-  # free channel needed for older envs (< py37), see
-  # https://github.com/conda/conda/issues/8849
-  - conda config --set restore_free_channel true
-
-  # Install dependencies
-  - conda env create --file="${ENV_FILE}"
-  - source activate test
-  - if [ "$DEV" ]; then pip install git+https://github.com/pydata/pandas.git; fi
-  - if [ "$DEV" ]; then pip install git+https://github.com/matplotlib/matplotlib.git; fi
-  - if [ "$DEV" ]; then pip install git+https://github.com/Toblerity/Shapely.git; fi
-  - if [ "$STYLE" ]; then pip install black flake8; fi
-  - if [ "$POSTGIS" ]; then conda install postgis -c conda-forge; fi
-  - pip install -e .
-
-  # List environment
-  - conda list
-  - python -c "import geopandas; geopandas.show_versions();"
-
-  # Set-up database
-  - if [ "$POSTGIS" ]; then ci/travis/setup_postgres.sh; fi
-
-script:
-  - echo "Testing without PyGEOS"
-  - USE_PYGEOS=0 pytest geopandas -v -r s --cov geopandas --cov-report term-missing
-  - if [ "$PYGEOS" ]; then echo "Testing with PyGEOS"; fi
-  - if [ "$PYGEOS" ]; then USE_PYGEOS=1 pytest geopandas -v -r s --cov-append --cov geopandas --cov-report term-missing; fi
-  - if [ "$STYLE" ]; then black --check geopandas; fi
-  - if [ "$STYLE" ]; then flake8 geopandas; fi
-
-after_success:
-  - codecov
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index 19d20d9a..00000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-# With infos from
-# http://tjelvarolsson.com/blog/how-to-continuously-test-your-python-code-on-windows-using-appveyor/
-# https://packaging.python.org/en/latest/appveyor/
-# https://github.com/rmcgibbo/python-appveyor-conda-example
-
-environment:
-  matrix:
-    - PYTHON_VERSION: "3.7"
-      MINICONDA: C:\Miniconda37-x64
-      ENV_FILE: "ci/travis/37-latest-conda-forge.yaml"
-
-    - PYTHON_VERSION: "3.8"
-      MINICONDA: C:\Miniconda37-x64
-      ENV_FILE: "ci/travis/38-latest-conda-forge.yaml"
-
-# all our python builds have to happen in tests_script...
-build: false
-
-init:
-  - "ECHO %PYTHON_VERSION% %MINICONDA%"
-
-install:
-  # cancel older builds for the same PR
-  - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
-        https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
-        Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
-        throw "There are newer queued builds for this pull request, failing early." }
-
-  # set up environment
-  - CALL "%MINICONDA%\\Scripts\\activate.bat"
-  - conda config --set always_yes yes --set show_channel_urls true --set changeps1 no
-  - conda update conda
-  # this is basically equivalent to what conda init does.  It changes the "conda" to
-  #    be a .bat script that sets appropriate PATH entries before conda hits problems.
-  #  This PATH modification only works with conda 4.6+, but it won't hurt other versions.
-  - set "PATH=%MINICONDA%\condabin:%PATH%"
-  - conda info -a
-  - conda config --add channels conda-forge
-  - conda config --set channel_priority strict
-  - conda env create --file="${ENV_FILE}"
-
-test_script:
-  # this uses condabin/conda.bat because of our PATH modification above
-  - conda activate test
-  - conda list
-  - pytest geopandas -v
diff --git a/ci/travis/36-minimal.yaml b/ci/travis/36-minimal.yaml
index 3533fc12..16e9d996 100644
--- a/ci/travis/36-minimal.yaml
+++ b/ci/travis/36-minimal.yaml
@@ -13,7 +13,7 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
-  - codecov
+  - pytest-xdist
   - fsspec
   # optional
   - rtree
diff --git a/ci/travis/36-pd025.yaml b/ci/travis/36-pd025.yaml
index cf5df536..c089da9e 100644
--- a/ci/travis/36-pd025.yaml
+++ b/ci/travis/36-pd025.yaml
@@ -12,8 +12,8 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
+  - pytest-xdist
   - fsspec
-  #- codecov
   # optional
   - rtree
   - matplotlib
@@ -24,7 +24,6 @@ dependencies:
   - pyarrow
   - pip:
       - pyproj==2.3.1
-      - codecov
       - geopy
       - mapclassify==2.2.0
       - git+https://github.com/pygeos/pygeos.git
diff --git a/ci/travis/37-dev.yaml b/ci/travis/37-dev.yaml
index 2b463640..266537f6 100644
--- a/ci/travis/37-dev.yaml
+++ b/ci/travis/37-dev.yaml
@@ -5,26 +5,26 @@ dependencies:
   - python=3.7.3
   - cython
   # required
-  - pandas
-  - shapely
   - fiona
   - pyproj
   - geos
   # testing
   - pytest
   - pytest-cov
+  - pytest-xdist
   - fsspec
-  #- codecov
   # optional
   - rtree
-  - matplotlib
   - descartes
   #- geopy
   - SQLalchemy
   - libspatialite
   - pyarrow
   - pip:
-    - codecov
     - geopy
     - mapclassify>=2.2.0
-    - git+https://github.com/pygeos/pygeos.git
+    # dev versions of packages
+    - git+https://github.com/pydata/pandas.git@master
+    - git+https://github.com/matplotlib/matplotlib.git@master
+    - git+https://github.com/Toblerity/Shapely.git@master
+    - git+https://github.com/pygeos/pygeos.git@master
diff --git a/ci/travis/38-no-optional-deps.yaml b/ci/travis/38-no-optional-deps.yaml
index d6fe127e..d1d3f0cc 100644
--- a/ci/travis/38-no-optional-deps.yaml
+++ b/ci/travis/38-no-optional-deps.yaml
@@ -11,4 +11,4 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
-  - codecov
+  - pytest-xdist
diff --git a/ci/travis/setup_postgres.sh b/ci/travis/setup_postgres.sh
index 96645f3d..32defae0 100644
--- a/ci/travis/setup_postgres.sh
+++ b/ci/travis/setup_postgres.sh
@@ -14,7 +14,7 @@ while [ ! -e /tmp/.s.PGSQL.5432 ]; do
     echo -n '.'
 done
 
-createuser -U travis -s postgres
+createuser -U ${USER} -s postgres
 createdb --owner=postgres test_geopandas
 psql -d test_geopandas -q -c "CREATE EXTENSION postgis"
 
diff --git a/codecov.yml b/codecov.yml
new file mode 100644
index 00000000..c6d92a61
--- /dev/null
+++ b/codecov.yml
@@ -0,0 +1,6 @@
+coverage:
+  status:
+    project:
+      default:
+        target: 95%    # the required coverage value
+        threshold: 0.2%  # the leniency in hitting the target
diff --git a/geopandas/_vectorized.py b/geopandas/_vectorized.py
index d31cfc9f..291a3dfc 100644
--- a/geopandas/_vectorized.py
+++ b/geopandas/_vectorized.py
@@ -474,23 +474,28 @@ def is_simple(data):
 
 
 def is_ring(data):
-    if compat.USE_PYGEOS:
-        return pygeos.is_ring(pygeos.get_exterior_ring(data))
-    else:
-        # operates on the exterior, so can't use _unary_op()
-        # XXX needed to change this because there is now a geometry collection
-        # in the shapely ones that was something else before?
-        return np.array(
-            [
-                geom.exterior.is_ring
-                if geom is not None
-                and hasattr(geom, "exterior")
-                and geom.exterior is not None
-                else False
-                for geom in data
-            ],
-            dtype=bool,
+    if "Polygon" in geom_type(data):
+        warnings.warn(
+            "is_ring currently returns True for Polygons, which is not correct. "
+            "This will be corrected to False in a future release.",
+            FutureWarning,
+            stacklevel=3,
         )
+    if compat.USE_PYGEOS:
+        return pygeos.is_ring(data) | pygeos.is_ring(pygeos.get_exterior_ring(data))
+    else:
+        # for polygons operates on the exterior, so can't use _unary_op()
+        results = []
+        for geom in data:
+            if geom is None:
+                results.append(False)
+            elif geom.type == "Polygon":
+                results.append(geom.exterior.is_ring)
+            elif geom.type in ["LineString", "LinearRing"]:
+                results.append(geom.is_ring)
+            else:
+                results.append(False)
+        return np.array(results, dtype=bool)
 
 
 def is_closed(data):
@@ -886,6 +891,9 @@ def transform(data, func):
         result = np.empty(n, dtype=object)
         for i in range(n):
             geom = data[i]
-            result[i] = transform(func, geom)
+            if _isna(geom):
+                result[i] = geom
+            else:
+                result[i] = transform(func, geom)
 
         return result
diff --git a/geopandas/geodataframe.py b/geopandas/geodataframe.py
index a764b178..8b7d82ec 100644
--- a/geopandas/geodataframe.py
+++ b/geopandas/geodataframe.py
@@ -289,10 +289,15 @@ class GeoDataFrame(GeoPandasBase, DataFrame):
         geodataframe : GeoDataFrame
         """
         geometry_col = self.geometry.name
-        if not inplace:
-            return self.rename(columns={geometry_col: col}).set_geometry(col, inplace)
-        self.rename(columns={geometry_col: col}, inplace=inplace)
-        self.set_geometry(col, inplace=inplace)
+        if col in self.columns:
+            raise ValueError(f"Column named {col} already exists")
+        else:
+            if not inplace:
+                return self.rename(columns={geometry_col: col}).set_geometry(
+                    col, inplace
+                )
+            self.rename(columns={geometry_col: col}, inplace=inplace)
+            self.set_geometry(col, inplace=inplace)
 
     @property
     def crs(self):
diff --git a/geopandas/geoseries.py b/geopandas/geoseries.py
index 24f084a3..b79f598e 100644
--- a/geopandas/geoseries.py
+++ b/geopandas/geoseries.py
@@ -313,8 +313,8 @@ class GeoSeries(GeoPandasBase, Series):
         return self._wrapped_pandas_method("select", *args, **kwargs)
 
     @inherit_doc(pd.Series)
-    def apply(self, func, args=(), **kwargs):
-        result = super().apply(func, args=args, **kwargs)
+    def apply(self, func, convert_dtype=True, args=(), **kwargs):
+        result = super().apply(func, convert_dtype=convert_dtype, args=args, **kwargs)
         if isinstance(result, GeoSeries):
             if self.crs is not None:
                 result.set_crs(self.crs, inplace=True)
diff --git a/geopandas/plotting.py b/geopandas/plotting.py
index e82c012f..72949567 100644
--- a/geopandas/plotting.py
+++ b/geopandas/plotting.py
@@ -754,7 +754,7 @@ def plot_dataframe(
             **style_kwds
         )
 
-    if missing_kwds is not None:
+    if missing_kwds is not None and not expl_series[nan_idx].empty:
         if color:
             if "color" not in missing_kwds:
                 missing_kwds["color"] = color
diff --git a/geopandas/sindex.py b/geopandas/sindex.py
index 20a31001..fd46c124 100644
--- a/geopandas/sindex.py
+++ b/geopandas/sindex.py
@@ -252,11 +252,19 @@ if compat.HAS_RTREE:
 
         @property
         def size(self):
-            return len(self.leaves()[0][1])
+            if hasattr(self, "_size"):
+                size = self._size
+            else:
+                # self.leaves are lists of tuples of (int, lists...)
+                # index [0][1] always has an element, even for empty sindex
+                # for an empty index, it will be an empty list
+                size = len(self.leaves()[0][1])
+                self._size = size
+            return size
 
         @property
         def is_empty(self):
-            return self.size == 0
+            return self.geometries.size == 0 or self.size == 0
 
         def __len__(self):
             return self.size
diff --git a/geopandas/tools/geocoding.py b/geopandas/tools/geocoding.py
index 4e3a78f7..0398773d 100644
--- a/geopandas/tools/geocoding.py
+++ b/geopandas/tools/geocoding.py
@@ -1,7 +1,6 @@
 from collections import defaultdict
 import time
 
-import numpy as np
 import pandas as pd
 
 from shapely.geometry import Point
@@ -169,16 +168,19 @@ def _prepare_geocode_result(results):
     index = []
 
     for i, s in results.items():
-        address, loc = s
 
-        # loc is lat, lon and we want lon, lat
-        if loc is None:
+        if s is None:
             p = Point()
+            address = None
+
         else:
-            p = Point(loc[1], loc[0])
+            address, loc = s
 
-        if address is None:
-            address = np.nan
+            # loc is lat, lon and we want lon, lat
+            if loc is None:
+                p = Point()
+            else:
+                p = Point(loc[1], loc[0])
 
         d["geometry"].append(p)
         d["address"].append(address)

BUG: rename_geometry should check if duplicate column name is created
Currently if you use the name of an existing column in `rename_geometry`, you get a bit confusing error message:

```python
>>> df = geopandas.read_file(geopandas.datasets.get_path("naturalearth_lowres"))

# this gives a not super helpful error message
>>> df.rename_geometry("continent")
...
TypeError: Input must be valid geometry objects: ['Oceania'
 <shapely.geometry.multipolygon.MultiPolygon object at 0x7fdf63d03be0>]

# this raises the same error, but in addition also leaves the df in a broken state
>>> df.rename_geometry("continent", inplace=True)
...
TypeError: Input must be valid geometry objects: ['Oceania'
 <shapely.geometry.multipolygon.MultiPolygon object at 0x7fdf633e6310>]

>>> df.geometry
...
AttributeError: No geometry data set yet (expected in column 'geometry'.)
```

(originally from https://github.com/CartoDB/cartoframes/issues/1517)
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
new file mode 100644
index 00000000..5861d903
--- /dev/null
+++ b/.github/workflows/tests.yaml
@@ -0,0 +1,121 @@
+name: Tests
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+  schedule:
+    - cron:  '0 0 * * *'
+
+jobs:
+  Linting:
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v2
+      - uses: actions/setup-python@v2
+      - uses: pre-commit/action@v2.0.0
+
+  Test:
+    needs: Linting
+    name: ${{ matrix.os }}, ${{ matrix.env }}
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest]
+        postgis: [false]
+        dev: [false]
+        env:
+          - ci/travis/36-minimal.yaml
+          - ci/travis/38-no-optional-deps.yaml
+          - ci/travis/36-pd025.yaml
+          - ci/travis/37-latest-defaults.yaml
+          - ci/travis/37-latest-conda-forge.yaml
+          - ci/travis/38-latest-conda-forge.yaml
+        include:
+          - env: ci/travis/37-latest-conda-forge.yaml
+            os: macos-latest
+            postgis: false
+            dev: false
+          - env: ci/travis/38-latest-conda-forge.yaml
+            os: macos-latest
+            postgis: false
+            dev: false
+          - env: ci/travis/37-latest-conda-forge.yaml
+            os: windows-latest
+            postgis: false
+            dev: false
+          - env: ci/travis/38-latest-conda-forge.yaml
+            os: windows-latest
+            postgis: false
+            dev: false
+          - env: ci/travis/37-dev.yaml
+            os: ubuntu-latest
+            dev: true
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup Conda
+        uses: s-weigand/setup-conda@v1.0.4
+        with:
+          activate-conda: false
+
+      - name: Install Env
+        shell: bash
+        run: conda env create -f ${{ matrix.env }}
+
+
+      - name: Check and Log Environment
+        shell: bash
+        run: |
+          source activate test
+          python -V
+          python -c "import geopandas; geopandas.show_versions();"
+          conda info
+          # save conda list to file and print out
+          # so that we can do the HAS_PYGEOS check without calling conda again
+          conda list 2>&1 | tee conda.txt
+          if ( cat conda.txt | grep -q pygeos  )
+          then
+            echo "Setting HAS_PYGEOS=1"
+            echo '::set-env name=HAS_PYGEOS::1'
+          else
+            echo "Setting HAS_PYGEOS=0"
+            echo '::set-env name=HAS_PYGEOS::0'
+          fi
+
+      - name: Test without PyGEOS
+        shell: bash
+        continue-on-error: ${{ matrix.dev }}
+        env:
+          USE_PYGEOS: 0
+        run: |
+          source activate test
+          pytest -v -r s -n auto --color=yes --cov=geopandas --cov-append --cov-report term-missing --cov-report xml geopandas/
+
+      - name: Test with PyGEOS
+        shell: bash
+        continue-on-error: ${{ matrix.dev }}
+        if: env.HAS_PYGEOS == 1
+        env:
+          USE_PYGEOS: 1
+        run: |
+          source activate test
+          pytest -v -r s -n auto --color=yes --cov=geopandas --cov-append --cov-report term-missing --cov-report xml geopandas/
+
+      - name: Test with PostGIS
+        shell: bash
+        if: contains(matrix.env, '38-latest-conda-forge.yaml') && contains(matrix.os, 'ubuntu')
+        env:
+          PGUSER: postgres
+          PGPASSWORD: postgres
+          PGHOST: "127.0.0.1"
+        run: |
+          source activate test
+          conda install postgis -c conda-forge
+          source ci/travis/setup_postgres.sh
+          pytest -v -r s -color=yes --cov=geopandas --cov-append --cov-report term-missing --cov-report xml geopandas/io/tests/test_sql.py | tee /dev/stderr | if grep SKIPPED >/dev/null;then echo "TESTS SKIPPED, FAILING" && exit 1;fi
+
+      - uses: codecov/codecov-action@v1
diff --git a/ci/travis/37-latest-conda-forge.yaml b/ci/travis/37-latest-conda-forge.yaml
index 71f87fca..6023ab61 100644
--- a/ci/travis/37-latest-conda-forge.yaml
+++ b/ci/travis/37-latest-conda-forge.yaml
@@ -12,7 +12,7 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
-  - codecov
+  - pytest-xdist
   - fsspec
   # optional
   - rtree
@@ -23,3 +23,4 @@ dependencies:
   - SQLalchemy
   - libspatialite
   - pyarrow
+ 
diff --git a/ci/travis/37-latest-defaults.yaml b/ci/travis/37-latest-defaults.yaml
index ad96f2c6..d03871bd 100644
--- a/ci/travis/37-latest-defaults.yaml
+++ b/ci/travis/37-latest-defaults.yaml
@@ -12,8 +12,8 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
+  - pytest-xdist
   - fsspec
-  #- codecov
   # optional
   - rtree
   - matplotlib
@@ -23,7 +23,6 @@ dependencies:
   - libspatialite
   - pyarrow
   - pip:
-    - codecov
     - geopy
     - mapclassify
     - git+https://github.com/pygeos/pygeos.git
diff --git a/ci/travis/38-latest-conda-forge.yaml b/ci/travis/38-latest-conda-forge.yaml
index 951d7a41..a572785b 100644
--- a/ci/travis/38-latest-conda-forge.yaml
+++ b/ci/travis/38-latest-conda-forge.yaml
@@ -12,7 +12,7 @@ dependencies:
   # testing
   - pytest
   - pytest-cov
-  - codecov
+  - pytest-xdist
   - fsspec
   # optional
   - rtree
@@ -27,3 +27,4 @@ dependencies:
   - libspatialite
   - geoalchemy2
   - pyarrow
+ 
\ No newline at end of file
diff --git a/geopandas/io/tests/test_file.py b/geopandas/io/tests/test_file.py
index 09b5a355..96b11a17 100644
--- a/geopandas/io/tests/test_file.py
+++ b/geopandas/io/tests/test_file.py
@@ -261,7 +261,7 @@ def test_append_file(tmpdir, df_nybb, df_null, driver, ext):
     assert "geometry" in df
     assert len(df) == (5 * 2)
     expected = pd.concat([df_nybb] * 2, ignore_index=True)
-    assert_geodataframe_equal(df, expected)
+    assert_geodataframe_equal(df, expected, check_less_precise=True)
 
     # Write layer with null geometry out to file
     tempfilename = os.path.join(str(tmpdir), "null_geom." + ext)
@@ -272,7 +272,7 @@ def test_append_file(tmpdir, df_nybb, df_null, driver, ext):
     assert "geometry" in df
     assert len(df) == (2 * 2)
     expected = pd.concat([df_null] * 2, ignore_index=True)
-    assert_geodataframe_equal(df, expected)
+    assert_geodataframe_equal(df, expected, check_less_precise=True)
 
 
 # -----------------------------------------------------------------------------
diff --git a/geopandas/tests/test_array.py b/geopandas/tests/test_array.py
index 79d2d64f..94d7f50b 100644
--- a/geopandas/tests/test_array.py
+++ b/geopandas/tests/test_array.py
@@ -479,6 +479,22 @@ def test_unary_predicates(attr):
     assert result.tolist() == expected
 
 
+def test_is_ring():
+    g = [
+        shapely.geometry.LinearRing([(0, 0), (1, 1), (1, -1)]),
+        shapely.geometry.LineString([(0, 0), (1, 1), (1, -1)]),
+        shapely.geometry.LineString([(0, 0), (1, 1), (1, -1), (0, 0)]),
+        shapely.geometry.Polygon([(0, 0), (1, 1), (1, -1)]),
+        shapely.geometry.Polygon(),
+        None,
+    ]
+    expected = [True, False, True, True, False, False]
+
+    result = from_shapely(g).is_ring
+
+    assert result.tolist() == expected
+
+
 @pytest.mark.parametrize("attr", ["area", "length"])
 def test_unary_float(attr):
     na_value = np.nan
diff --git a/geopandas/tests/test_crs.py b/geopandas/tests/test_crs.py
index 2936d00b..a804d4b7 100644
--- a/geopandas/tests/test_crs.py
+++ b/geopandas/tests/test_crs.py
@@ -49,6 +49,15 @@ def test_to_crs_transform():
     assert_geodataframe_equal(df, utm, check_less_precise=True)
 
 
+def test_to_crs_transform__missing_data():
+    # https://github.com/geopandas/geopandas/issues/1573
+    df = df_epsg26918()
+    df.loc[3, "geometry"] = None
+    lonlat = df.to_crs(epsg=4326)
+    utm = lonlat.to_crs(epsg=26918)
+    assert_geodataframe_equal(df, utm, check_less_precise=True)
+
+
 def test_to_crs_inplace():
     df = df_epsg26918()
     lonlat = df.to_crs(epsg=4326)
diff --git a/geopandas/tests/test_geocode.py b/geopandas/tests/test_geocode.py
index dd5de8a3..ec8740cc 100644
--- a/geopandas/tests/test_geocode.py
+++ b/geopandas/tests/test_geocode.py
@@ -1,4 +1,3 @@
-import numpy as np
 import pandas as pd
 
 from shapely.geometry import Point
@@ -9,6 +8,7 @@ from geopandas.tools.geocoding import _prepare_geocode_result
 
 from geopandas.tests.util import assert_geoseries_equal, mock
 from pandas.testing import assert_series_equal
+from geopandas.testing import assert_geodataframe_equal
 import pytest
 
 geopy = pytest.importorskip("geopy")
@@ -106,7 +106,21 @@ def test_prepare_result_none():
     # TODO we should probably replace this with a missing value instead of point?
     # assert len(row["geometry"].coords) == 0
     assert row["geometry"].is_empty
-    assert np.isnan(row["address"])
+    assert row["address"] is None
+
+
+@pytest.mark.parametrize("geocode_result", (None, (None, None)))
+def test_prepare_geocode_result_when_result_is(geocode_result):
+
+    result = {0: geocode_result}
+    expected_output = GeoDataFrame(
+        {"geometry": [Point()], "address": [None]},
+        crs="EPSG:4326",
+    )
+
+    output = _prepare_geocode_result(result)
+
+    assert_geodataframe_equal(output, expected_output)
 
 
 def test_bad_provider_forward():
diff --git a/geopandas/tests/test_geodataframe.py b/geopandas/tests/test_geodataframe.py
index e28d5a3e..ed9518cb 100644
--- a/geopandas/tests/test_geodataframe.py
+++ b/geopandas/tests/test_geodataframe.py
@@ -209,6 +209,13 @@ class TestDataFrame:
         assert df2 is None
         assert self.df.geometry.name == "new_name"
 
+        # existing column error
+        msg = "Column named Shape_Area already exists"
+        with pytest.raises(ValueError, match=msg):
+            df2 = self.df.rename_geometry("Shape_Area")
+        with pytest.raises(ValueError, match=msg):
+            self.df.rename_geometry("Shape_Area", inplace=True)
+
     def test_set_geometry(self):
         geom = GeoSeries([Point(x, y) for x, y in zip(range(5), range(5))])
         original_geom = self.df.geometry
diff --git a/geopandas/tests/test_pandas_methods.py b/geopandas/tests/test_pandas_methods.py
index 354a6373..7d9ac56a 100644
--- a/geopandas/tests/test_pandas_methods.py
+++ b/geopandas/tests/test_pandas_methods.py
@@ -512,3 +512,9 @@ def test_apply_loc_len1(df):
     result = subset.apply(lambda geom: geom.is_empty)
     expected = subset.is_empty
     np.testing.assert_allclose(result, expected)
+
+
+def test_apply_convert_dtypes_keyword(s):
+    # ensure the convert_dtypes keyword is accepted
+    res = s.apply(lambda x: x, convert_dtype=True, args=())
+    assert_geoseries_equal(res, s)

environment.yml
pip install -e .[dev]
parse_log_pytest
environment.yml
pytest pytest-cov 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@38fd095fa5a44219ce3b9b389b2109d67797e82c#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/tests/test_array.py::test_is_ring geopandas/tests/test_crs.py::test_to_crs_transform__missing_data geopandas/tests/test_geocode.py::test_prepare_result_none geopandas/tests/test_geocode.py::test_prepare_geocode_result_when_result_is[None] geopandas/tests/test_geocode.py::test_prepare_geocode_result_when_result_is[geocode_result1] geopandas/tests/test_geodataframe.py::TestDataFrame::test_rename_geometry
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_read_file_remote_geojson_url geopandas/io/tests/test_file.py::test_read_file_remote_zipfile_url geopandas/tests/test_geocode.py::test_forward geopandas/tests/test_geocode.py::test_reverse
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[GeoJSON-geojson] 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_infer_zipped_file 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/tests/test_array.py::test_points geopandas/tests/test_array.py::test_points_from_xy geopandas/tests/test_array.py::test_from_shapely geopandas/tests/test_array.py::test_from_shapely_geo_interface geopandas/tests/test_array.py::test_from_wkb geopandas/tests/test_array.py::test_to_wkb geopandas/tests/test_array.py::test_from_wkt[str] geopandas/tests/test_array.py::test_from_wkt[bytes] geopandas/tests/test_array.py::test_to_wkt geopandas/tests/test_array.py::test_predicates_vector_scalar[contains-args0] geopandas/tests/test_array.py::test_predicates_vector_scalar[covers-args1] geopandas/tests/test_array.py::test_predicates_vector_scalar[crosses-args2] geopandas/tests/test_array.py::test_predicates_vector_scalar[disjoint-args3] geopandas/tests/test_array.py::test_predicates_vector_scalar[geom_equals-args4] geopandas/tests/test_array.py::test_predicates_vector_scalar[intersects-args5] geopandas/tests/test_array.py::test_predicates_vector_scalar[overlaps-args6] geopandas/tests/test_array.py::test_predicates_vector_scalar[touches-args7] geopandas/tests/test_array.py::test_predicates_vector_scalar[within-args8] geopandas/tests/test_array.py::test_predicates_vector_scalar[geom_equals_exact-args9] geopandas/tests/test_array.py::test_predicates_vector_scalar[geom_almost_equals-args10] geopandas/tests/test_array.py::test_predicates_vector_vector[contains-args0] geopandas/tests/test_array.py::test_predicates_vector_vector[covers-args1] geopandas/tests/test_array.py::test_predicates_vector_vector[crosses-args2] geopandas/tests/test_array.py::test_predicates_vector_vector[disjoint-args3] geopandas/tests/test_array.py::test_predicates_vector_vector[geom_equals-args4] geopandas/tests/test_array.py::test_predicates_vector_vector[intersects-args5] geopandas/tests/test_array.py::test_predicates_vector_vector[overlaps-args6] geopandas/tests/test_array.py::test_predicates_vector_vector[touches-args7] geopandas/tests/test_array.py::test_predicates_vector_vector[within-args8] geopandas/tests/test_array.py::test_predicates_vector_vector[geom_equals_exact-args9] geopandas/tests/test_array.py::test_predicates_vector_vector[geom_almost_equals-args10] geopandas/tests/test_array.py::test_equals_deprecation[equals_exact-args0] geopandas/tests/test_array.py::test_equals_deprecation[almost_equals-args1] geopandas/tests/test_array.py::test_unary_geo[boundary] geopandas/tests/test_array.py::test_unary_geo[centroid] geopandas/tests/test_array.py::test_unary_geo[convex_hull] geopandas/tests/test_array.py::test_unary_geo[envelope] geopandas/tests/test_array.py::test_unary_geo[exterior] geopandas/tests/test_array.py::test_unary_geo_callable[representative_point] geopandas/tests/test_array.py::test_binary_geo_vector[difference] geopandas/tests/test_array.py::test_binary_geo_vector[symmetric_difference] geopandas/tests/test_array.py::test_binary_geo_vector[union] geopandas/tests/test_array.py::test_binary_geo_vector[intersection] geopandas/tests/test_array.py::test_binary_geo_scalar[difference] geopandas/tests/test_array.py::test_binary_geo_scalar[symmetric_difference] geopandas/tests/test_array.py::test_binary_geo_scalar[union] geopandas/tests/test_array.py::test_binary_geo_scalar[intersection] geopandas/tests/test_array.py::test_unary_predicates[is_closed] geopandas/tests/test_array.py::test_unary_predicates[is_valid] geopandas/tests/test_array.py::test_unary_predicates[is_empty] geopandas/tests/test_array.py::test_unary_predicates[is_simple] geopandas/tests/test_array.py::test_unary_predicates[has_z] geopandas/tests/test_array.py::test_unary_predicates[is_ring] geopandas/tests/test_array.py::test_unary_float[area] geopandas/tests/test_array.py::test_unary_float[length] geopandas/tests/test_array.py::test_geom_types geopandas/tests/test_array.py::test_geom_types_null_mixed geopandas/tests/test_array.py::test_binary_distance geopandas/tests/test_array.py::test_binary_relate geopandas/tests/test_array.py::test_binary_project[True] geopandas/tests/test_array.py::test_binary_project[False] geopandas/tests/test_array.py::test_buffer[16-1-1] geopandas/tests/test_array.py::test_buffer[16-1-3] geopandas/tests/test_array.py::test_buffer[16-3-1] geopandas/tests/test_array.py::test_buffer[16-3-3] geopandas/tests/test_array.py::test_buffer[25-1-1] geopandas/tests/test_array.py::test_buffer[25-1-3] geopandas/tests/test_array.py::test_buffer[25-3-1] geopandas/tests/test_array.py::test_buffer[25-3-3] geopandas/tests/test_array.py::test_simplify geopandas/tests/test_array.py::test_unary_union geopandas/tests/test_array.py::test_affinity_methods[affine_transform-arg0] geopandas/tests/test_array.py::test_affinity_methods[translate-arg1] geopandas/tests/test_array.py::test_affinity_methods[rotate-arg2] geopandas/tests/test_array.py::test_affinity_methods[scale-arg3] geopandas/tests/test_array.py::test_affinity_methods[skew-arg4] geopandas/tests/test_array.py::test_coords_x_y geopandas/tests/test_array.py::test_bounds geopandas/tests/test_array.py::test_total_bounds geopandas/tests/test_array.py::test_getitem geopandas/tests/test_array.py::test_equality_ops geopandas/tests/test_array.py::test_dir geopandas/tests/test_array.py::test_chaining geopandas/tests/test_array.py::test_pickle geopandas/tests/test_array.py::test_raise_on_bad_sizes geopandas/tests/test_array.py::test_buffer_single_multipolygon geopandas/tests/test_array.py::test_astype_multipolygon geopandas/tests/test_array.py::test_check_crs geopandas/tests/test_array.py::test_crs_mismatch_warn geopandas/tests/test_array.py::test_isna[None] geopandas/tests/test_array.py::test_isna[nan] geopandas/tests/test_array.py::test_isna_pdNA geopandas/tests/test_crs.py::test_to_crs_transform geopandas/tests/test_crs.py::test_to_crs_inplace geopandas/tests/test_crs.py::test_to_crs_geo_column_name geopandas/tests/test_crs.py::test_transform2[epsg_number-epsg_number] geopandas/tests/test_crs.py::test_transform2[epsg_number-epsg_string] geopandas/tests/test_crs.py::test_transform2[epsg_number-epsg_dict] geopandas/tests/test_crs.py::test_transform2[epsg_number-proj4_string] geopandas/tests/test_crs.py::test_transform2[epsg_number-proj4_dict] geopandas/tests/test_crs.py::test_transform2[epsg_string-epsg_number] geopandas/tests/test_crs.py::test_transform2[epsg_string-epsg_string] geopandas/tests/test_crs.py::test_transform2[epsg_string-epsg_dict] geopandas/tests/test_crs.py::test_transform2[epsg_string-proj4_string] geopandas/tests/test_crs.py::test_transform2[epsg_string-proj4_dict] geopandas/tests/test_crs.py::test_transform2[epsg_dict-epsg_number] geopandas/tests/test_crs.py::test_transform2[epsg_dict-epsg_string] geopandas/tests/test_crs.py::test_transform2[epsg_dict-epsg_dict] geopandas/tests/test_crs.py::test_transform2[epsg_dict-proj4_string] geopandas/tests/test_crs.py::test_transform2[epsg_dict-proj4_dict] geopandas/tests/test_crs.py::test_transform2[proj4_string-epsg_number] geopandas/tests/test_crs.py::test_transform2[proj4_string-epsg_string] geopandas/tests/test_crs.py::test_transform2[proj4_string-epsg_dict] geopandas/tests/test_crs.py::test_transform2[proj4_string-proj4_string] geopandas/tests/test_crs.py::test_transform2[proj4_string-proj4_dict] geopandas/tests/test_crs.py::test_transform2[proj4_dict-epsg_number] geopandas/tests/test_crs.py::test_transform2[proj4_dict-epsg_string] geopandas/tests/test_crs.py::test_transform2[proj4_dict-epsg_dict] geopandas/tests/test_crs.py::test_transform2[proj4_dict-proj4_string] geopandas/tests/test_crs.py::test_transform2[proj4_dict-proj4_dict] geopandas/tests/test_crs.py::test_crs_axis_order__always_xy geopandas/tests/test_crs.py::test_skip_exact_same geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_array geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_series geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_dataframe geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_scalar[None] geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_scalar[scalar1] geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_scalar[scalar2] geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_read_file geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_multiple_geoms geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_multiple_geoms_set_geom geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_assign_cols geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_copy geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_rename geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_to_crs geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_from_shapely geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_from_wkb geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_from_wkt geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_points_from_xy geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_original geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_ops geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_binary_ops geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_other geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_affinity_methods[affine_transform-arg0] geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_affinity_methods[translate-arg1] geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_affinity_methods[rotate-arg2] geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_affinity_methods[scale-arg3] geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_affinity_methods[skew-arg4] geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_slice geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_concat geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_merge geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_deprecation geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_setitem_geometry geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_astype geopandas/tests/test_crs.py::TestGeometryArrayCRS::test_apply geopandas/tests/test_crs.py::TestSetCRS::test_set_crs[geoseries] geopandas/tests/test_crs.py::TestSetCRS::test_set_crs[geodataframe] geopandas/tests/test_geocode.py::test_prepare_result geopandas/tests/test_geocode.py::test_bad_provider_forward geopandas/tests/test_geocode.py::test_bad_provider_reverse geopandas/tests/test_geodataframe.py::TestDataFrame::test_df_init geopandas/tests/test_geodataframe.py::TestDataFrame::test_different_geo_colname geopandas/tests/test_geodataframe.py::TestDataFrame::test_geo_getitem geopandas/tests/test_geodataframe.py::TestDataFrame::test_getitem_no_geometry geopandas/tests/test_geodataframe.py::TestDataFrame::test_geo_setitem geopandas/tests/test_geodataframe.py::TestDataFrame::test_geometry_property geopandas/tests/test_geodataframe.py::TestDataFrame::test_geometry_property_errors geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_col geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_inplace geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_series geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_empty geopandas/tests/test_geodataframe.py::TestDataFrame::test_align geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_geom_col geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_na geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_bad_na geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_dropna geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_keepna geopandas/tests/test_geodataframe.py::TestDataFrame::test_copy geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_file_crs geopandas/tests/test_geodataframe.py::TestDataFrame::test_bool_index geopandas/tests/test_geodataframe.py::TestDataFrame::test_coord_slice_points geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_features geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_features_unaligned_properties geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_features_geom_interface_feature geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_feature_collection geopandas/tests/test_geodataframe.py::TestDataFrame::test_dataframe_to_geodataframe geopandas/tests/test_geodataframe.py::TestDataFrame::test_geodataframe_geointerface geopandas/tests/test_geodataframe.py::TestDataFrame::test_geodataframe_iterfeatures geopandas/tests/test_geodataframe.py::TestDataFrame::test_geodataframe_geojson_no_bbox geopandas/tests/test_geodataframe.py::TestDataFrame::test_geodataframe_geojson_bbox geopandas/tests/test_geodataframe.py::TestDataFrame::test_pickle geopandas/tests/test_geodataframe.py::TestDataFrame::test_pickle_method geopandas/tests/test_geodataframe.py::TestConstructor::test_dict geopandas/tests/test_geodataframe.py::TestConstructor::test_dict_of_series geopandas/tests/test_geodataframe.py::TestConstructor::test_dict_specified_geometry geopandas/tests/test_geodataframe.py::TestConstructor::test_array geopandas/tests/test_geodataframe.py::TestConstructor::test_from_frame geopandas/tests/test_geodataframe.py::TestConstructor::test_from_frame_specified_geometry geopandas/tests/test_geodataframe.py::TestConstructor::test_only_geometry geopandas/tests/test_geodataframe.py::TestConstructor::test_no_geometries geopandas/tests/test_geodataframe.py::TestConstructor::test_empty geopandas/tests/test_geodataframe.py::TestConstructor::test_column_ordering geopandas/tests/test_geodataframe.py::TestConstructor::test_overwrite_geometry geopandas/tests/test_geodataframe.py::test_geodataframe_crs geopandas/tests/test_pandas_methods.py::test_repr geopandas/tests/test_pandas_methods.py::test_repr_boxed_display_precision geopandas/tests/test_pandas_methods.py::test_repr_all_missing geopandas/tests/test_pandas_methods.py::test_repr_empty geopandas/tests/test_pandas_methods.py::test_indexing geopandas/tests/test_pandas_methods.py::test_reindex geopandas/tests/test_pandas_methods.py::test_take geopandas/tests/test_pandas_methods.py::test_take_empty geopandas/tests/test_pandas_methods.py::test_assignment geopandas/tests/test_pandas_methods.py::test_assign geopandas/tests/test_pandas_methods.py::test_astype geopandas/tests/test_pandas_methods.py::test_astype_invalid_geodataframe geopandas/tests/test_pandas_methods.py::test_to_csv geopandas/tests/test_pandas_methods.py::test_numerical_operations geopandas/tests/test_pandas_methods.py::test_where geopandas/tests/test_pandas_methods.py::test_select_dtypes geopandas/tests/test_pandas_methods.py::test_equals geopandas/tests/test_pandas_methods.py::test_fillna geopandas/tests/test_pandas_methods.py::test_dropna geopandas/tests/test_pandas_methods.py::test_isna[None] geopandas/tests/test_pandas_methods.py::test_isna[nan] geopandas/tests/test_pandas_methods.py::test_any_all geopandas/tests/test_pandas_methods.py::test_unique geopandas/tests/test_pandas_methods.py::test_groupby geopandas/tests/test_pandas_methods.py::test_groupby_groups geopandas/tests/test_pandas_methods.py::test_apply geopandas/tests/test_pandas_methods.py::test_apply_loc_len1 geopandas/tests/test_pandas_methods.py::test_apply_convert_dtypes_keyword
geopandas/geoseries.py ci/travis/38-no-optional-deps.yaml .github/ISSUE_TEMPLATE/feature_request.md ci/travis/37-dev.yaml .github/ISSUE_TEMPLATE/submit_question.md geopandas/sindex.py ci/travis/setup_postgres.sh geopandas/plotting.py geopandas/tools/geocoding.py appveyor.yml codecov.yml .github/ISSUE_TEMPLATE/installation_issue.md .github/ISSUE_TEMPLATE/bug_report.md ci/travis/36-minimal.yaml .travis.yml ci/travis/36-pd025.yaml geopandas/_vectorized.py geopandas/geodataframe.py .pre-commit-config.yaml
geopandas/geoseries.py ci/travis/38-no-optional-deps.yaml .github/ISSUE_TEMPLATE/feature_request.md ci/travis/37-dev.yaml .github/ISSUE_TEMPLATE/submit_question.md geopandas/sindex.py ci/travis/setup_postgres.sh geopandas/plotting.py geopandas/tools/geocoding.py appveyor.yml codecov.yml .github/ISSUE_TEMPLATE/installation_issue.md .github/ISSUE_TEMPLATE/bug_report.md ci/travis/36-minimal.yaml .travis.yml ci/travis/36-pd025.yaml geopandas/_vectorized.py geopandas/geodataframe.py .pre-commit-config.yaml