semvec/pypi-packages huggingface dataset:
engage-scraper 0.0.49
An agenda scraper framework for municipalities

# Engage Scraper

## Installation

`pip i engage-scraper`

## About

The Engage Scraper is a standalone library that can be included in any service. The purpose of the scraper is to catalog a municipality's council meeting agendas in a usable format for such things as the [engage-client](https://github.com/hackla-engage/engage-client) and [engage-backend](https://github.com/hackla-engage/engage-backend).

To extend this library for your municipality, override the methods of the base class from the `scraper_core/` directory and put it in `scraper_logics/`, prefacing it with your municipality name. For an example see the Santa Monica, CA example in the `scraper_logics/` directory. The Santa Monica example makes use of `htmlutils.py` because it requires HTML scraping for its sources. Feel free to make PRs with new utilities (for example, PDF scraping, RSS scraping, JSON parsing, etc.). The Santa Monica example also uses SQLAlchemy for its models and that is what is preferred for use in the `dbutils.py`, however you can use anything. ORMs are preferred rather than vanilla psycopg2 or the like.

To use the postgres `dbutils.py` make sure to set these 5 environment variables (check `dev.env` and see docker-compose usage below):

- `POSTGRES_HOST` _optional_ a host or hostname that is resolvable. Defaults to localhost
- `POSTGRES_USER` _required_
- `POSTGRES_PASSWORD` _required_
- `POSTGRES_PORT` _optional_ defaults to 5432
- `POSTGRES_DB` _required_ The database used for cataloging your municipality's agendas.

## An example of using the Santa Monica scraper library

```{python}
from engage_scraper.scraper_logics import santamonica_scraper_logic

scraper = santamonica_scraper_logic.SantaMonicaScraper(committee="Santa Monica City Council")
scraper.get_available_agendas()
scraper.scrape()
```

### For SantaMonicaScraper instantiation

#### For twitter utils used in SantaMonicaScraer

To use the santa monica logic, you must create an App on twitter (will work to make this optional). Following making an app, please use the structure `dev.env` file to insert the appropriate parameters. But make sure not to make changes to the repository's file. Copy the file up one directory and edit it there. Following the edit, use the `docker-compose.yml` for testing. You can add examples to `examples/` and run them from the script in `scripts/` using the docker container.

#### For the SantaMonicaScraper class the init has these options

- `tz_string="America/Los_Angeles"` # defaulted string
- `years=["2019"]` # defaulted array of strings of years
- `committee="Santa Monica City Council"` # defaulted string of council name

### The exposed API methods for scraper are

- `.get_available_agendas()` # To get available agendas, no arguments
- `.scrape()` # To process agendas and store contents

### Feel free to expose more

- Write wrappers for internal functions if you want to expose them
- Write extra functions to handle more complex municipality-specific tasks
cetus-cearcher 0.1.1
Client for the Cetus API
Requires Python: >=3.7,<4.0

# `Cetus Cearcher`

Unofficial CLI tool to query the Cetus API maintained by SparkIT Solutions.

## Installation

Clone the repo and use [Typer CLI](https://typer.tiangolo.com/typer-cli/) to run

or

`pip install cetus-cearcher`


Once installed, you'll need to create a file named `config.py` in the `cetus` directory and declare two variables:

|Variable |Value|
|---|---|
|api_url|API server including protocol ( i.e. `https://example.com` )|
|api_key|API key obtained from the portal|

## Usage

```console
$ cetus [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `example`: Show example result data
* `search`: Search Cetus

## `cetus example`

Show example result data

**Usage**:

```console
$ cetus example [OPTIONS] INDEX:[dns|certstream]
```

**Arguments**:

* `INDEX:[dns|certstream]`: [required]

**Options**:

* `--raw`: Print raw output instead of pretty printed  [default: False]
* `--help`: Show this message and exit.

## `cetus search`

Search Cetus

**Usage**:

```console
$ cetus search [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--help`: Show this message and exit.

**Commands**:

* `certstream`: Search the Cetus Certstream index
* `dns`: Search the Cetus DNS index

### `cetus search certstream`

Search the Cetus Certstream index

**Usage**:

```console
$ cetus search certstream [OPTIONS] QUERY
```

**Arguments**:

* `QUERY`: Lucene formatted query.  [required]

**Options**:

* `--start [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]`: Beginning of search range. Required.  [required]
* `--end [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]`: End of search range. If omitted, end == now  [default: 2021-06-10T17:11:20]
* `--raw`: Print raw output instead of pretty printed  [default: False]
* `--metadata`: Include metadata in output  [default: False]
* `--help`: Show this message and exit.

### `cetus search dns`

Search the Cetus DNS index

**Usage**:

```console
$ cetus search dns [OPTIONS] QUERY
```

**Arguments**:

* `QUERY`: Lucene formatted query.  [required]

**Options**:

* `--start [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]`: Beginning of search range. Required.  [required]
* `--end [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]`: End of search range. If omitted, end == now  [default: 2021-06-10T17:11:20]
* `--raw`: Print raw output instead of pretty printed  [default: False]
* `--metadata`: Include metadata in output  [default: False]
* `--help`: Show this message and exit.
proximity 0.3.0
Simple scenegraph for quickly debugging 3D meshes, polylines, and points

# proximity

[![version](https://img.shields.io/pypi/v/proximity?style=flat-square)][pypi]
[![python versions](https://img.shields.io/pypi/pyversions/proximity?style=flat-square)][pypi]
[![license](https://img.shields.io/pypi/l/proximity?style=flat-square)][pypi]
[![coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?style=flat-square)][coverage]
[![build](https://img.shields.io/circleci/project/github/lace/proximity/master?style=flat-square)][build]
[![code style](https://img.shields.io/badge/code%20style-black-black?style=flat-square)][black]

Mesh proximity queries based on [libspatialindex][] and [rtree][], extracted
from [Trimesh][].

[pypi]: https://pypi.org/project/proximity/
[coverage]: https://github.com/lace/proximity/blob/master/.coveragerc#L2
[build]: https://circleci.com/gh/lace/proximity/tree/master
[docs build]: https://proximity.readthedocs.io/en/latest/
[black]: https://black.readthedocs.io/en/stable/
[libspatialindex]: https://libspatialindex.org/
[rtree]: https://toblerity.org/rtree/
[trimesh]: https://trimsh.org/

## Contribute

- Issue Tracker: https://github.com/lace/proximity/issues
- Source Code: https://github.com/lace/proximity

Pull requests welcome!


## Support

If you are having issues, please let us know.


## Acknowledgements

This code was extracted from [Trimesh][] by [Michael Dawson-Haggerty][mikedh].

[mikedh]: https://github.com/mikedh


## License

The project is licensed under the MIT license.
Monadvect20 0.0.1
Monad module
Requires Python: >=3.1

Р‘РёР±Р»РёРѕС‚РµРєР° Monad РїСЂРµРґРЅР°Р·РЅР°С‡РµРЅР° РґР»СЏ СЂРµР°Р»РёР·Р°С†РёРё РѕСЃРЅРѕРІРЅС‹С… РјРѕРЅР°Рґ РІ Python, Р° РёРјРµРЅРЅРѕ:

РњРѕРЅР°РґР° Maybe, РєРѕС‚РѕСЂР°СЏ РІРѕР·РІСЂРѕС‰Р°РµС‚ Р·РЅР°С‡РµРЅРёРµ С‚РёРїР° MaybeX, РіРґРµ X - С‚РёРї Р·РЅР°С‡РµРЅРёСЏ (int,str,float), Р»РёР±Рѕ Р·РЅР°С‡РµРЅРёРµ Nothing.
РћР±СЂР°Р±РѕС‚РєР° Р·РЅР°С‡РµРЅРёР№ РїСЂРѕРёСЃС…РѕРґРёС‚ СЃ РїРѕРјРѕС‰СЊСЋ >> (bind):

MaybeInt(5) >> function #РІРѕР·РІРµРґРµРЅРёРµ РІ РєРІР°РґСЂР°С‚
>>> 25 # С‚РёРї Р·РЅР°С‡РµРЅРёСЏ - MaybeInt, РїСЂРё РЅРµРІРѕР·РјРѕР¶РЅРѕСЃС‚Рё РѕР±СЂР°Р±РѕС‚РєРё Р·РЅР°С‡РµРЅРёР№ --
>>> Nothing 

РњРѕРЅР°РґР° Either РїСЂРё РїСЂР°РІРёР»СЊРЅРѕР№ РѕР±СЂР°Р±РѕС‚РєРё Р·РЅР°С‡РµРЅРёР№ РІРѕР·РІСЂР°С‰Р°РµС‚ С‚РёРї EitherX, РїСЂРё РѕС€РёР±РєРµ - Left

EitehInt(5) >> function
>>> 25 # С‚РёРї EitherInt
>>> 5 # С‚РёРї Left (РїСЂРё РѕС€РёР±РєРµ)

РњРѕРЅР°РґР° Error РІРѕР·РІСЂР°С‰Р°РµС‚ С‚РёРї ErrorX РїСЂРё РѕС‚СЃСѓС‚СЃС‚РІРёРё РѕС€РёР±РєРё РёР»Рё (a, er), РіРґРµ a - Р·РЅР°С‡РµРЅРёРµ, Р° er - С‚РёРї РѕС€РёР±РєРё (С‚РёРї Failure)

ErrorInt(5) >> function
>>> 25 
>>> (5, TypeError) # С‚РёРї Failure

РњРѕРЅР°РґР° IO РІСЃРµРіРґР° РІРѕР·РІСЂР°С‰Р°РµС‚ Р·РЅР°С‡РµРЅРёРµ С‚РёРї str, Р»РёР±Рѕ РѕС€РёР±РєСѓ С‚РёРїР° IO_false

IO('5') >> fnStr # fnStr --> x + 'Test'
>>> '5Test'
>>> IO Monad Error: // С‚РёРї РѕС€РёР±РєРё // 

РњРѕРЅР°РґР° List РІРѕР·РІР°СЂР°С‰РµС‚ Р»РёР±Рѕ РїСѓСЃС‚РѕР№ MonadoList (РїСЂРё РѕС€РёР±РєРµ), Р»РёР±Рѕ СЃ РєР°РєРёРјРё-Р»РёР±Рѕ Р·РЅР°С‡РµРЅРёСЏРјРё

MonadoList([1,2,3]) >> function
>>> [1,4,9]
>>> [] # РїСЂРё РѕС€РёР±РєРµ

Р¤СѓРЅРєС†РёСЏ convectM РїСЂРµРѕР±СЂР°Р·СѓРµС‚ РѕР±С‹С‡РЅРѕРµ Р·РЅР°С‡РµРЅРёРµ РІ РЅСѓР¶РЅСѓСЋ РјРѕРЅР°РґСѓ

convectM(obj,pClass),РіРґРµ obj - Р·РЅР°С‡РµРЅРёРµ, pClass - РјРѕРЅР°РґРёС‡РµСЃРєРёР№ РєР»Р°СЃСЃ
convectM(5,MaybeInt)
>>> 5 # С‚РёРї - MaybeInt