Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG 1.0.0: pytest fails #3359

Open
2 of 3 tasks
kloczek opened this issue Jun 28, 2024 · 5 comments
Open
2 of 3 tasks

BUG 1.0.0: pytest fails #3359

kloczek opened this issue Jun 28, 2024 · 5 comments

Comments

@kloczek
Copy link

kloczek commented Jun 28, 2024

  • 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 main branch of geopandas.


I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

  • python3 -sBm build -w --no-isolation
  • because I'm calling build with --no-isolation I'm using during all processes only locally installed modules
  • install .whl file in </install/prefix> using installer module
  • run pytest with $PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
  • build is performed in env which is cut off from access to the public network (pytest is executed with -m "not network")
List of installed modules in build env:
Package            Version
------------------ -----------
attrs              23.2.0
build              1.2.1
certifi            2023.7.22
click              8.1.7
click-plugins      1.1.1
cligj              0.7.2
contourpy          1.2.1
cycler             0.12.1
distro             1.9.0
exceptiongroup     1.1.3
fiona              1.9.6
fonttools          4.53.0
importlib_metadata 8.0.0
iniconfig          2.0.0
installer          0.7.0
kiwisolver         1.4.5
matplotlib         3.9.0
munch              4.0.0
numpy              1.26.4
olefile            0.47
packaging          24.0
pandas             2.2.1
pillow             10.3.0
pluggy             1.5.0
pyparsing          3.1.2
pyproj             3.6.1
pyproject_hooks    1.0.0
pytest             8.2.2
python-dateutil    2.9.0.post0
pytz               2024.1
setuptools         69.4.0
shapely            2.0.4
tokenize_rt        5.2.0
tomli              2.0.1
wheel              0.43.0
zipp               3.19.2

Please let me know if you need more details or want me to perform some diagnostics.

@kloczek
Copy link
Author

kloczek commented Jun 28, 2024

Here is pytest output:
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-geopandas-1.0.0~no_loopy_deps-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-geopandas-1.0.0~no_loopy_deps-2.fc37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network'
============================= test session starts ==============================
platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0
configfile: pyproject.toml
collected 2338 items / 4 skipped

geopandas/io/tests/test_file.py .......sssssss.......sssssss.......sssss [  1%]
ssss....ssss....ssssssssssssss..ss..ss........sssssss.......sssssss.s... [  4%]
.....ssssssss.......sssssss.s.s.s.s.s.......sssssss.s..x...xsssssss.s... [  7%]
.ssss.s.s.s.s.s.s.sssss.s.sss.s.s.s.s.s.s.s.s.s.s.s.s.s.s.ss.s.s..ss..ss [ 10%]
.s.s.s.s.s.s..ss.s..sss.s..ss.ss.ss                                      [ 12%]
geopandas/io/tests/test_file_geom_types_drivers.py .s.s.s.s.s.s.s.s.s.s. [ 13%]
s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s. [ 16%]
s.s.s.s.s.s.s.s.s.s                                                      [ 17%]
geopandas/io/tests/test_infer_schema.py .......................          [ 18%]
geopandas/io/tests/test_pickle.py sss.                                   [ 18%]
geopandas/io/tests/test_sql.py ssssssss..sssssssssssssssssssssssss       [ 19%]
geopandas/tests/test_api.py .                                            [ 19%]
geopandas/tests/test_array.py .......................................... [ 21%]
........................................................s.....ss.....    [ 24%]
geopandas/tests/test_compat.py .........                                 [ 25%]
geopandas/tests/test_config.py ...                                       [ 25%]
geopandas/tests/test_crs.py ............................................ [ 27%]
..............................                                           [ 28%]
geopandas/tests/test_datasets.py ....                                    [ 28%]
geopandas/tests/test_decorator.py ....                                   [ 28%]
geopandas/tests/test_dissolve.py .....s............                      [ 29%]
geopandas/tests/test_extension_array.py ................................ [ 30%]
........................................................................ [ 33%]
xx....................................................x................. [ 36%]
.................................................................sssssss [ 40%]
ssssssssssssss.......................................................... [ 43%]
..................ss............................................ss...... [ 46%]
.....................................................ssssssssss.......s. [ 49%]
.....................ss                                                  [ 50%]
geopandas/tests/test_geodataframe.py ................................... [ 51%]
........................................................................ [ 54%]
............                                                             [ 55%]
geopandas/tests/test_geom_methods.py ................................... [ 56%]
........................................................................ [ 59%]
.............................sss..................                       [ 62%]
geopandas/tests/test_geoseries.py ...................................... [ 63%]
........s...........................                                     [ 65%]
geopandas/tests/test_merge.py ........                                   [ 65%]
geopandas/tests/test_op_output_types.py .....x.......................... [ 66%]
.                                                                        [ 67%]
geopandas/tests/test_overlay.py ........................s.............s. [ 68%]
........................................................................ [ 71%]
...............                                                          [ 72%]
geopandas/tests/test_pandas_methods.py ..............................XX. [ 73%]
.................                                                        [ 74%]
geopandas/tests/test_plotting.py ....................................... [ 76%]
................s.s...sssssssssssssss.........FF......FFFFFFFFFFF.F...   [ 79%]
geopandas/tests/test_show_versions.py ....                               [ 79%]
geopandas/tests/test_sindex.py .....s...........s....................... [ 81%]
.................................s.......x.............................. [ 84%]
.........x...........................................                    [ 86%]
geopandas/tests/test_testing.py ........                                 [ 86%]
geopandas/tests/test_types.py ...............                            [ 87%]
geopandas/tools/tests/test_clip.py ..................................... [ 89%]
....................................................                     [ 91%]
geopandas/tools/tests/test_hilbert_curve.py ......                       [ 91%]
geopandas/tools/tests/test_random.py ..........                          [ 92%]
geopandas/tools/tests/test_sjoin.py .................................... [ 93%]
........................................................................ [ 96%]
..............xs.......................................................  [ 99%]
geopandas/tools/tests/test_tools.py ........                             [100%]

=================================== FAILURES ===================================
________________ TestGeoplotAccessor.test_pandas_kind[png-kde] _________________

ext = 'png', request = <FixtureRequest for <Function test_pandas_kind[png-kde]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0d780>,)
kwargs = {'kind': 'kde'}, file_name = 'test_pandas_kind[png-kde]'
fig_test = <Figure size 640x480 with 0 Axes>
fig_ref = <Figure size 640x480 with 0 Axes>
figs = [<Figure size 640x480 with 1 Axes>]

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
>               raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
E                                  RuntimeError: Number of open figures changed during test. Make sure you are plotting to fig_test or fig_ref, or if this is deliberate explicitly close the new figure(s) inside the test.

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:413: RuntimeError
______________ TestGeoplotAccessor.test_pandas_kind[png-density] _______________

ext = 'png'
request = <FixtureRequest for <Function test_pandas_kind[png-density]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0d840>,)
kwargs = {'kind': 'density'}, file_name = 'test_pandas_kind[png-density]'
fig_test = <Figure size 640x480 with 0 Axes>
fig_ref = <Figure size 640x480 with 0 Axes>
figs = [<Figure size 640x480 with 1 Axes>]

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
>               raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
E                                  RuntimeError: Number of open figures changed during test. Make sure you are plotting to fig_test or fig_ref, or if this is deliberate explicitly close the new figure(s) inside the test.

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:413: RuntimeError
________________ TestGeoplotAccessor.test_pandas_kind[pdf-line] ________________

ext = 'pdf'
request = <FixtureRequest for <Function test_pandas_kind[pdf-line]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0dd80>,)
kwargs = {'kind': 'line'}, file_name = 'test_pandas_kind[pdf-line]'
fig_test = <Figure size 640x480 with 2 Axes>
fig_ref = <Figure size 640x480 with 2 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-line].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-line]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-line].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-line]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
>               raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None
E               OSError: Failed to start Ghostscript:
E
E               GPL Ghostscript 10.03.1 (2024-05-02)
E               Copyright (C) 2024 Artifex Software, Inc.  All rights reserved.
E               This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
E               see the file COPYING for details.
E               While reading gs_ll3.ps:
E               Error: /undefinedfilename in --resourceforall--
E               Operand stack:   (gs_icc.ps\000gs_mex_e.ps\000gs_mro_e.ps\000gs_pdf_e.ps\000gs_wan_e.ps\000pdf_main.ps\000gs_cff.ps\000gs_mgl_e.ps\000gs_ttf.ps\000gs_epsf.ps\000gs_pdfwr.ps)   (gs_ll3.ps)   1   --nostringval--   --nostringval--   9   --nostringval--   37   (%{datadir}/fonts/urw-base35/IdiomSet/*)   --nostringval--   (/usr/share/ghostscript/Resource/ProcSet/CIDInit\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000...)
E               Execution stack:   %interp_exit   --nostringval--   resourceforall   %loop_continue   resourceforall   resourceforall   resourceforall   false   1   %stopped_push   --nostringval--   1876   7   5   %oparray_pop   resourceforall   resourceforall   10   2   13   resourceforall   %for_pos_int_continue   resourceforall
E               Dictionary stack:   --dict:928/1123(G)--   --dict:0/20(G)--   --dict:82/200(L)--   --dict:928/1123(G)--   --dict:34/43(G)--   --dict:16/18(ro)(G)--
E               Current allocation mode is global
E               Last OS error: No such file or directoryCurrent file position is 19214

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:112: OSError
________________ TestGeoplotAccessor.test_pandas_kind[pdf-bar] _________________

ext = 'pdf', request = <FixtureRequest for <Function test_pandas_kind[pdf-bar]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0de40>,)
kwargs = {'kind': 'bar'}, file_name = 'test_pandas_kind[pdf-bar]'
fig_test = <Figure size 640x480 with 2 Axes>
fig_ref = <Figure size 640x480 with 2 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-bar].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-bar]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-bar].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-bar]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
________________ TestGeoplotAccessor.test_pandas_kind[pdf-barh] ________________

ext = 'pdf'
request = <FixtureRequest for <Function test_pandas_kind[pdf-barh]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0df00>,)
kwargs = {'kind': 'barh'}, file_name = 'test_pandas_kind[pdf-barh]'
fig_test = <Figure size 640x480 with 2 Axes>
fig_ref = <Figure size 640x480 with 2 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-barh].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-barh]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-barh].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-barh]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
________________ TestGeoplotAccessor.test_pandas_kind[pdf-kde] _________________

ext = 'pdf', request = <FixtureRequest for <Function test_pandas_kind[pdf-kde]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0dfc0>,)
kwargs = {'kind': 'kde'}, file_name = 'test_pandas_kind[pdf-kde]'
fig_test = <Figure size 640x480 with 0 Axes>
fig_ref = <Figure size 640x480 with 0 Axes>
figs = [<Figure size 640x480 with 1 Axes>]

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
>               raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
E                                  RuntimeError: Number of open figures changed during test. Make sure you are plotting to fig_test or fig_ref, or if this is deliberate explicitly close the new figure(s) inside the test.

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:413: RuntimeError
______________ TestGeoplotAccessor.test_pandas_kind[pdf-density] _______________

ext = 'pdf'
request = <FixtureRequest for <Function test_pandas_kind[pdf-density]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0e080>,)
kwargs = {'kind': 'density'}, file_name = 'test_pandas_kind[pdf-density]'
fig_test = <Figure size 640x480 with 0 Axes>
fig_ref = <Figure size 640x480 with 0 Axes>
figs = [<Figure size 640x480 with 1 Axes>]

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
>               raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
E                                  RuntimeError: Number of open figures changed during test. Make sure you are plotting to fig_test or fig_ref, or if this is deliberate explicitly close the new figure(s) inside the test.

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:413: RuntimeError
________________ TestGeoplotAccessor.test_pandas_kind[pdf-area] ________________

ext = 'pdf'
request = <FixtureRequest for <Function test_pandas_kind[pdf-area]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7bd95a0>,)
kwargs = {'kind': 'area'}, file_name = 'test_pandas_kind[pdf-area]'
fig_test = <Figure size 640x480 with 2 Axes>
fig_ref = <Figure size 640x480 with 2 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-area].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-area]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-area].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-area]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
________________ TestGeoplotAccessor.test_pandas_kind[pdf-hist] ________________

ext = 'pdf'
request = <FixtureRequest for <Function test_pandas_kind[pdf-hist]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7bf2860>,)
kwargs = {'kind': 'hist'}, file_name = 'test_pandas_kind[pdf-hist]'
fig_test = <Figure size 640x480 with 2 Axes>
fig_ref = <Figure size 640x480 with 2 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-hist].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-hist]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-hist].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-hist]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
________________ TestGeoplotAccessor.test_pandas_kind[pdf-box] _________________

ext = 'pdf', request = <FixtureRequest for <Function test_pandas_kind[pdf-box]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0ca90>,)
kwargs = {'kind': 'box'}, file_name = 'test_pandas_kind[pdf-box]'
fig_test = <Figure size 640x480 with 2 Axes>
fig_ref = <Figure size 640x480 with 2 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-box].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-box]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-box].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-box]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
________________ TestGeoplotAccessor.test_pandas_kind[pdf-pie] _________________

ext = 'pdf', request = <FixtureRequest for <Function test_pandas_kind[pdf-pie]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0c6d0>,)
kwargs = {'kind': 'pie'}, file_name = 'test_pandas_kind[pdf-pie]'
fig_test = <Figure size 640x480 with 2 Axes>
fig_ref = <Figure size 640x480 with 2 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-pie].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-pie]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-pie].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-pie]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
______________ TestGeoplotAccessor.test_pandas_kind[pdf-scatter] _______________

ext = 'pdf'
request = <FixtureRequest for <Function test_pandas_kind[pdf-scatter]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0c2b0>,)
kwargs = {'kind': 'scatter'}, file_name = 'test_pandas_kind[pdf-scatter]'
fig_test = <Figure size 640x480 with 2 Axes>
fig_ref = <Figure size 640x480 with 2 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-scatter].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-scatter]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-scatter].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-scatter]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
_______________ TestGeoplotAccessor.test_pandas_kind[pdf-hexbin] _______________

ext = 'pdf'
request = <FixtureRequest for <Function test_pandas_kind[pdf-hexbin]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0c040>,)
kwargs = {'kind': 'hexbin'}, file_name = 'test_pandas_kind[pdf-hexbin]'
fig_test = <Figure size 640x480 with 4 Axes>
fig_ref = <Figure size 640x480 with 4 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-hexbin].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-hexbin]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-hexbin].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_pandas_kind[pdf-hexbin]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
____________________ TestGeoplotAccessor.test_geo_kind[pdf] ____________________

ext = 'pdf', request = <FixtureRequest for <Function test_geo_kind[pdf]>>
args = (<geopandas.tests.test_plotting.TestGeoplotAccessor object at 0x7fb9f7c0e470>,)
kwargs = {}, file_name = 'test_geo_kind[pdf]'
fig_test = <Figure size 640x480 with 1 Axes>
fig_ref = <Figure size 640x480 with 1 Axes>, figs = []
test_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_geo_kind[pdf].pdf')
ref_image_path = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_geo_kind[pdf]-expected.pdf')

    @pytest.mark.parametrize("ext", extensions)
    def wrapper(*args, ext, request, **kwargs):
        if 'ext' in old_sig.parameters:
            kwargs['ext'] = ext
        if 'request' in old_sig.parameters:
            kwargs['request'] = request

        file_name = "".join(c for c in request.node.name
                            if c in ALLOWED_CHARS)
        try:
            fig_test = plt.figure("test")
            fig_ref = plt.figure("reference")
            with _collect_new_figures() as figs:
                func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
            if figs:
                raise RuntimeError('Number of open figures changed during '
                                   'test. Make sure you are plotting to '
                                   'fig_test or fig_ref, or if this is '
                                   'deliberate explicitly close the '
                                   'new figure(s) inside the test.')
            test_image_path = result_dir / (file_name + "." + ext)
            ref_image_path = result_dir / (file_name + "-expected." + ext)
            fig_test.savefig(test_image_path)
            fig_ref.savefig(ref_image_path)
>           _raise_on_image_difference(
                ref_image_path, test_image_path, tol=tol
            )

/usr/lib64/python3.10/site-packages/matplotlib/testing/decorators.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:447: in compare_images
    actual = convert(actual, cache=True)
/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:312: in convert
    convert(path, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>
orig = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_geo_kind[pdf].pdf')
dest = PosixPath('/home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/result_images/test_plotting/test_geo_kind[pdf]_pdf.png')

    def __call__(self, orig, dest):
        if not self._proc:
            self._proc = subprocess.Popen(
                [mpl._get_executable_info("gs").executable,
                 "-dNOSAFER", "-dNOPAUSE", "-dEPSCrop", "-sDEVICE=png16m"],
                # As far as I can see, ghostscript never outputs to stderr.
                stdin=subprocess.PIPE, stdout=subprocess.PIPE)
            try:
                self._read_until(b"\nGS")
            except _ConverterError as e:
                raise OSError(f"Failed to start Ghostscript:\n\n{e.args[0]}") from None

        def encode_and_escape(name):
            return (os.fsencode(name)
                    .replace(b"\\", b"\\\\")
                    .replace(b"(", br"\(")
                    .replace(b")", br"\)"))

        self._proc.stdin.write(
            b"<< /OutputFile ("
            + encode_and_escape(dest)
            + b") >> setpagedevice ("
            + encode_and_escape(orig)
            + b") run flush\n")
>       self._proc.stdin.flush()
E       BrokenPipeError: [Errno 32] Broken pipe

/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py:126: BrokenPipeError
================================== XFAILURES ===================================
_______________________ test_empty_crs[fiona-GPKG-.gpkg] _______________________

tmpdir = local('/tmp/pytest-of-tkloczko/pytest-279/test_empty_crs_fiona_GPKG__gpk0')
driver = 'GPKG', ext = '.gpkg', engine = 'fiona'

    @pytest.mark.filterwarnings("ignore:'crs' was not provided:UserWarning:pyogrio")
    @pytest.mark.parametrize("driver,ext", driver_ext_pairs)
    def test_empty_crs(tmpdir, driver, ext, engine):
        """Test handling of undefined CRS with GPKG driver (GH #1975)."""
        if ext == ".gpkg":
>           pytest.xfail("GPKG is read with Undefined geographic SRS.")
E           _pytest.outcomes.XFailed: GPKG is read with Undefined geographic SRS.

geopandas/io/tests/test_file.py:553: XFailed
_______________________ test_empty_crs[fiona-None-.gpkg] _______________________

tmpdir = local('/tmp/pytest-of-tkloczko/pytest-279/test_empty_crs_fiona_None__gpk0')
driver = None, ext = '.gpkg', engine = 'fiona'

    @pytest.mark.filterwarnings("ignore:'crs' was not provided:UserWarning:pyogrio")
    @pytest.mark.parametrize("driver,ext", driver_ext_pairs)
    def test_empty_crs(tmpdir, driver, ext, engine):
        """Test handling of undefined CRS with GPKG driver (GH #1975)."""
        if ext == ".gpkg":
>           pytest.xfail("GPKG is read with Undefined geographic SRS.")
E           _pytest.outcomes.XFailed: GPKG is read with Undefined geographic SRS.

geopandas/io/tests/test_file.py:553: XFailed
______ TestGetitem.test_getitem_series_integer_with_missing_raises[list] _______

self = <geopandas.tests.test_extension_array.TestGetitem object at 0x7fb9fd6f5150>
data = <GeometryArray>
[  <POINT (0 0)>,   <POINT (1 1)>,   <POINT (2 2)>,   <POINT (3 3)>,
   <POINT (4 4)>,   <POINT (5 5)>...4)>, <POINT (95 95)>,
 <POINT (96 96)>, <POINT (97 97)>, <POINT (98 98)>, <POINT (99 99)>]
Length: 100, dtype: geometry
idx = [0, 1, 2, <NA>]

    @pytest.mark.xfail(
        reason="Tries label-based and raises KeyError; "
        "in some cases raises when calling np.asarray"
    )
    @pytest.mark.parametrize(
        "idx",
        [[0, 1, 2, pd.NA], pd.array([0, 1, 2, pd.NA], dtype="Int64")],
        ids=["list", "integer-array"],
    )
    def test_getitem_series_integer_with_missing_raises(self, data, idx):
        msg = "Cannot index with an integer indexer containing NA values"
        # TODO: this raises KeyError about labels not found (it tries label-based)

        ser = pd.Series(data, index=[chr(100 + i) for i in range(len(data))])
        with pytest.raises(ValueError, match=msg):
>           ser[idx]

/usr/lib64/python3.10/site-packages/pandas/tests/extension/base/getitem.py:276:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/pandas/core/series.py:1144: in __getitem__
    return self._get_with(key)
/usr/lib64/python3.10/site-packages/pandas/core/series.py:1185: in _get_with
    return self.loc[key]
/usr/lib64/python3.10/site-packages/pandas/core/indexing.py:1191: in __getitem__
    return self._getitem_axis(maybe_callable, axis=axis)
/usr/lib64/python3.10/site-packages/pandas/core/indexing.py:1420: in _getitem_axis
    return self._getitem_iterable(key, axis=axis)
/usr/lib64/python3.10/site-packages/pandas/core/indexing.py:1360: in _getitem_iterable
    keyarr, indexer = self._get_listlike_indexer(key, axis)
/usr/lib64/python3.10/site-packages/pandas/core/indexing.py:1558: in _get_listlike_indexer
    keyarr, indexer = ax._get_indexer_strict(key, axis_name)
/usr/lib64/python3.10/site-packages/pandas/core/indexes/base.py:6200: in _get_indexer_strict
    self._raise_if_missing(keyarr, indexer, axis_name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = Index(['d', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
       'r', 's', 't', 'u', 'v', 'w', 'x',...',
       '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å',
       'Æ', 'Ç'],
      dtype='object')
key = Index([0, 1, 2, <NA>], dtype='object'), indexer = array([-1, -1, -1, -1])
axis_name = 'index'

    def _raise_if_missing(self, key, indexer, axis_name: str_t) -> None:
        """
        Check that indexer can be used to return a result.

        e.g. at least one element was found,
        unless the list of keys was actually empty.

        Parameters
        ----------
        key : list-like
            Targeted labels (only used to show correct error message).
        indexer: array-like of booleans
            Indices corresponding to the key,
            (with -1 indicating not found).
        axis_name : str

        Raises
        ------
        KeyError
            If at least one key was requested but none was found.
        """
        if len(key) == 0:
            return

        # Count missing values
        missing_mask = indexer < 0
        nmissing = missing_mask.sum()

        if nmissing:
            if nmissing == len(indexer):
>               raise KeyError(f"None of [{key}] are in the [{axis_name}]")
E               KeyError: "None of [Index([0, 1, 2, <NA>], dtype='object')] are in the [index]"

/usr/lib64/python3.10/site-packages/pandas/core/indexes/base.py:6249: KeyError
__ TestGetitem.test_getitem_series_integer_with_missing_raises[integer-array] __

self = <geopandas.tests.test_extension_array.TestGetitem object at 0x7fb9fd6f4a60>
data = <GeometryArray>
[  <POINT (0 0)>,   <POINT (1 1)>,   <POINT (2 2)>,   <POINT (3 3)>,
   <POINT (4 4)>,   <POINT (5 5)>...4)>, <POINT (95 95)>,
 <POINT (96 96)>, <POINT (97 97)>, <POINT (98 98)>, <POINT (99 99)>]
Length: 100, dtype: geometry
idx = <IntegerArray>
[0, 1, 2, <NA>]
Length: 4, dtype: Int64

    @pytest.mark.xfail(
        reason="Tries label-based and raises KeyError; "
        "in some cases raises when calling np.asarray"
    )
    @pytest.mark.parametrize(
        "idx",
        [[0, 1, 2, pd.NA], pd.array([0, 1, 2, pd.NA], dtype="Int64")],
        ids=["list", "integer-array"],
    )
    def test_getitem_series_integer_with_missing_raises(self, data, idx):
        msg = "Cannot index with an integer indexer containing NA values"
        # TODO: this raises KeyError about labels not found (it tries label-based)

        ser = pd.Series(data, index=[chr(100 + i) for i in range(len(data))])
        with pytest.raises(ValueError, match=msg):
>           ser[idx]

/usr/lib64/python3.10/site-packages/pandas/tests/extension/base/getitem.py:276:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/pandas/core/series.py:1144: in __getitem__
    return self._get_with(key)
/usr/lib64/python3.10/site-packages/pandas/core/series.py:1182: in _get_with
    return self.iloc[key]
/usr/lib64/python3.10/site-packages/pandas/core/indexing.py:1191: in __getitem__
    return self._getitem_axis(maybe_callable, axis=axis)
/usr/lib64/python3.10/site-packages/pandas/core/indexing.py:1743: in _getitem_axis
    return self._get_list_axis(key, axis=axis)
/usr/lib64/python3.10/site-packages/pandas/core/indexing.py:1714: in _get_list_axis
    return self.obj._take_with_is_copy(key, axis=axis)
/usr/lib64/python3.10/site-packages/pandas/core/generic.py:4150: in _take_with_is_copy
    result = self.take(indices=indices, axis=axis)
/usr/lib64/python3.10/site-packages/pandas/core/generic.py:4103: in take
    indices = np.asarray(indices, dtype=np.intp)
/usr/lib64/python3.10/site-packages/pandas/core/arrays/masked.py:601: in __array__
    return self.to_numpy(dtype=dtype)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <IntegerArray>
[0, 1, 2, <NA>]
Length: 4, dtype: Int64
dtype = dtype('int64'), copy = False, na_value = <NA>

    def to_numpy(
        self,
        dtype: npt.DTypeLike | None = None,
        copy: bool = False,
        na_value: object = lib.no_default,
    ) -> np.ndarray:
        """
        Convert to a NumPy Array.

        By default converts to an object-dtype NumPy array. Specify the `dtype` and
        `na_value` keywords to customize the conversion.

        Parameters
        ----------
        dtype : dtype, default object
            The numpy dtype to convert to.
        copy : bool, default False
            Whether to ensure that the returned value is a not a view on
            the array. Note that ``copy=False`` does not *ensure* that
            ``to_numpy()`` is no-copy. Rather, ``copy=True`` ensure that
            a copy is made, even if not strictly necessary. This is typically
            only possible when no missing values are present and `dtype`
            is the equivalent numpy dtype.
        na_value : scalar, optional
             Scalar missing value indicator to use in numpy array. Defaults
             to the native missing value indicator of this array (pd.NA).

        Returns
        -------
        numpy.ndarray

        Examples
        --------
        An object-dtype is the default result

        >>> a = pd.array([True, False, pd.NA], dtype="boolean")
        >>> a.to_numpy()
        array([True, False, <NA>], dtype=object)

        When no missing values are present, an equivalent dtype can be used.

        >>> pd.array([True, False], dtype="boolean").to_numpy(dtype="bool")
        array([ True, False])
        >>> pd.array([1, 2], dtype="Int64").to_numpy("int64")
        array([1, 2])

        However, requesting such dtype will raise a ValueError if
        missing values are present and the default missing value :attr:`NA`
        is used.

        >>> a = pd.array([True, False, pd.NA], dtype="boolean")
        >>> a
        <BooleanArray>
        [True, False, <NA>]
        Length: 3, dtype: boolean

        >>> a.to_numpy(dtype="bool")
        Traceback (most recent call last):
        ...
        ValueError: cannot convert to bool numpy array in presence of missing values

        Specify a valid `na_value` instead

        >>> a.to_numpy(dtype="bool", na_value=False)
        array([ True, False, False])
        """
        hasna = self._hasna
        dtype, na_value = to_numpy_dtype_inference(self, dtype, na_value, hasna)
        if dtype is None:
            dtype = object

        if hasna:
            if (
                dtype != object
                and not is_string_dtype(dtype)
                and na_value is libmissing.NA
            ):
>               raise ValueError(
                    f"cannot convert to '{dtype}'-dtype NumPy array "
                    "with missing values. Specify an appropriate 'na_value' "
                    "for this dtype."
                )
E               ValueError: cannot convert to 'int64'-dtype NumPy array with missing values. Specify an appropriate 'na_value' for this dtype.

/usr/lib64/python3.10/site-packages/pandas/core/arrays/masked.py:513: ValueError

During handling of the above exception, another exception occurred:

self = <geopandas.tests.test_extension_array.TestGetitem object at 0x7fb9fd6f4a60>
data = <GeometryArray>
[  <POINT (0 0)>,   <POINT (1 1)>,   <POINT (2 2)>,   <POINT (3 3)>,
   <POINT (4 4)>,   <POINT (5 5)>...4)>, <POINT (95 95)>,
 <POINT (96 96)>, <POINT (97 97)>, <POINT (98 98)>, <POINT (99 99)>]
Length: 100, dtype: geometry
idx = <IntegerArray>
[0, 1, 2, <NA>]
Length: 4, dtype: Int64

    @pytest.mark.xfail(
        reason="Tries label-based and raises KeyError; "
        "in some cases raises when calling np.asarray"
    )
    @pytest.mark.parametrize(
        "idx",
        [[0, 1, 2, pd.NA], pd.array([0, 1, 2, pd.NA], dtype="Int64")],
        ids=["list", "integer-array"],
    )
    def test_getitem_series_integer_with_missing_raises(self, data, idx):
        msg = "Cannot index with an integer indexer containing NA values"
        # TODO: this raises KeyError about labels not found (it tries label-based)

        ser = pd.Series(data, index=[chr(100 + i) for i in range(len(data))])
>       with pytest.raises(ValueError, match=msg):
E       AssertionError: Regex pattern did not match.
E        Regex: 'Cannot index with an integer indexer containing NA values'
E        Input: "cannot convert to 'int64'-dtype NumPy array with missing values. Specify an appropriate 'na_value' for this dtype."

/usr/lib64/python3.10/site-packages/pandas/tests/extension/base/getitem.py:275: AssertionError
_______ TestSetitem.test_setitem_integer_with_missing_raises[list-True] ________

self = Index(['d', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
       'r', 's', 't', 'u', 'v', 'w', 'x',...',
       '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å',
       'Æ', 'Ç'],
      dtype='object')
key = [0, 1, 2, <NA>]

    def get_loc(self, key):
        """
        Get integer location, slice or boolean mask for requested label.

        Parameters
        ----------
        key : label

        Returns
        -------
        int if unique index, slice if monotonic index, else mask

        Examples
        --------
        >>> unique_index = pd.Index(list('abc'))
        >>> unique_index.get_loc('b')
        1

        >>> monotonic_index = pd.Index(list('abbc'))
        >>> monotonic_index.get_loc('b')
        slice(1, 3, None)

        >>> non_monotonic_index = pd.Index(list('abcb'))
        >>> non_monotonic_index.get_loc('b')
        array([False,  True, False,  True])
        """
        casted_key = self._maybe_cast_indexer(key)
        try:
>           return self._engine.get_loc(casted_key)

/usr/lib64/python3.10/site-packages/pandas/core/indexes/base.py:3805:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
index.pyx:167: in pandas._libs.index.IndexEngine.get_loc
    ???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

>   ???
E   TypeError: '[0, 1, 2, <NA>]' is an invalid key

index.pyx:173: TypeError

During handling of the above exception, another exception occurred:

self = d      POINT (0 0)
e      POINT (1 1)
f      POINT (2 2)
g      POINT (3 3)
h      POINT (4 4)
         ...
à   POINT (95 95)
Ä    POINT (96 96)
Å    POINT (97 97)
Æ    POINT (98 98)
Ç    POINT (99 99)
Length: 100, dtype: geometry
key = [0, 1, 2, <NA>], value = <POINT (0 0)>

    def __setitem__(self, key, value) -> None:
        warn = True
        if not PYPY and using_copy_on_write():
            if sys.getrefcount(self) <= 3:
                warnings.warn(
                    _chained_assignment_msg, ChainedAssignmentError, stacklevel=2
                )
        elif not PYPY and not using_copy_on_write():
            ctr = sys.getrefcount(self)
            ref_count = 3
            if not warn_copy_on_write() and _check_cacher(self):
                # see https://github.com/pandas-dev/pandas/pull/56060#discussion_r1399245221
                ref_count += 1
            if ctr <= ref_count and (
                warn_copy_on_write()
                or (
                    not warn_copy_on_write()
                    and self._mgr.blocks[0].refs.has_reference()  # type: ignore[union-attr]
                )
            ):
                warn = False
                warnings.warn(
                    _chained_assignment_warning_msg, FutureWarning, stacklevel=2
                )

        check_dict_or_set_indexers(key)
        key = com.apply_if_callable(key, self)
        cacher_needs_updating = self._check_is_chained_assignment_possible()

        if key is Ellipsis:
            key = slice(None)

        if isinstance(key, slice):
            indexer = self.index._convert_slice_indexer(key, kind="getitem")
            return self._set_values(indexer, value, warn=warn)

        try:
>           self._set_with_engine(key, value, warn=warn)

/usr/lib64/python3.10/site-packages/pandas/core/series.py:1289:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/pandas/core/series.py:1361: in _set_with_engine
    loc = self.index.get_loc(key)
/usr/lib64/python3.10/site-packages/pandas/core/indexes/base.py:3817: in get_loc
    self._check_indexing_error(key)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = Index(['d', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
       'r', 's', 't', 'u', 'v', 'w', 'x',...',
       '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å',
       'Æ', 'Ç'],
      dtype='object')
key = [0, 1, 2, <NA>]

    def _check_indexing_error(self, key):
        if not is_scalar(key):
            # if key is not a scalar, directly raise an error (the code below
            # would convert to numpy arrays and raise later any way) - GH29926
>           raise InvalidIndexError(key)
E           pandas.errors.InvalidIndexError: [0, 1, 2, <NA>]

/usr/lib64/python3.10/site-packages/pandas/core/indexes/base.py:6059: InvalidIndexError

During handling of the above exception, another exception occurred:

self = <geopandas.tests.test_extension_array.TestSetitem object at 0x7fb9f8ef88e0>
data = <GeometryArray>
[  <POINT (0 0)>,   <POINT (1 1)>,   <POINT (2 2)>,   <POINT (3 3)>,
   <POINT (4 4)>,   <POINT (5 5)>...4)>, <POINT (95 95)>,
 <POINT (96 96)>, <POINT (97 97)>, <POINT (98 98)>, <POINT (99 99)>]
Length: 100, dtype: geometry
idx = [0, 1, 2, <NA>], box_in_series = True

    @pytest.mark.parametrize(
        "idx, box_in_series",
        [
            ([0, 1, 2, pd.NA], False),
            pytest.param(
                [0, 1, 2, pd.NA], True, marks=pytest.mark.xfail(reason="GH-31948")
            ),
            (pd.array([0, 1, 2, pd.NA], dtype="Int64"), False),
            (pd.array([0, 1, 2, pd.NA], dtype="Int64"), False),
        ],
        ids=["list-False", "list-True", "integer-array-False", "integer-array-True"],
    )
    def test_setitem_integer_with_missing_raises(self, data, idx, box_in_series):
        arr = data.copy()

        # TODO(xfail) this raises KeyError about labels not found (it tries label-based)
        # for list of labels with Series
        if box_in_series:
            arr = pd.Series(data, index=[chr(100 + i) for i in range(len(data))])

        msg = "Cannot index with an integer indexer containing NA values"
        with pytest.raises(ValueError, match=msg):
>           arr[idx] = arr[0]

/usr/lib64/python3.10/site-packages/pandas/tests/extension/base/setitem.py:227:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.10/site-packages/pandas/core/series.py:1355: in __setitem__
    self._set_with(key, value, warn=warn)
/usr/lib64/python3.10/site-packages/pandas/core/series.py:1396: in _set_with
    self._set_labels(key, value, warn=warn)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = d      POINT (0 0)
e      POINT (1 1)
f      POINT (2 2)
g      POINT (3 3)
h      POINT (4 4)
         ...
à   POINT (95 95)
Ä    POINT (96 96)
Å    POINT (97 97)
Æ    POINT (98 98)
Ç    POINT (99 99)
Length: 100, dtype: geometry
key = array([0, 1, 2, <NA>], dtype=object), value = <POINT (0 0)>, warn = True

    def _set_labels(self, key, value, warn: bool = True) -> None:
        key = com.asarray_tuplesafe(key)
        indexer: np.ndarray = self.index.get_indexer(key)
        mask = indexer == -1
        if mask.any():
>           raise KeyError(f"{key[mask]} not in index")
E           KeyError: '[0 1 2 <NA>] not in index'

/usr/lib64/python3.10/site-packages/pandas/core/series.py:1403: KeyError
____________________________ test_loc_add_row[geom] ____________________________

geom_name = 'geom'
nybb_filename = 'zip:///home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/tests/data/nybb_16a.zip'

    @pytest.mark.parametrize(
        "geom_name",
        [
            "geometry",
            pytest.param(
                "geom",
                marks=pytest.mark.xfail(
                    reason="pre-regression behaviour only works for geometry col geometry"
                ),
            ),
        ],
    )
    def test_loc_add_row(geom_name, nybb_filename):
        # https://github.com/geopandas/geopandas/issues/3119

        nybb = geopandas.read_file(nybb_filename)[["BoroCode", "geometry"]]
        if geom_name != "geometry":
            nybb = nybb.rename_geometry(geom_name)
        # crs_orig = nybb.crs

        # add a new row
        nybb.loc[5] = [6, nybb.geometry.iloc[0]]
>       assert nybb.geometry.dtype == "geometry"
E       AssertionError: assert dtype('O') == 'geometry'
E        +  where dtype('O') = 0    MULTIPOLYGON (((970217.0223999023 145643.33221...\n1    MULTIPOLYGON (((1029606.0765991211 156073.8142...\n2    MUL...N (((1012821.8057861328 229228.2645...\n5    MULTIPOLYGON (((970217.0223999023 145643.33221...\nName: geom, dtype: object.dtype
E        +    where 0    MULTIPOLYGON (((970217.0223999023 145643.33221...\n1    MULTIPOLYGON (((1029606.0765991211 156073.8142...\n2    MUL...N (((1012821.8057861328 229228.2645...\n5    MULTIPOLYGON (((970217.0223999023 145643.33221...\nName: geom, dtype: object =    BoroCode                                               geom\n0         5  MULTIPOLYGON (((970217.0223999023 145643.3...    2  MULTIPOLYGON (((1012821.8057861328 229228.2645...\n5         6  MULTIPOLYGON (((970217.0223999023 145643.33221....geometry

geopandas/tests/test_op_output_types.py:172: AssertionError
___________ TestShapelyInterface.test_query_sorting[False-expected1] ___________

self = <geopandas.tests.test_sindex.TestShapelyInterface object at 0x7fb9f7b29510>
sort = False, expected = [0, 1, 2]

    @pytest.mark.parametrize(
        "sort, expected",
        (
            (True, [[0, 0, 0], [0, 1, 2]]),
            # False could be anything, at least we'll know if it changes
            (False, [[0, 0, 0], [0, 1, 2]]),
        ),
    )
    def test_query_sorting(self, sort, expected):
        """Check that results from `query` don't depend on the
        order of geometries.
        """
        # these geometries come from a reported issue:
        # https://github.com/geopandas/geopandas/issues/1337
        # there is no theoretical reason they were chosen
        test_polys = GeoSeries([Polygon([(1, 1), (3, 1), (3, 3), (1, 3)])])
        tree_polys = GeoSeries(
            [
                Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]),
                Polygon([(-1, 1), (1, 1), (1, 3), (-1, 3)]),
                Polygon([(3, 3), (5, 3), (5, 5), (3, 5)]),
            ]
        )
        expected = [0, 1, 2]

        test_geo = test_polys.values[0]
        res = tree_polys.sindex.query(test_geo, sort=sort)

        # asserting the same elements
        assert sorted(res) == sorted(expected)
        # asserting the exact array can fail if sort=False
        try:
>           assert_array_equal(res, expected)

geopandas/tests/test_sindex.py:539:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in function eq>, array([1, 0, 2]), [0, 1, 2])
kwds = {'err_msg': '', 'header': 'Arrays are not equal', 'strict': False, 'verbose': True}

    @wraps(func)
    def inner(*args, **kwds):
        with self._recreate_cm():
>           return func(*args, **kwds)
E           AssertionError:
E           Arrays are not equal
E
E           Mismatched elements: 2 / 3 (66.7%)
E           Max absolute difference: 1
E           Max relative difference: 1.
E            x: array([1, 0, 2])
E            y: array([0, 1, 2])

/usr/lib64/python3.10/contextlib.py:79: AssertionError

During handling of the above exception, another exception occurred:

self = <geopandas.tests.test_sindex.TestShapelyInterface object at 0x7fb9f7b29510>
sort = False, expected = [0, 1, 2]

    @pytest.mark.parametrize(
        "sort, expected",
        (
            (True, [[0, 0, 0], [0, 1, 2]]),
            # False could be anything, at least we'll know if it changes
            (False, [[0, 0, 0], [0, 1, 2]]),
        ),
    )
    def test_query_sorting(self, sort, expected):
        """Check that results from `query` don't depend on the
        order of geometries.
        """
        # these geometries come from a reported issue:
        # https://github.com/geopandas/geopandas/issues/1337
        # there is no theoretical reason they were chosen
        test_polys = GeoSeries([Polygon([(1, 1), (3, 1), (3, 3), (1, 3)])])
        tree_polys = GeoSeries(
            [
                Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]),
                Polygon([(-1, 1), (1, 1), (1, 3), (-1, 3)]),
                Polygon([(3, 3), (5, 3), (5, 5), (3, 5)]),
            ]
        )
        expected = [0, 1, 2]

        test_geo = test_polys.values[0]
        res = tree_polys.sindex.query(test_geo, sort=sort)

        # asserting the same elements
        assert sorted(res) == sorted(expected)
        # asserting the exact array can fail if sort=False
        try:
            assert_array_equal(res, expected)
        except AssertionError as e:
            if sort is False:
>               pytest.xfail(
                    "rtree results are known to be unordered, see "
                    "https://github.com/geopandas/geopandas/issues/1337\n"
                    "Expected:\n {}\n".format(expected)
                    + "Got:\n {}\n".format(res.tolist())
                )
E               _pytest.outcomes.XFailed: rtree results are known to be unordered, see https://github.com/geopandas/geopandas/issues/1337
E               Expected:
E                [0, 1, 2]
E               Got:
E                [1, 0, 2]

geopandas/tests/test_sindex.py:542: XFailed
________ TestShapelyInterface.test_query_bulk_sorting[False-expected1] _________

self = <geopandas.tests.test_sindex.TestShapelyInterface object at 0x7fb9f7ad6050>
sort = False, expected = [[0, 0, 0], [0, 1, 2]]

    @pytest.mark.parametrize(
        "sort, expected",
        (
            (True, [[0, 0, 0], [0, 1, 2]]),
            # False could be anything, at least we'll know if it changes
            (False, [[0, 0, 0], [0, 1, 2]]),
        ),
    )
    def test_query_bulk_sorting(self, sort, expected):
        """Check that results from `query` don't depend
        on the order of geometries.
        """
        # these geometries come from a reported issue:
        # https://github.com/geopandas/geopandas/issues/1337
        # there is no theoretical reason they were chosen
        test_polys = GeoSeries([Polygon([(1, 1), (3, 1), (3, 3), (1, 3)])])
        tree_polys = GeoSeries(
            [
                Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]),
                Polygon([(-1, 1), (1, 1), (1, 3), (-1, 3)]),
                Polygon([(3, 3), (5, 3), (5, 5), (3, 5)]),
            ]
        )

        res = tree_polys.sindex.query(test_polys, sort=sort)

        # asserting the same elements
        assert sorted(res[0]) == sorted(expected[0])
        assert sorted(res[1]) == sorted(expected[1])
        # asserting the exact array can fail if sort=False
        try:
>           assert_array_equal(res, expected)

geopandas/tests/test_sindex.py:764:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in function eq>, array([[0, 0, 0],
       [1, 0, 2]]), [[0, 0, 0], [0, 1, 2]])
kwds = {'err_msg': '', 'header': 'Arrays are not equal', 'strict': False, 'verbose': True}

    @wraps(func)
    def inner(*args, **kwds):
        with self._recreate_cm():
>           return func(*args, **kwds)
E           AssertionError:
E           Arrays are not equal
E
E           Mismatched elements: 2 / 6 (33.3%)
E           Max absolute difference: 1
E           Max relative difference: 1.
E            x: array([[0, 0, 0],
E                  [1, 0, 2]])
E            y: array([[0, 0, 0],
E                  [0, 1, 2]])

/usr/lib64/python3.10/contextlib.py:79: AssertionError

During handling of the above exception, another exception occurred:

self = <geopandas.tests.test_sindex.TestShapelyInterface object at 0x7fb9f7ad6050>
sort = False, expected = [[0, 0, 0], [0, 1, 2]]

    @pytest.mark.parametrize(
        "sort, expected",
        (
            (True, [[0, 0, 0], [0, 1, 2]]),
            # False could be anything, at least we'll know if it changes
            (False, [[0, 0, 0], [0, 1, 2]]),
        ),
    )
    def test_query_bulk_sorting(self, sort, expected):
        """Check that results from `query` don't depend
        on the order of geometries.
        """
        # these geometries come from a reported issue:
        # https://github.com/geopandas/geopandas/issues/1337
        # there is no theoretical reason they were chosen
        test_polys = GeoSeries([Polygon([(1, 1), (3, 1), (3, 3), (1, 3)])])
        tree_polys = GeoSeries(
            [
                Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]),
                Polygon([(-1, 1), (1, 1), (1, 3), (-1, 3)]),
                Polygon([(3, 3), (5, 3), (5, 5), (3, 5)]),
            ]
        )

        res = tree_polys.sindex.query(test_polys, sort=sort)

        # asserting the same elements
        assert sorted(res[0]) == sorted(expected[0])
        assert sorted(res[1]) == sorted(expected[1])
        # asserting the exact array can fail if sort=False
        try:
            assert_array_equal(res, expected)
        except AssertionError as e:
            if sort is False:
>               pytest.xfail(
                    "rtree results are known to be unordered, see "
                    "https://github.com/geopandas/geopandas/issues/1337\n"
                    "Expected:\n {}\n".format(expected)
                    + "Got:\n {}\n".format(res.tolist())
                )
E               _pytest.outcomes.XFailed: rtree results are known to be unordered, see https://github.com/geopandas/geopandas/issues/1337
E               Expected:
E                [[0, 0, 0], [0, 1, 2]]
E               Got:
E                [[0, 0, 0], [1, 0, 2]]

geopandas/tests/test_sindex.py:767: XFailed
_______________ TestSpatialJoinNYBB.test_no_overlapping_geometry _______________

self = <geopandas.tools.tests.test_sjoin.TestSpatialJoinNYBB object at 0x7fb9f7936d40>

    @pytest.mark.xfail
    def test_no_overlapping_geometry(self):
        # Note: these tests are for correctly returning GeoDataFrame
        # when result of the join is empty

        df_inner = sjoin(self.pointdf.iloc[17:], self.polydf, how="inner")
        df_left = sjoin(self.pointdf.iloc[17:], self.polydf, how="left")
        df_right = sjoin(self.pointdf.iloc[17:], self.polydf, how="right")

        expected_inner_df = pd.concat(
            [
                self.pointdf.iloc[:0],
                pd.Series(name="index_right", dtype="int64"),
                self.polydf.drop("geometry", axis=1).iloc[:0],
            ],
            axis=1,
        )

        expected_inner = GeoDataFrame(expected_inner_df)

        expected_right_df = pd.concat(
            [
                self.pointdf.drop("geometry", axis=1).iloc[:0],
                pd.concat(
                    [
                        pd.Series(name="index_left", dtype="int64"),
                        pd.Series(name="index_right", dtype="int64"),
                    ],
                    axis=1,
                ),
                self.polydf,
            ],
            axis=1,
        )

        expected_right = GeoDataFrame(expected_right_df).set_index("index_right")

        expected_left_df = pd.concat(
            [
                self.pointdf.iloc[17:],
                pd.Series(name="index_right", dtype="int64"),
                self.polydf.iloc[:0].drop("geometry", axis=1),
            ],
            axis=1,
        )

        expected_left = GeoDataFrame(expected_left_df)

        assert expected_inner.equals(df_inner)
>       assert expected_right.equals(df_right)
E       assert False
E        +  where False = <bound method NDFrame.equals of              pointattr1  ...                                           geometry\nindex_...188655.315795...\nNaN                 NaN  ...  MULTIPOLYGON (((1012821.805786133 229228.26458...\n\n[5 rows x 8 columns]>(   index_left  ...                                           geometry\n0         NaN  ...  MULTIPOLYGON (((970217.02239....055786133 188655.315795...\n4         NaN  ...  MULTIPOLYGON (((1012821.805786133 229228.26458...\n\n[5 rows x 8 columns])
E        +    where <bound method NDFrame.equals of              pointattr1  ...                                           geometry\nindex_...188655.315795...\nNaN                 NaN  ...  MULTIPOLYGON (((1012821.805786133 229228.26458...\n\n[5 rows x 8 columns]> =              pointattr1  ...                                           geometry\nindex_right              ...          ... 188655.315795...\nNaN                 NaN  ...  MULTIPOLYGON (((1012821.805786133 229228.26458...\n\n[5 rows x 8 columns].equals

geopandas/tools/tests/test_sjoin.py:944: AssertionError
=============================== warnings summary ===============================
geopandas/tests/test_extension_array.py::TestGetitem::test_getitem_series_integer_with_missing_raises[integer-array]
  /usr/lib64/python3.10/site-packages/pandas/tests/extension/base/getitem.py:276: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
    ser[idx]

geopandas/tests/test_extension_array.py::TestSetitem::test_setitem_integer_with_missing_raises[list-True]
  /usr/lib64/python3.10/site-packages/pandas/tests/extension/base/setitem.py:227: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
    arr[idx] = arr[0]

geopandas/tests/test_extension_array.py::TestMissing::test_fillna_limit_backfill
  /usr/lib64/python3.10/site-packages/pandas/tests/extension/base/missing.py:107: FutureWarning: Series.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.
    result = pd.Series(arr).fillna(method="backfill", limit=2)

geopandas/tests/test_merge.py::TestMerging::test_concat_axis0_unaligned_cols
geopandas/tests/test_merge.py::TestMerging::test_concat_axis0_unaligned_cols
  /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/tests/test_merge.py:137: SettingWithCopyWarning:
  A value is trying to be set on a copy of a slice from a DataFrame

  See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    partial_none_case.iloc[0] = None

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=================================== XPASSES ====================================
=========================== short test summary info ============================
SKIPPED [1] geopandas/io/tests/test_arrow.py:43: could not import 'pyarrow': No module named 'pyarrow'
SKIPPED [1] geopandas/io/tests/test_geoarrow.py:17: could not import 'pyarrow': No module named 'pyarrow'
SKIPPED [1] geopandas/tests/test_explore.py:14: could not import 'folium': No module named 'folium'
SKIPPED [1] geopandas/tests/test_geocode.py:15: could not import 'geopy': No module named 'geopy'
SKIPPED [7] geopandas/io/tests/test_file.py:134: pyogrio not installed
SKIPPED [7] geopandas/io/tests/test_file.py:157: pyogrio not installed
SKIPPED [7] geopandas/io/tests/test_file.py:171: pyogrio not installed
SKIPPED [4] geopandas/io/tests/test_file.py:213: Driver corresponding to ext .shp doesn't support dt fields
SKIPPED [2] geopandas/io/tests/test_file.py:213: Driver corresponding to ext  doesn't support dt fields
SKIPPED [14] geopandas/io/tests/test_file.py:203: pyogrio not installed
SKIPPED [2] geopandas/io/tests/test_file.py:265: pyogrio not installed
SKIPPED [2] geopandas/io/tests/test_file.py:279: pyogrio not installed
SKIPPED [7] geopandas/io/tests/test_file.py:320: pyogrio not installed
SKIPPED [7] geopandas/io/tests/test_file.py:335: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:350: pyogrio not installed
SKIPPED [8] geopandas/io/tests/test_file.py:373: pyogrio not installed
SKIPPED [7] geopandas/io/tests/test_file.py:397: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:411: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:418: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:450: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:481: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:497: pyogrio not installed
SKIPPED [7] geopandas/io/tests/test_file.py:506: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:542: pyogrio not installed
SKIPPED [7] geopandas/io/tests/test_file.py:548: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:581: pyogrio not installed
SKIPPED [4] geopandas/io/tests/test_file.py:590: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:611: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:617: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:636: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:645: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:654: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:660: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:666: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:689: could not import 'fsspec': No module named 'fsspec'
SKIPPED [1] geopandas/io/tests/test_file.py:688: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:699: could not import 'fsspec': No module named 'fsspec'
SKIPPED [1] geopandas/io/tests/test_file.py:698: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:705: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:723: pyogrio not installed
SKIPPED [2] geopandas/io/tests/test_file.py:730: bug fixed in pyogrio 0.9.0
SKIPPED [1] geopandas/io/tests/test_file.py:740: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:752: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:761: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:766: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:771: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:807: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:812: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:822: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:834: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:846: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:864: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:876: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:885: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:902: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:912: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:920: test for fiona < 1.9
SKIPPED [1] geopandas/io/tests/test_file.py:928: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:941: pyogrio not installed
SKIPPED [2] geopandas/io/tests/test_file.py:961: pyogrio not installed
SKIPPED [2] geopandas/io/tests/test_file.py:985: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1009: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1020: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1036: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1057: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1078: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1092: pyogrio not installed
SKIPPED [2] geopandas/io/tests/test_file.py:1138: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1309: pyogrio not installed
SKIPPED [2] geopandas/io/tests/test_file.py:1316: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1327: Fiona >= 1.9 supports metadata
SKIPPED [1] geopandas/io/tests/test_file.py:1350: Pyogrio not available
SKIPPED [2] geopandas/io/tests/test_file.py:1363: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1375: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1381: pyogrio not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1410: test for fiona not installed
SKIPPED [1] geopandas/io/tests/test_file.py:1420: pyogrio not installed
SKIPPED [56] geopandas/io/tests/test_file_geom_types_drivers.py:268: pyogrio not installed
SKIPPED [3] geopandas/io/tests/test_pickle.py:34: shapely 2.0/pygeos-based unpickling currently only works for shapely-2.0/pygeos-written files
SKIPPED [1] geopandas/io/tests/test_sql.py:230: got empty parameter set ['engine_postgis'], function test_get_conn at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:229
SKIPPED [1] geopandas/io/tests/test_sql.py:244: got empty parameter set ['connection_postgis'], function test_read_postgis_default at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:243
SKIPPED [1] geopandas/io/tests/test_sql.py:257: got empty parameter set ['connection_postgis'], function test_read_postgis_custom_geom_col at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:256
SKIPPED [1] geopandas/io/tests/test_sql.py:268: got empty parameter set ['connection_postgis'], function test_read_postgis_select_geom_as at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:267
SKIPPED [1] geopandas/io/tests/test_sql.py:284: got empty parameter set ['connection_postgis'], function test_read_postgis_get_srid at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:283
SKIPPED [1] geopandas/io/tests/test_sql.py:298: got empty parameter set ['connection_postgis'], function test_read_postgis_override_srid at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:297
SKIPPED [1] geopandas/io/tests/test_sql.py:311: got empty parameter set ['connection_postgis'], function test_from_postgis_default at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:310
SKIPPED [1] geopandas/io/tests/test_sql.py:321: got empty parameter set ['connection_postgis'], function test_from_postgis_custom_geom_col at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:320
SKIPPED [1] geopandas/io/tests/test_sql.py:357: got empty parameter set ['connection_postgis'], function test_read_postgis_chunksize at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:356
SKIPPED [1] geopandas/io/tests/test_sql.py:372: got empty parameter set ['engine_postgis'], function test_write_postgis_default at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:371
SKIPPED [1] geopandas/io/tests/test_sql.py:388: got empty parameter set ['engine_postgis'], function test_write_postgis_uppercase_tablename at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:387
SKIPPED [1] geopandas/io/tests/test_sql.py:404: got empty parameter set ['engine_postgis'], function test_write_postgis_sqlalchemy_connection at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:403
SKIPPED [1] geopandas/io/tests/test_sql.py:420: got empty parameter set ['engine_postgis'], function test_write_postgis_fail_when_table_exists at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:419
SKIPPED [1] geopandas/io/tests/test_sql.py:440: got empty parameter set ['engine_postgis'], function test_write_postgis_replace_when_table_exists at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:439
SKIPPED [1] geopandas/io/tests/test_sql.py:458: got empty parameter set ['engine_postgis'], function test_write_postgis_append_when_table_exists at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:457
SKIPPED [1] geopandas/io/tests/test_sql.py:489: got empty parameter set ['engine_postgis'], function test_write_postgis_without_crs at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:488
SKIPPED [1] geopandas/io/tests/test_sql.py:512: got empty parameter set ['engine_postgis'], function test_write_postgis_with_esri_authority at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:511
SKIPPED [1] geopandas/io/tests/test_sql.py:535: got empty parameter set ['engine_postgis'], function test_write_postgis_geometry_collection at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:534
SKIPPED [1] geopandas/io/tests/test_sql.py:562: got empty parameter set ['engine_postgis'], function test_write_postgis_mixed_geometry_types at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:561
SKIPPED [1] geopandas/io/tests/test_sql.py:589: got empty parameter set ['engine_postgis'], function test_write_postgis_linear_ring at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:588
SKIPPED [1] geopandas/io/tests/test_sql.py:611: got empty parameter set ['engine_postgis'], function test_write_postgis_in_chunks at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:610
SKIPPED [1] geopandas/io/tests/test_sql.py:645: got empty parameter set ['engine_postgis'], function test_write_postgis_to_different_schema at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:644
SKIPPED [1] geopandas/io/tests/test_sql.py:669: got empty parameter set ['engine_postgis'], function test_write_postgis_to_different_schema_when_table_exists at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:668
SKIPPED [1] geopandas/io/tests/test_sql.py:714: got empty parameter set ['engine_postgis'], function test_write_postgis_3D_geometries at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:713
SKIPPED [1] geopandas/io/tests/test_sql.py:730: got empty parameter set ['engine_postgis'], function test_row_order at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:729
SKIPPED [1] geopandas/io/tests/test_sql.py:747: got empty parameter set ['engine_postgis'], function test_append_before_table_exists at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:746
SKIPPED [1] geopandas/io/tests/test_sql.py:765: got empty parameter set ['engine_postgis'], function test_append_with_different_crs at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:764
SKIPPED [1] geopandas/io/tests/test_sql.py:782: got empty parameter set ['engine_postgis'], function test_append_without_crs at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:781
SKIPPED [1] geopandas/io/tests/test_sql.py:798: got empty parameter set ['engine_postgis'], function test_duplicate_geometry_column_fails at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:797
SKIPPED [1] geopandas/io/tests/test_sql.py:814: got empty parameter set ['connection_postgis'], function test_read_non_epsg_crs at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:813
SKIPPED [1] geopandas/io/tests/test_sql.py:825: got empty parameter set ['connection_postgis'], function test_read_srid_not_in_table at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:824
SKIPPED [1] geopandas/io/tests/test_sql.py:844: got empty parameter set ['connection_postgis'], function test_read_no_spatial_ref_sys_table_in_postgis at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:843
SKIPPED [1] geopandas/io/tests/test_sql.py:865: got empty parameter set ['connection_postgis'], function test_read_non_epsg_crs_chunksize at /home/tkloczko/rpmbuild/BUILD/geopandas-1.0.0/geopandas/io/tests/test_sql.py:864
SKIPPED [1] geopandas/tests/test_array.py:937: pyproj installed
SKIPPED [1] geopandas/tests/test_array.py:972: pyproj installed
SKIPPED [1] geopandas/tests/test_array.py:982: pyproj installed
SKIPPED [1] geopandas/tests/test_dissolve.py:104: warning for pandas 1.5.x
SKIPPED [20] ../../../../../usr/lib64/python3.10/site-packages/pandas/tests/extension/base/reduce.py:123: geometry is not numeric dtype
SKIPPED [1] geopandas/tests/test_extension_array.py:488: boolean reduce (any/all) tested in test_pandas_methods
SKIPPED [1] geopandas/tests/test_extension_array.py:526: not applicable
SKIPPED [1] geopandas/tests/test_extension_array.py:530: not applicable
SKIPPED [2] ../../../../../usr/lib64/python3.10/site-packages/pandas/tests/extension/base/methods.py:443: <class 'geopandas.array.GeometryArray'> does not support diff
SKIPPED [2] geopandas/tests/test_extension_array.py:577: searchsorted not supported
SKIPPED [1] geopandas/tests/test_extension_array.py:581: Not yet implemented
SKIPPED [1] geopandas/tests/test_extension_array.py:585: addition not supported
SKIPPED [1] geopandas/tests/test_extension_array.py:589: Not yet implemented
SKIPPED [1] geopandas/tests/test_extension_array.py:595: Min/max not supported
SKIPPED [1] geopandas/tests/test_extension_array.py:599: Min/max not supported
SKIPPED [1] geopandas/tests/test_extension_array.py:603: Min/max not supported
SKIPPED [1] geopandas/tests/test_extension_array.py:607: Min/max not supported
SKIPPED [1] geopandas/tests/test_extension_array.py:611: Min/max not supported
SKIPPED [1] ../../../../../usr/lib64/python3.10/site-packages/pandas/tests/extension/base/casting.py:50: Could not import 'pyarrow'
SKIPPED [2] ../../../../../usr/lib64/python3.10/site-packages/pandas/tests/extension/base/io.py:12: Not yet implemented
SKIPPED [3] geopandas/tests/test_geom_methods.py:1907: could not import 'pointpats': No module named 'pointpats'
SKIPPED [1] geopandas/tests/test_geoseries.py:500: pyproj installed
SKIPPED [1] geopandas/tests/test_overlay.py:260: Skipped
SKIPPED [1] geopandas/tests/test_overlay.py:338: Difference uses columns from one df only.
SKIPPED [1] geopandas/tests/test_plotting.py:1064: array-like style_kwds not supported for mixed geometry types (#1379)
SKIPPED [1] geopandas/tests/test_plotting.py:1083: array-like style_kwds not supported for mixed geometry types (#1379)
SKIPPED [1] geopandas/tests/test_plotting.py:1212: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1225: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1238: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1249: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1257: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1270: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [2] geopandas/tests/test_plotting.py:1283: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1288: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1293: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1312: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1317: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1330: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1352: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_plotting.py:1466: could not import 'mapclassify': No module named 'mapclassify'
SKIPPED [1] geopandas/tests/test_sindex.py:74: append removed in pandas 2.0
SKIPPED [1] geopandas/tests/test_sindex.py: unconditional skip
SKIPPED [1] geopandas/tests/test_sindex.py:474: Test for 'dwithin'-incompatible versions of GEOS
SKIPPED [1] geopandas/tools/tests/test_sjoin.py:947: Not implemented
XFAIL geopandas/io/tests/test_file.py::test_empty_crs[fiona-GPKG-.gpkg] - reason: GPKG is read with Undefined geographic SRS.
XFAIL geopandas/io/tests/test_file.py::test_empty_crs[fiona-None-.gpkg] - reason: GPKG is read with Undefined geographic SRS.
XFAIL geopandas/tests/test_extension_array.py::TestGetitem::test_getitem_series_integer_with_missing_raises[list] - Tries label-based and raises KeyError; in some cases raises when calling np.asarray
XFAIL geopandas/tests/test_extension_array.py::TestGetitem::test_getitem_series_integer_with_missing_raises[integer-array] - Tries label-based and raises KeyError; in some cases raises when calling np.asarray
XFAIL geopandas/tests/test_extension_array.py::TestSetitem::test_setitem_integer_with_missing_raises[list-True] - GH-31948
XFAIL geopandas/tests/test_op_output_types.py::test_loc_add_row[geom] - pre-regression behaviour only works for geometry col geometry
XFAIL geopandas/tests/test_sindex.py::TestShapelyInterface::test_query_sorting[False-expected1] - reason: rtree results are known to be unordered, see https://github.com/geopandas/geopandas/issues/1337
Expected:
 [0, 1, 2]
Got:
 [1, 0, 2]

XFAIL geopandas/tests/test_sindex.py::TestShapelyInterface::test_query_bulk_sorting[False-expected1] - reason: rtree results are known to be unordered, see https://github.com/geopandas/geopandas/issues/1337
Expected:
 [[0, 0, 0], [0, 1, 2]]
Got:
 [[0, 0, 0], [1, 0, 2]]

XFAIL geopandas/tools/tests/test_sjoin.py::TestSpatialJoinNYBB::test_no_overlapping_geometry
XPASS geopandas/tests/test_pandas_methods.py::test_drop_duplicates_series
XPASS geopandas/tests/test_pandas_methods.py::test_drop_duplicates_frame
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[png-kde]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[png-density]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-line]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-bar]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-barh]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-kde]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-density]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-area]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-hist]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-box]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-pie]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-scatter]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_pandas_kind[pdf-hexbin]
FAILED geopandas/tests/test_plotting.py::TestGeoplotAccessor::test_geo_kind[pdf]
= 14 failed, 1996 passed, 321 skipped, 9 xfailed, 2 xpassed, 5 warnings in 117.67s (0:01:57) =
Exception ignored in atexit callback: <bound method _Converter.__del__ of <matplotlib.testing.compare._GSConverter object at 0x7fb9f7bacf10>>
Traceback (most recent call last):
  File "/usr/lib64/python3.10/site-packages/matplotlib/testing/compare.py", line 86, in __del__
    stream.close()
BrokenPipeError: [Errno 32] Broken pipe

@m-richards
Copy link
Member

@kloczek it looks to me like there is an issue with how ghostscript is installed / configured on the system based on the test output - it's not found and then later a sequence of pipe errors trigger the test failures inside matplotlib code.

The two png failures messages I have seen before but only using pytest-xdist.

I'm also not sure if your environment which is cut off from the network is working correctly as geopandas/io/tests/test_file::test_read_file_url would fail without network access - you mention using pytest -m "not network" to filter tests but geopandas doesn't define this pytest mark, but the above test does use @pytest.mark.web.

Additionally it'd be good to know how you came up with your list of modules in the build env - you're missing pyogrio in favour of fiona, but as of 1.0 pyogrio should be installed by default and fiona optional - so it'd be good to know if we're missing this somewhere.

@kloczek
Copy link
Author

kloczek commented Jun 29, 2024

@kloczek it looks to me like there is an issue with how ghostscript is installed / configured on the system based on the test output - it's not found and then later a sequence of pipe errors trigger the test failures inside matplotlib code.

Indeed it is issue with png output 😞

you mention using pytest -m "not network" to filter tests but geopandas doesn't define this pytest mark, but the above test does use @pytest.mark.web.

Is it possible to add duplicate network mark? 🤔
That mark is really widely used in other test suites which allows use that as kind of standard procedure.

@martinfleis
Copy link
Member

Is there anything preventing us from changing the marker from web to network?

@m-richards
Copy link
Member

m-richards commented Jun 29, 2024

Is there anything preventing us from changing the marker from web to network?

I don't think so, it dates from #531 - I think the only reason to keep the old mark is if other package manager build scripts are already set up and are using the existing mark (but I don't know if this is likely)

Indeed it is issue with png output 😞

Perhaps I could have been clearer in what I said - this doesn't look like a geopandas issue to me, but rather something to do with the system dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants