semvec/pypi-packages huggingface dataset:
svgis 0.5.4
Create SVG drawings from vector geodata files (SHP, geoJSON, etc).
Keywords: svg, gis, geojson, shapefile, cartography, map, geodata

SVGIS
-----

Create SVG drawings from vector geodata files (SHP, geojson, etc).

SVGIS is great for: creating small multiples, combining lots of datasets in a sensible projection, and drawing styled based on classes in the source data. It's perfect for creating base maps for editing in a drawing program, and its CSS-based styling gives great flexibility for styling.

```
svgis draw input.shp -o out.svg
svgis draw south_dakota.shp north_dakota.geojson -o dakota.svg
svgis draw england.shp scotland.shp wales.shp --style gb.css -o great_britain.svg
````

Complete documentation, with more examples and explanation of classes and methods: https://svgis.readthedocs.io/en/stable/

## Install

Requires [fiona](http://pypi.python.org/pypi/fiona), which in turn requires GDAL.

See the [GDAL docs](https://gdal.org/download.html#binaries) for install info.

Then:
````
pip install svgis
````

An optional feature of svgis is clipping polygons to a bounding box. This will speed things up if you need to draw only part of a very complex feature.

````
pip install 'svgis[clip]'
````

## Commands

The `svgis` command line tool includes several utilities. The most important is `svgis draw`, which draws SVG maps based on input geodata layers.

Additional commands:
* `svgis bounds`: get the bounding box for a layer in a given projection
* `svgis graticule`: create a graticule (grid) within a given bounds
* `svgis project`: determine what projection `svgis draw` will (optionally) generate for given bounding box
* `svgis scale`: change the scale of an existing SVG
* `svgis style`: add css styles to an existing SVG

Read the [docs](https://svgis.readthedocs.io/en/stable/) for complete information on these commands and their options.

### Examples

Draw the outline of the contiguous United States, projected in Albers:
````
curl -O http://www2.census.gov/geo/tiger/GENZ2014/shp/cb_2014_us_nation_20m.zip
unzip cb_2014_us_nation_20m.zip
svgis draw cb_2014_us_nation_20m.shp --crs EPSG:5070 --scale 1000 --bounds -124 20.5 -64 49 -o us.svg
````

The next two examples use the [Natural Earth](http://naturalearthdata.com) admin-0 data set.

Draw upper income countries in green, low-income countries in blue:

````css
/* style.css */
.income_grp_5_Low_income {
    fill: blue;
}
.income_grp_3_Upper_middle_income {
    fill: green
}
.ne_110m_lakes {
    fill: #09d;
    stroke: none;
}
````
````
svgis draw --style style.css --class-fields income_grp ne_110m_admin_0_countries.shp ne_110m_lakes.shp -o out.svg
````

Draw national boundaries and lakes in Europe using the [LAEA Europe projection](https://epsg.io/3035), simplifying the output polygons, and coloring Germany in purple.

````bash
svgis draw ne_110m_admin_0_countries.shp ne_110m_lakes.shp \
    --crs EPSG:3035 \ 
    --scale 1000 \ 
    --simplify 90 \ 
    --style '.ne_110m_admin_0_countries { fill: tan } #Germany { fill: purple }' \
    --style '.ne_110m_lakes { fill: #09d; stroke: none; }' \ 
    --id-field name \ 
    --bounds -10 30 40 65 \ 
    -o out.svg
````
kohler-anthem 0.1.4
Python client library for Kohler Anthem Digital Shower API
Requires Python: >=3.9

# kohler-anthem

Python library for controlling Kohler Anthem digital showers.

> **DISCLAIMER**: This is an unofficial library developed independently for personal use. It is not affiliated with, endorsed by, or supported by Kohler Co. This library was reverse-engineered from the Kohler Konnect mobile app and may break at any time if Kohler modifies their APIs. The author provides no warranty, assumes no liability, and offers no support for this software. Use at your own risk. The author is not responsible for any damage to your devices, property, or any other consequences resulting from the use of this library.

## Installation

```bash
pip install kohler-anthem
```

## Quick Start

```python
import asyncio
from kohler_anthem import KohlerAnthemClient, KohlerConfig, Outlet

async def main():
    config = KohlerConfig(
        username="user@example.com",
        password="password",
        client_id="...",
        apim_subscription_key="...",
        api_resource="...",
    )

    async with KohlerAnthemClient(config) as client:
        # Discover devices
        customer = await client.get_customer("customer-id")
        device = customer.get_all_devices()[0]

        # Get state
        state = await client.get_device_state(device.device_id)
        print(f"Running: {state.is_running}")

        # Control
        await client.turn_on_outlet(device.device_id, Outlet.SHOWERHEAD, temperature_celsius=38.0)
        await client.turn_off(device.device_id)

asyncio.run(main())
```

## Configuration

| Parameter | Description |
|-----------|-------------|
| `username` | Kohler account email |
| `password` | Kohler account password |
| `client_id` | Azure AD B2C client ID |
| `apim_subscription_key` | Azure APIM subscription key |
| `api_resource` | Azure AD B2C API resource ID |

### Obtaining Credentials

The `client_id`, `api_resource`, and `apim_subscription_key` must be extracted from the Kohler Konnect mobile app. See [credential-extraction](https://github.com/yon/kohler-anthem/tree/main/credential-extraction) for automated tools and instructions.


## Development

```bash
make deps    # Install dependencies
make check   # Run lint, typecheck, tests
make help    # Show all targets
```

See [Makefile](Makefile) for all available targets.

## License

MIT