pycoast 1.7.0__tar.gz → 1.7.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pycoast-1.7.0 → pycoast-1.7.1}/MANIFEST.in +0 -1
- {pycoast-1.7.0/pycoast.egg-info → pycoast-1.7.1}/PKG-INFO +20 -8
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/cw_base.py +45 -28
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_pycoast.py +19 -9
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/version.py +4 -4
- {pycoast-1.7.0 → pycoast-1.7.1/pycoast.egg-info}/PKG-INFO +20 -8
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast.egg-info/requires.txt +7 -7
- {pycoast-1.7.0 → pycoast-1.7.1}/pyproject.toml +6 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/setup.py +4 -4
- {pycoast-1.7.0 → pycoast-1.7.1}/AUTHORS.md +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/LICENSE.txt +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/README +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/Makefile +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/api/.gitkeep +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/conf.py +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/config.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/graticule.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/high_quality_contours.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/BMNG_clouds_201109181715_areaT2.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/brazil_shapefiles_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/euro_coast.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/euro_coast_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/euro_coast_grid_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/euro_grid.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/euro_grid_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/geos_coast.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/geos_coast_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/grid_geos_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/nh_grid_coarse_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/nh_points_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/nh_polygons_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/images/nh_polygons_lines_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/index.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/installation.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/points.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/polygons_and_lines.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/shapefiles.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/test.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/docs/source/usage.rst +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/__init__.py +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/conftest.py +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/cw_agg.py +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/cw_pil.py +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/__init__.py +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/brazil_shapefiles.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/brazil_shapefiles_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/coasts_and_grid.ini +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/coasts_and_grid_agg.ini +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/contours_europe.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/contours_europe_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/contours_europe_alpha.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/contours_geos.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/contours_geos_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/dateline_boundary_cross.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/dateline_cross.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/eastern_shapes_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/eastern_shapes_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_europe.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_europe_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_europe_agg_txt.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_from_dict_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_from_dict_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_geos.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_geos_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_germ.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_nh.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_nh_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/grid_nh_cfg_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/lonlat_boundary_cross.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_cities_agg.ini +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_cities_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_cities_from_dict_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_cities_from_dict_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_cities_pil.ini +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_cities_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_one_shapefile.ini +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_points_agg.ini +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_points_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_points_cfg_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_points_pil.ini +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_points_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_polygons.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/nh_polygons_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/no_h_scratch_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/no_h_scratch_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/no_v_scratch_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/no_v_scratch_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/one_shapefile_from_cfg_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/one_shapefile_from_cfg_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/DejaVuSerif.ttf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/CITIES/cities.txt +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L1.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L1.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L1.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L1.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L2.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L2.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L2.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L2.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L3.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L3.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L3.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L3.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L4.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L4.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L4.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L4.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L1.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L1.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L1.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L1.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L2.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L2.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L2.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L2.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L3.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L3.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L3.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L3.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L01.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L01.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L01.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L01.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L02.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L02.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L02.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L02.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L03.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L03.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L03.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L03.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L04.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L04.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L04.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L04.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L05.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L05.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L05.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L05.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L06.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L06.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L06.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L06.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L07.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L07.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L07.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L07.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L08.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L08.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L08.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L08.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L09.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L09.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L09.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L09.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L1.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L1.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L1.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L10.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L10.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L10.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L10.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L11.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L11.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L11.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L11.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L2.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L2.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L2.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L3.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L3.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L3.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/Metareas.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/Metareas.mxd +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/Metareas.prj +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/Metareas.sbn +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/Metareas.sbx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/Metareas.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/Metareas.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/README +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BRASIL.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BRASIL.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BRASIL.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Capitais.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Capitais.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Capitais.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Contorno.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Contorno.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Contorno.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Regioes.dbf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Regioes.shp +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/BR_Regioes.shx +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/divisao_politica.txt +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/divisao_politica/leia.txt +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/metarea5.gsf +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/metarea5.tbl +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/shapes/metarea5.tbl.info +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/test_data/test_config.ini +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/two_shapefiles_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/two_shapefiles_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/western_shapes_agg.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast/tests/western_shapes_pil.png +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast.egg-info/SOURCES.txt +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast.egg-info/dependency_links.txt +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast.egg-info/not-zip-safe +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/pycoast.egg-info/top_level.txt +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/setup.cfg +0 -0
- {pycoast-1.7.0 → pycoast-1.7.1}/versioneer.py +0 -0
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycoast
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.1
|
|
4
4
|
Summary: Writing of coastlines, borders and rivers to images in Python
|
|
5
|
-
Home-page: UNKNOWN
|
|
6
5
|
Author: Esben S. Nielsen
|
|
7
6
|
Author-email: esn@dmi.dk
|
|
8
|
-
License: UNKNOWN
|
|
9
|
-
Platform: UNKNOWN
|
|
10
7
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
8
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
12
9
|
Classifier: Programming Language :: Python
|
|
@@ -14,10 +11,27 @@ Classifier: Operating System :: OS Independent
|
|
|
14
11
|
Classifier: Intended Audience :: Science/Research
|
|
15
12
|
Classifier: Topic :: Scientific/Engineering
|
|
16
13
|
Requires-Python: >3.9
|
|
17
|
-
Provides-Extra: docs
|
|
18
|
-
Provides-Extra: tests
|
|
19
14
|
License-File: LICENSE.txt
|
|
20
15
|
License-File: AUTHORS.md
|
|
16
|
+
Requires-Dist: aggdraw
|
|
17
|
+
Requires-Dist: pyshp
|
|
18
|
+
Requires-Dist: numpy
|
|
19
|
+
Requires-Dist: pyproj
|
|
20
|
+
Requires-Dist: pillow
|
|
21
|
+
Provides-Extra: docs
|
|
22
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
23
|
+
Requires-Dist: pyresample; extra == "docs"
|
|
24
|
+
Requires-Dist: pytest; extra == "docs"
|
|
25
|
+
Requires-Dist: pytest-lazy-fixtures; extra == "docs"
|
|
26
|
+
Requires-Dist: sphinx_rtd_theme; extra == "docs"
|
|
27
|
+
Requires-Dist: sphinxcontrib-apidoc; extra == "docs"
|
|
28
|
+
Provides-Extra: tests
|
|
29
|
+
Requires-Dist: pyresample; extra == "tests"
|
|
30
|
+
Requires-Dist: pytest; extra == "tests"
|
|
31
|
+
Requires-Dist: pytest-cov; extra == "tests"
|
|
32
|
+
Requires-Dist: coverage; extra == "tests"
|
|
33
|
+
Requires-Dist: coveralls; extra == "tests"
|
|
34
|
+
Requires-Dist: pytest-lazy-fixtures; extra == "tests"
|
|
21
35
|
|
|
22
36
|
PyCoast
|
|
23
37
|
=======
|
|
@@ -65,5 +79,3 @@ Example
|
|
|
65
79
|
>>> cw.add_rivers(img, area_def, level=5, outline='blue')
|
|
66
80
|
>>> cw.add_borders(img, area_def, outline=(255, 0, 0))
|
|
67
81
|
>>> img.show()
|
|
68
|
-
|
|
69
|
-
|
|
@@ -26,6 +26,7 @@ import json
|
|
|
26
26
|
import logging
|
|
27
27
|
import math
|
|
28
28
|
import os
|
|
29
|
+
from pathlib import Path
|
|
29
30
|
from typing import Generator
|
|
30
31
|
|
|
31
32
|
import numpy as np
|
|
@@ -501,11 +502,11 @@ class ContourWriterBase(object):
|
|
|
501
502
|
return overlays
|
|
502
503
|
|
|
503
504
|
def add_overlay_from_dict(self, overlays, area_def, cache_epoch=None, background=None):
|
|
504
|
-
"""Create and return a transparent image adding all the overlays contained in the
|
|
505
|
+
"""Create and return a transparent image adding all the overlays contained in the ``overlays`` dict.
|
|
505
506
|
|
|
506
507
|
Optionally caches overlay results for faster rendering of images with
|
|
507
508
|
the same provided AreaDefinition and parameters. Cached results are
|
|
508
|
-
identified by hashing the AreaDefinition and the overlays dictionary.
|
|
509
|
+
identified by hashing the AreaDefinition and the ``overlays`` dictionary.
|
|
509
510
|
|
|
510
511
|
Note that if ``background`` is provided and caching is not used, the
|
|
511
512
|
result will be the final result of applying the overlays onto the
|
|
@@ -530,24 +531,33 @@ class ContourWriterBase(object):
|
|
|
530
531
|
provided dictionary (see below).
|
|
531
532
|
background: pillow image instance
|
|
532
533
|
The image on which to write the overlays on. If it's None (default),
|
|
533
|
-
a new image is created, otherwise the
|
|
534
|
+
a new image is created, otherwise the provided background is
|
|
534
535
|
used and changed *in place*.
|
|
535
536
|
|
|
537
|
+
The keys in ``overlays`` that will be taken into account are:
|
|
538
|
+
cache, coasts, rivers, borders, shapefiles, grid, cities, points
|
|
536
539
|
|
|
537
|
-
|
|
538
|
-
|
|
540
|
+
For all of them except ``cache``, the items are the same as the
|
|
541
|
+
corresponding functions in pycoast, so refer to the docstrings of
|
|
542
|
+
these functions (add_coastlines, add_rivers, add_borders,
|
|
543
|
+
add_shapefile_shapes, add_grid, add_cities, add_points).
|
|
544
|
+
For cache, two parameters are configurable:
|
|
539
545
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
546
|
+
- `file`:
|
|
547
|
+
specify the directory and the prefix
|
|
548
|
+
of the file to save the caches decoration to (for example
|
|
549
|
+
/var/run/black_coasts_red_borders)
|
|
550
|
+
- `regenerate`:
|
|
551
|
+
True or False (default) to force the overwriting
|
|
552
|
+
of an already cached file.
|
|
545
553
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
554
|
+
:Returns: PIL.Image.Image
|
|
555
|
+
|
|
556
|
+
Resulting overlays as an Image object. If caching was used then
|
|
557
|
+
the Image wraps an open file and should be closed by the caller.
|
|
558
|
+
If caching was not used or the cached image was recreated then
|
|
559
|
+
this is an in-memory Image object. Regardless, it can be closed
|
|
560
|
+
by calling the ``.close()`` method of the Image.
|
|
551
561
|
|
|
552
562
|
"""
|
|
553
563
|
overlay_helper = _OverlaysFromDict(self, overlays, area_def, cache_epoch, background)
|
|
@@ -556,12 +566,22 @@ class ContourWriterBase(object):
|
|
|
556
566
|
def add_overlay_from_config(self, config_file, area_def, background=None):
|
|
557
567
|
"""Create and return a transparent image adding all the overlays contained in a configuration file.
|
|
558
568
|
|
|
569
|
+
See :meth:`add_overlay_from_dict` for more information.
|
|
570
|
+
|
|
559
571
|
:Parameters:
|
|
560
572
|
config_file : str
|
|
561
573
|
Configuration file name
|
|
562
574
|
area_def : object
|
|
563
575
|
Area Definition of the creating image
|
|
564
576
|
|
|
577
|
+
:Returns: PIL.Image.Image
|
|
578
|
+
|
|
579
|
+
Resulting overlays as an Image object. If caching was used then
|
|
580
|
+
the Image wraps an open file and should be closed by the caller.
|
|
581
|
+
If caching was not used or the cached image was recreated then
|
|
582
|
+
this is an in-memory Image object. Regardless, it can be closed
|
|
583
|
+
by calling the ``.close()`` method of the Image.
|
|
584
|
+
|
|
565
585
|
"""
|
|
566
586
|
overlays = self._config_to_dict(config_file)
|
|
567
587
|
return self.add_overlay_from_dict(overlays, area_def, os.path.getmtime(config_file), background)
|
|
@@ -705,8 +725,7 @@ class ContourWriterBase(object):
|
|
|
705
725
|
# cities.red is a reduced version of the files avalable at http://download.geonames.org
|
|
706
726
|
# Fields: 0=name (UTF-8), 1=asciiname, 2=longitude [°E], 3=latitude [°N], 4=countrycode
|
|
707
727
|
cities_filename = os.path.join(db_root_path, os.path.join("CITIES", "cities.txt"))
|
|
708
|
-
|
|
709
|
-
for city_name, lon, lat in cities_parser.iter_cities_names_lon_lat(cities_list):
|
|
728
|
+
for city_name, lon, lat in iter_cities_names_lon_lat(cities_filename, cities_list):
|
|
710
729
|
try:
|
|
711
730
|
x, y = area_def.get_array_indices_from_lonlat(lon, lat)
|
|
712
731
|
except ValueError:
|
|
@@ -1132,14 +1151,12 @@ def _get_pixel_index(shape, area_extent, x_size, y_size, prj, x_offset=0, y_offs
|
|
|
1132
1151
|
return index_arrays, is_reduced
|
|
1133
1152
|
|
|
1134
1153
|
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
def iter_cities_names_lon_lat(self, cities_list: list[str]) -> Generator[tuple[str, float, float], None, None]:
|
|
1142
|
-
for city_row in self._cities_file:
|
|
1154
|
+
def iter_cities_names_lon_lat(
|
|
1155
|
+
cities_filename: str | Path, cities_list: list[str]
|
|
1156
|
+
) -> Generator[tuple[str, float, float], None, None]:
|
|
1157
|
+
"""Iterate over citiesN.txt files from GeoNames.org."""
|
|
1158
|
+
with open(cities_filename, mode="r", encoding="utf-8") as cities_file:
|
|
1159
|
+
for city_row in cities_file:
|
|
1143
1160
|
city_info = city_row.split("\t")
|
|
1144
1161
|
if not city_info or not (city_info[1] in cities_list or city_info[2] in cities_list):
|
|
1145
1162
|
continue
|
|
@@ -1441,7 +1458,7 @@ class _OverlaysFromDict:
|
|
|
1441
1458
|
def _apply_cached_foreground_on_background(background, foreground):
|
|
1442
1459
|
premult_foreground = foreground.convert("RGBa")
|
|
1443
1460
|
if background.mode == "RGBA":
|
|
1444
|
-
# Cached foreground and background are both RGBA,
|
|
1461
|
+
# Cached foreground and background are both RGBA, no extra conversions needed
|
|
1445
1462
|
background.paste(premult_foreground, mask=premult_foreground)
|
|
1446
1463
|
return
|
|
1447
1464
|
background_rgba = background.convert("RGBA")
|
|
@@ -1521,7 +1538,7 @@ class _GridDrawer:
|
|
|
1521
1538
|
min_lons[min_lons > 180] = min_lons[min_lons > 180] - 360
|
|
1522
1539
|
|
|
1523
1540
|
# Get min_lons not in maj_lons
|
|
1524
|
-
min_lons = np.
|
|
1541
|
+
min_lons = np.setdiff1d(min_lons, maj_lons)
|
|
1525
1542
|
|
|
1526
1543
|
# lats along major lon lines
|
|
1527
1544
|
lin_lats = np.arange(
|
|
@@ -1542,7 +1559,7 @@ class _GridDrawer:
|
|
|
1542
1559
|
min_lats = np.arange(round_lat_min + increase_min_lat, lat_max - shorten_max_lat, dlat)
|
|
1543
1560
|
|
|
1544
1561
|
# Get min_lats not in maj_lats
|
|
1545
|
-
min_lats = np.
|
|
1562
|
+
min_lats = np.setdiff1d(min_lats, maj_lats)
|
|
1546
1563
|
|
|
1547
1564
|
# lons along major lat lines (extended slightly to avoid missing the end)
|
|
1548
1565
|
lin_lons = np.linspace(lon_min, lon_max + Dlon / 5.0, max(self._x_size, self._y_size) // 5)
|
|
@@ -30,7 +30,7 @@ import shapefile
|
|
|
30
30
|
from PIL import Image, ImageFont
|
|
31
31
|
from pyproj import CRS
|
|
32
32
|
from pyresample.geometry import AreaDefinition
|
|
33
|
-
from
|
|
33
|
+
from pytest_lazy_fixtures import lf as lazy_fixture
|
|
34
34
|
|
|
35
35
|
LOCAL_DIR = os.path.dirname(__file__)
|
|
36
36
|
|
|
@@ -1900,6 +1900,7 @@ class TestFromConfig:
|
|
|
1900
1900
|
# Create the original cache file
|
|
1901
1901
|
img = cw.add_overlay_from_dict(overlays, area_def)
|
|
1902
1902
|
res = np.array(img)
|
|
1903
|
+
img.close()
|
|
1903
1904
|
cache_glob = glob(os.path.join(tmpdir, "pycoast_cache_*.png"))
|
|
1904
1905
|
assert len(cache_glob) == 1
|
|
1905
1906
|
cache_filename = cache_glob[0]
|
|
@@ -1910,22 +1911,26 @@ class TestFromConfig:
|
|
|
1910
1911
|
# Reuse the generated cache file
|
|
1911
1912
|
img = cw.add_overlay_from_dict(overlays, area_def)
|
|
1912
1913
|
res = np.array(img)
|
|
1914
|
+
img.close()
|
|
1913
1915
|
assert fft_metric(euro_data, res), "Writing of contours failed"
|
|
1914
1916
|
assert os.path.isfile(cache_filename)
|
|
1915
1917
|
assert os.path.getmtime(cache_filename) == mtime
|
|
1916
1918
|
|
|
1917
1919
|
# Regenerate cache file
|
|
1918
1920
|
current_time = time.time()
|
|
1919
|
-
cw.add_overlay_from_dict(overlays, area_def, current_time)
|
|
1921
|
+
fg_img = cw.add_overlay_from_dict(overlays, area_def, current_time)
|
|
1922
|
+
fg_img.close()
|
|
1920
1923
|
mtime = os.path.getmtime(cache_filename)
|
|
1921
1924
|
assert mtime > current_time
|
|
1922
1925
|
assert fft_metric(euro_data, res), "Writing of contours failed"
|
|
1923
1926
|
|
|
1924
|
-
cw.add_overlay_from_dict(overlays, area_def, current_time)
|
|
1927
|
+
fg_img = cw.add_overlay_from_dict(overlays, area_def, current_time)
|
|
1928
|
+
fg_img.close()
|
|
1925
1929
|
assert os.path.getmtime(cache_filename) == mtime
|
|
1926
1930
|
assert fft_metric(euro_data, res), "Writing of contours failed"
|
|
1927
1931
|
overlays["cache"]["regenerate"] = True
|
|
1928
|
-
cw.add_overlay_from_dict(overlays, area_def)
|
|
1932
|
+
fg_img = cw.add_overlay_from_dict(overlays, area_def)
|
|
1933
|
+
fg_img.close()
|
|
1929
1934
|
|
|
1930
1935
|
assert os.path.getmtime(cache_filename) != mtime
|
|
1931
1936
|
assert fft_metric(euro_data, res), "Writing of contours failed"
|
|
@@ -1943,7 +1948,8 @@ class TestFromConfig:
|
|
|
1943
1948
|
"lat_placement": "lr",
|
|
1944
1949
|
"lon_placement": "b",
|
|
1945
1950
|
}
|
|
1946
|
-
cw.add_overlay_from_dict(overlays, area_def)
|
|
1951
|
+
fg_img = cw.add_overlay_from_dict(overlays, area_def)
|
|
1952
|
+
fg_img.close()
|
|
1947
1953
|
os.remove(cache_filename)
|
|
1948
1954
|
|
|
1949
1955
|
def test_caching_with_param_changes(self, tmpdir):
|
|
@@ -1962,7 +1968,8 @@ class TestFromConfig:
|
|
|
1962
1968
|
}
|
|
1963
1969
|
|
|
1964
1970
|
# Create the original cache file
|
|
1965
|
-
cw.add_overlay_from_dict(overlays, area_def)
|
|
1971
|
+
fg_img = cw.add_overlay_from_dict(overlays, area_def)
|
|
1972
|
+
fg_img.close()
|
|
1966
1973
|
cache_glob = glob(os.path.join(tmpdir, "pycoast_cache_*.png"))
|
|
1967
1974
|
assert len(cache_glob) == 1
|
|
1968
1975
|
cache_filename = cache_glob[0]
|
|
@@ -1970,7 +1977,8 @@ class TestFromConfig:
|
|
|
1970
1977
|
mtime = os.path.getmtime(cache_filename)
|
|
1971
1978
|
|
|
1972
1979
|
# Reuse the generated cache file
|
|
1973
|
-
cw.add_overlay_from_dict(overlays, area_def)
|
|
1980
|
+
fg_img = cw.add_overlay_from_dict(overlays, area_def)
|
|
1981
|
+
fg_img.close()
|
|
1974
1982
|
cache_glob = glob(os.path.join(tmpdir, "pycoast_cache_*.png"))
|
|
1975
1983
|
assert len(cache_glob) == 1
|
|
1976
1984
|
assert os.path.isfile(cache_filename)
|
|
@@ -1979,7 +1987,8 @@ class TestFromConfig:
|
|
|
1979
1987
|
# Remove the font option, should produce the same result
|
|
1980
1988
|
# font is not considered when caching
|
|
1981
1989
|
del overlays["grid"]["font"]
|
|
1982
|
-
cw.add_overlay_from_dict(overlays, area_def)
|
|
1990
|
+
fg_img = cw.add_overlay_from_dict(overlays, area_def)
|
|
1991
|
+
fg_img.close()
|
|
1983
1992
|
cache_glob = glob(os.path.join(tmpdir, "pycoast_cache_*.png"))
|
|
1984
1993
|
assert len(cache_glob) == 1
|
|
1985
1994
|
assert os.path.isfile(cache_filename)
|
|
@@ -1990,7 +1999,8 @@ class TestFromConfig:
|
|
|
1990
1999
|
"cache": {"file": os.path.join(tmpdir, "pycoast_cache")},
|
|
1991
2000
|
"grid": {"width": 2.0},
|
|
1992
2001
|
}
|
|
1993
|
-
cw.add_overlay_from_dict(overlays, area_def)
|
|
2002
|
+
fg_img = cw.add_overlay_from_dict(overlays, area_def)
|
|
2003
|
+
fg_img.close()
|
|
1994
2004
|
cache_glob = glob(os.path.join(tmpdir, "pycoast_cache_*.png"))
|
|
1995
2005
|
assert len(cache_glob) == 2
|
|
1996
2006
|
assert os.path.isfile(cache_filename)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
# This file was generated by 'versioneer.py' (0.
|
|
2
|
+
# This file was generated by 'versioneer.py' (0.19) from
|
|
3
3
|
# revision-control system data, or from the parent directory name of an
|
|
4
4
|
# unpacked source archive. Distribution tarballs contain a pre-generated copy
|
|
5
5
|
# of this file.
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "
|
|
11
|
+
"date": "2024-07-01T10:44:04-0500",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.7.
|
|
14
|
+
"full-revisionid": "c526f4e2f3c1578b1c7ed95d3bfdfca49b31d1d9",
|
|
15
|
+
"version": "1.7.1"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycoast
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.1
|
|
4
4
|
Summary: Writing of coastlines, borders and rivers to images in Python
|
|
5
|
-
Home-page: UNKNOWN
|
|
6
5
|
Author: Esben S. Nielsen
|
|
7
6
|
Author-email: esn@dmi.dk
|
|
8
|
-
License: UNKNOWN
|
|
9
|
-
Platform: UNKNOWN
|
|
10
7
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
8
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
12
9
|
Classifier: Programming Language :: Python
|
|
@@ -14,10 +11,27 @@ Classifier: Operating System :: OS Independent
|
|
|
14
11
|
Classifier: Intended Audience :: Science/Research
|
|
15
12
|
Classifier: Topic :: Scientific/Engineering
|
|
16
13
|
Requires-Python: >3.9
|
|
17
|
-
Provides-Extra: docs
|
|
18
|
-
Provides-Extra: tests
|
|
19
14
|
License-File: LICENSE.txt
|
|
20
15
|
License-File: AUTHORS.md
|
|
16
|
+
Requires-Dist: aggdraw
|
|
17
|
+
Requires-Dist: pyshp
|
|
18
|
+
Requires-Dist: numpy
|
|
19
|
+
Requires-Dist: pyproj
|
|
20
|
+
Requires-Dist: pillow
|
|
21
|
+
Provides-Extra: docs
|
|
22
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
23
|
+
Requires-Dist: pyresample; extra == "docs"
|
|
24
|
+
Requires-Dist: pytest; extra == "docs"
|
|
25
|
+
Requires-Dist: pytest-lazy-fixtures; extra == "docs"
|
|
26
|
+
Requires-Dist: sphinx_rtd_theme; extra == "docs"
|
|
27
|
+
Requires-Dist: sphinxcontrib-apidoc; extra == "docs"
|
|
28
|
+
Provides-Extra: tests
|
|
29
|
+
Requires-Dist: pyresample; extra == "tests"
|
|
30
|
+
Requires-Dist: pytest; extra == "tests"
|
|
31
|
+
Requires-Dist: pytest-cov; extra == "tests"
|
|
32
|
+
Requires-Dist: coverage; extra == "tests"
|
|
33
|
+
Requires-Dist: coveralls; extra == "tests"
|
|
34
|
+
Requires-Dist: pytest-lazy-fixtures; extra == "tests"
|
|
21
35
|
|
|
22
36
|
PyCoast
|
|
23
37
|
=======
|
|
@@ -65,5 +79,3 @@ Example
|
|
|
65
79
|
>>> cw.add_rivers(img, area_def, level=5, outline='blue')
|
|
66
80
|
>>> cw.add_borders(img, area_def, outline=(255, 0, 0))
|
|
67
81
|
>>> img.show()
|
|
68
|
-
|
|
69
|
-
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
aggdraw
|
|
2
|
+
pyshp
|
|
2
3
|
numpy
|
|
3
|
-
pillow
|
|
4
4
|
pyproj
|
|
5
|
-
|
|
5
|
+
pillow
|
|
6
6
|
|
|
7
7
|
[docs]
|
|
8
|
+
sphinx
|
|
8
9
|
pyresample
|
|
9
10
|
pytest
|
|
10
|
-
pytest-lazy-
|
|
11
|
-
sphinx
|
|
11
|
+
pytest-lazy-fixtures
|
|
12
12
|
sphinx_rtd_theme
|
|
13
13
|
sphinxcontrib-apidoc
|
|
14
14
|
|
|
15
15
|
[tests]
|
|
16
|
-
coverage
|
|
17
|
-
coveralls
|
|
18
16
|
pyresample
|
|
19
17
|
pytest
|
|
20
18
|
pytest-cov
|
|
21
|
-
|
|
19
|
+
coverage
|
|
20
|
+
coveralls
|
|
21
|
+
pytest-lazy-fixtures
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
"""Setuptools-based packaging and installation configuration."""
|
|
18
18
|
|
|
19
|
-
from setuptools import setup
|
|
19
|
+
from setuptools import find_packages, setup
|
|
20
20
|
|
|
21
21
|
import versioneer
|
|
22
22
|
|
|
@@ -27,11 +27,11 @@ extras_require = {
|
|
|
27
27
|
"sphinx",
|
|
28
28
|
"pyresample",
|
|
29
29
|
"pytest",
|
|
30
|
-
"pytest-lazy-
|
|
30
|
+
"pytest-lazy-fixtures",
|
|
31
31
|
"sphinx_rtd_theme",
|
|
32
32
|
"sphinxcontrib-apidoc",
|
|
33
33
|
],
|
|
34
|
-
"tests": ["pyresample", "pytest", "pytest-cov", "coverage", "coveralls", "pytest-lazy-
|
|
34
|
+
"tests": ["pyresample", "pytest", "pytest-cov", "coverage", "coveralls", "pytest-lazy-fixtures"],
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
with open("README", "r") as readme_file:
|
|
@@ -45,7 +45,7 @@ setup(
|
|
|
45
45
|
long_description=long_description,
|
|
46
46
|
author="Esben S. Nielsen",
|
|
47
47
|
author_email="esn@dmi.dk",
|
|
48
|
-
packages=
|
|
48
|
+
packages=find_packages(),
|
|
49
49
|
include_package_data=True,
|
|
50
50
|
install_requires=requires,
|
|
51
51
|
extras_require=extras_require,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|