semvec/pypi-packages huggingface dataset:
eno 0.0.17
eno test client
License: MIT

testing phone networks with GSM modules


### requirements
* one or more eno hardware nodes (Beaglebone Black + a Fona module)
* Python 2.7


### installation

```shell
$ pip install eno
```


### usage
A cluster of eno hardware nodes are setup
with network connectivity to a testing machine.
The testing machine uses `eno.nodes.Node` to control the connected nodes
and to read data from them.
The nodes themselves run the `eno.server.app`.
Other clients (like the testing machine) connect to this server
to give instructions to the hardware and to read data back.
The hardware uses [python-gsmmodem](https://github.com/faucamp/python-gsmmodem)
to communicate with the onboard GSM modem.

The testing machine should have an `~/.enorc` describing the test cluster:

```yaml
- name: node A
  ip_address: 192.168.1.102
  sim: endaga
- name: node B
  ip_address: 192.168.1.105
  sim: endaga
- name: node C
  ip_address: 192.168.1.107
  sim: ting
  phone_number: 19195551234
```

See additional examples in `server.py` and `sample_test.py`.


### testing concurrent calls
By default, when making a call, the test server
will make the modem hang up a few seconds after the call connects.
I experimented with a `/hangup` endpoint but that complicates things --
we would need signals and some WSGI runner
in order to have more than one server process.
So instead you can specify `hangup_after` as a request param,
this will hangup the call after the specified number of seconds.


### license
MIT


### releases
* 0.0.17 - adjusts return values in `server.call`
* 0.0.16 - fixes modem definition
* 0.0.15 - adds call functionality
* 0.0.14 - adds more request timeouts and `Node.get_info`
* 0.0.13 - adjusts handling of `Node.wait_for_activity`
* 0.0.12 - adds protocol in `Node.server_address`
* 0.0.11 - fixes port default
* 0.0.10 - allows tilde expansion when searching for enorc config file
* 0.0.9 - adds `Node.wait_for_activity` for sms
* 0.0.8 - adjusts handling of sms log in Node class
* 0.0.7 - changes sms log deletion method
* 0.0.6 - improves error handling and modem connection management
* 0.0.5 - adjusts package structure
* 0.0.4 - adds missing requests requirement
* 0.0.3 - adjusts server script filename
* 0.0.2 - adds SMS handling capabilities
* 0.0.1 - barebones setup for pypi


### release process
you need a `~/.pypirc` like this:

```
[distutils]
index-servers =
  pypi

[pypi]
repository: https://pypi.python.org/pypi
username: yosemitebandit
password: mhm
```

bump the versions in `setup.py` and here in the readme, then run:

```shell
$ git tag 0.0.1 -m 'eno-python v0.0.1'
$ git push origin master --tags
$ python setup.py sdist upload -r pypi
```
acky 0.2.3
A consistent API to AWS
License: MIT

%%%%%%%%%%%%
Acky Library
%%%%%%%%%%%%

.. image:: https://travis-ci.org/RetailMeNot/acky.svg?branch=master
   :target: https://travis-ci.org/RetailMeNot/acky
   :alt: Build Status

The Acky library provides a consistent interface to AWS. Based on botocore, it
abstracts some of the API work involved and allows the user to interact with AWS
APIs in a consistent way with minimal overhead.

Acky takes a different approach to the API from libraries like the venerable
`Boto <https://github.com/boto/boto>`. Rather than model AWS objects as Python
objects, Acky simply wraps the API to provide a more consistent interface. Most
objects in AWS are represented as collections in Acky, with get(), create(),
and destroy() methods. The get() method always accepts a filter map, no matter
if the underlying API method does.

In cases where the API's multitude of parameters would make for awkward method
calls (as is the case with EC2's RunInstances), Acky provides a utility class
whose attributes can be set before executing the API call.


%%%%%%%%%%
Using Acky
%%%%%%%%%%

Acky uses a botocore-style AWS credential configuration, the same as the
official AWS CLI. Before you use Acky, you'll need to `set up your config
<http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html>`.

Once your credentials are set up, using acky is as simple as creating an
instance of the AWS object::

    from acky.aws import AWS
    aws = AWS(region, profile)
    instances = aws.ec2.Instances.get(filters={'tag:Name': 'web-*'})
    print('Found {} web servers'.format(len(instances)))
    for instance in instances:
        print('  {}'.format(instance['PublicDnsName'])


%%%%%%%%%%%%%%%%
Module Structure
%%%%%%%%%%%%%%%%

The expected module structure for Acky follows. Many APIs are not yet
implemented, but those that are can be considered stable.

* AWS

  * username (property)
  * userinfo (property)
  * account_id (property)
  * environment (property)
  * ec2

    * regions
    * zones
    * ACEs
    * ACLs
    * ElasticIPs
    * Instances
    * IpPermissions
    * KeyPairs
    * PlacementGroups
    * SecurityGroups
    * Snapshots
    * Subnets
    * VPCs
    * Volumes

  * iam

    * Users
    * Groups
    * Keys

  * rds

    * engine_versions
    * Instances
    * Snapshots
    * EventSubscriptions
    * SecurityGroups
    * SecurityGroupRules

  * sqs

    * Queues
    * Messages

  * sts

    * GetFederationToken
    * GetSessionToken

Other services will be added in future versions.

%%%%%%%%%%%%%%%%%%
Installing acky
%%%%%%%%%%%%%%%%%%

acky is available in PyPI and is installable via pip::

    pip install acky

You may also install acky from source, perhaps from the GitHub repo::

    git clone https://github.com/RetailMeNot/acky.git
    cd acky
    python setup.py install