semvec/pypi-packages huggingface dataset:
strict-interfaces 0.1.2
A new approach to interfaces in Python
Requires Python: >=3.7
Keywords: python strict interfaces implemetation pep

# Python Strict Interfaces


## Installation

```shell
pip install strict-interfaces
```


## Design Goals

* Be as strict as possible
* Fail on import time
* Do not mess with `object` and/or `type` inheritance
* Possibility to integrate in CPython Core
* Ability to use "out of the box" regardless support in an interpreter


## Features

* Special keyword `implements` on the class definition
* Multiple interface implementation
* Implicit interface implementation
* Interface inheritance with overloading being restricted
* Special `isimplementation` function similar to `issubclass`
* Partial `issubclass` support (see below)
* It's restricted to create an interface instance
* It's restricted to inherit from `object` and `interface` at the same time


## Usage

### Explicit implementation

```python
class TestInterface(interfaces.interface):
    def method(self, arg: typeT1) -> typeT2:
        pass

class TestClass(interfaces.object, implements=[TestInterface]):
    def method(self, arg: typeT1) -> typeT2:
        pass
```

### Raises when is not implemented 

```python
class TestInterface(interfaces.interface):
    def method(self, arg):
        pass

class TestClass(interfaces.object, implements=[TestInterface]):
    pass
```

### Implicit implementation and run-time check

```python
class TestInterfaceA(interfaces.interface):
    def method_a(arg: typeT1) -> typeT1:
        pass

class TestInterfaceB(interfaces.interface):
    def method_b(arg: typeT2) -> typeT2:
        pass

class TestClass:
    def method_a(arg: typeT1) -> typeT1:
        pass

    def method_b(arg: typeT2) -> typeT2:
        pass

assert interfaces.isimplementation(TestClass, (TestInterfaceA, TestInterfaceB))
```

### `isimplementation` checks whether all interfaces are implemented 

```python
class TestInterfaceA(interfaces.interface):
    def method_a(arg: typeT1) -> typeT1:
        pass

class TestInterfaceB(interfaces.interface):
    def method_b(arg: typeT2) -> typeT2:
        pass

class TestClass:
    def method_a(arg: typeT1) -> typeT1:
        pass

# NOTE: In this case `isimplementation` behaves different than `issubclass`
assert not interfaces.isimplementation(TestClass, (TestInterfaceA, TestInterfaceB))
assert issubclass(TestClass, (TestInterfaceA, TestInterfaceB))
```


## Contributing

Pull requests, feature requests, and bug reports are always welcome!

[github.com/lig/python-interfaces](https://github.com/lig/python-interfaces)
arcflash 0.1.3
Python support libraries for Arcflash flash ROM board for Acorn computers

# Arcflash

Arcflash is a flash ROM board for the Acorn Archimedes and Risc PC computers.

Project homepage: http://myelin.nz/arcflash

This is the Python support library, which lets you build your own flash
images, and program them into the memory on an Arcflash board connected over
USB.

## Usage
geolib 1.0.7
A library for geohash encoding, decoding and associated functions
Requires Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*

[![Build Status](https://travis-ci.org/joyanujoy/geolib.svg?branch=master)](https://travis-ci.org/joyanujoy/geolib) ![python 2.7|3.4|3.5|3.6|3.7](https://img.shields.io/badge/python-2.7|3.4|3.5|3.6|3.7-blue.svg)[![Downloads](https://pepy.tech/badge/geolib)](https://pepy.tech/project/geolib)

# Geolib
A python library for geohash encoding, decoding and finding neighbour cells. This is a python port of [Chris Veness' javascript implementation](https://www.movable-type.co.uk/scripts/geohash.html).

[Wikipedia reference](http://en.wikipedia.org/wiki/Geohash)
## Installation
```pipenv install geolib```
or
```pip install geolib```
## Usage

    from geolib import geohash
   ### Encode a latitude, longtiude to geohash
    geohash.encode(latitude, longitude, precision)
    >>> geohash.encode('70.2995', '-27.9993', 7)
    >>> gkkpfve

   ### Decode a geohash to latitude, longitude
    geohash.decode(geohash), returns latitude, longitude as tuple of decimals
    >>> geohash.decode('gkkpfve')
    >>> (70.2995, -27.9993)

   ### Find neighbouring cells of a geohash
    geohash.neighbours(geohash) 
    retuns a namedtuple (n, ne, e, se, s, sw, w, nw)    

    >>> neighbours = geohash.neighbours('gcpuyph')
    >>> neighbours
    >>> ('gcpuypk', 'gcpuypm', 'gcpuypj', 'gcpuynv', 'gcpuynu', 'gcpuyng', 'gcpuyp5', 'gcpuyp7')
    >>> neighbours.ne
    >>> gcpuypm

   ### Find adjacent cell in a given direction
    geohash.adjacent(geohash, direction)
    >>> geohash.adjacent('gcpuyph', 'n')
    >>> gcpuypk

   ### Find SW/NE latitude/longitude bounds of a geohash
    geohash.bounds(geohash)
    returns a namedtuple ((sw_lat, sw_lon), ((ne_lat, ne_lon))
    >>> bounds = geohash.bounds('ezs42')
    >>> bounds
    >>> ((42.583, -5.625), (42.627, -5.58)))
    >>> bounds.sw.lat 
    >>> 42.583

## Documentation
   [Geolib readthedocs](https://geolib.readthedocs.io/en/latest/)