# mpf-monitor
__version__ = '0.3.0-dev.1'
__short_version__ = '0.3'
__bcp_version__ = '1.1'
__config_version__ = '4'
__mpf_version_required__ = '0.33.0'

version = "MPF Monitor v{} (config_version={}, BCP v{}, Requires MPF v{})".format(
    __version__, __config_version__, __bcp_version__, __mpf_version_required__)

# mpf-monitor
__version__ = '0.2.0-dev.3'
__short_version__ = '0.2'
__bcp_version__ = '1.1'
__config_version__ = '4'
__mpf_version_required__ = '0.33.0.dev15'

version = "MPF Monitor v{} (config_version={}, BCP v{}, Requires MPF v{})".format(
    __version__, __config_version__, __bcp_version__, __mpf_version_required__)

Revert "Bump dev version to 0.3.0-dev.1"

This reverts commit facc1caaca87e680321be0654882d6c5570bc2ad.


#!/usr/bin/env python

"""Convert a CSV table into a latex tabular using pandas."""
import argparse
import pandas as pd

def convert(filename, transpose=False):
    """convert csv to tex table."""
    df = pd.read_csv(filename)

    if transpose:
        df = df.transpose()
        tex_name = filename.replace(".csv", "_transpose.tex")
    else:
        tex_name = filename.replace(".csv", ".tex")
    with open(tex_name, "w") as f:
        f.write(r"\begin{table}")
        f.write("\n")
        f.write(r"\label{}")
        f.write("\n")
        f.write(r"\caption{}")
        f.write("\n")

        f.write(df.to_latex(na_rep="-"))
        f.write(r"\end{table}")
        f.write("\n")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Convert csv to latex tabular")
    parser.add_argument("filename", help="Name of csv file", type=str)
    parser.add_argument(
        "-t", "--transpose", help="Transpose table", action="store_true"
    )
    args = parser.parse_args()
    convert(args.filename, args.transpose)

#!/usr/bin/env python

"""Convert a CSV table into a latex tabular using pandas."""
import argparse
import pandas as pd

def convert(filename, transpose=False):
    """convert csv to tex table."""
    df = pd.read_csv(filename)

    if transpose:
        df = df.transpose()
        tex_name = filename.replace(".csv", "_transpose.tex")
        index = True
    else:
        tex_name = filename.replace(".csv", ".tex")
        index=False

    assert tex_name != filename, "This will overwrite the file, did you pass in a csv?"

    latex = df.to_latex(na_rep="-", index=index)

    with open(tex_name, "w") as f:
        f.write(r"\begin{table}")
        f.write("\n")
        f.write(r"\label{}")
        f.write("\n")
        f.write(r"\caption{}")
        f.write("\n")

        f.write(latex)
        f.write(r"\end{table}")
        f.write("\n")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Convert csv to latex tabular")
    parser.add_argument("filename", help="Name of csv file", type=str)
    parser.add_argument(
        "-t", "--transpose", help="Transpose table", action="store_true"
    )
    args = parser.parse_args()
    convert(args.filename, args.transpose)

Remove index and check filename

Remove index and check filename


import logging

from django.conf import settings
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt

from .models import Notification, Account

logger = logging.getLogger(__name__)

# Maybe use a form for this? :D

@csrf_exempt
def create_notification(request, slug):
    topic = request.GET.get('topic', None)
    resource_id = request.GET.get('id', None)

    if topic is None:
        return HttpResponse(
            '
400 Bad Request.
'
            'Missing parameter topic',
            status=400
        )
    if resource_id is None:
        return HttpResponse(
            '
400 Bad Request.
'
            'Missing parameter id',
            status=400
        )

    if topic == 'merchant_order':
        topic = Notification.TOPIC_ORDER
    elif topic == 'payment':
        topic = Notification.TOPIC_PAYMENT
    else:
        return HttpResponse('invalid topic', status=400)

    owner = Account.objects.get(slug=slug)
    notification, created = Notification.objects.get_or_create(
        topic=topic,
        resource_id=resource_id,
        owner=owner,
    )

    if not created:
        notification.processed = False
        notification.save()

    if not settings.MERCADOPAGO_ASYNC:
        notification.process()
    # TODO: Else add to some queue?

    return HttpResponse("
200 OK
", status=201)

import logging

from django.conf import settings
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt

from .models import Notification, Account

logger = logging.getLogger(__name__)

# Maybe use a form for this? :D

@csrf_exempt
def create_notification(request, slug):
    topic = request.GET.get('topic', None)
    resource_id = request.GET.get('id', None)

    if topic is None:
        return HttpResponse(
            '
400 Bad Request.
'
            'Missing parameter topic',
            status=400
        )
    if resource_id is None:
        return HttpResponse(
            '
400 Bad Request.
'
            'Missing parameter id',
            status=400
        )

    if topic == 'merchant_order':
        topic = Notification.TOPIC_ORDER
    elif topic == 'payment':
        topic = Notification.TOPIC_PAYMENT
    else:
        return HttpResponse('invalid topic', status=400)

    try:
        owner = Account.objects.get(slug=slug)
    except Account.DoesNotExist:
        return HttpResponse('Unknown account/slug', status=400)

    notification, created = Notification.objects.get_or_create(
        topic=topic,
        resource_id=resource_id,
        owner=owner,
    )

    if not created:
        notification.processed = False
        notification.save()

    if not settings.MERCADOPAGO_ASYNC:
        notification.process()
    # TODO: Else add to some queue?

    return HttpResponse("
200 OK
", status=201)

Return 400 for inexistant accounts

Return 400 for inexistant accounts


import sublime
import sublime_plugin
try:
    from GitGutter.view_collection import ViewCollection
except ImportError:
    from view_collection import ViewCollection

class GitGutterBaseChangeCommand(sublime_plugin.WindowCommand):
    def lines_to_blocks(self, lines):
        blocks = []
        last_line = -2
        for line in lines:
            if line > last_line+1:
                blocks.append(line)
            last_line = line
        return blocks

    def run(self):
        view = self.window.active_view()

        inserted, modified, deleted = ViewCollection.diff(view)
        inserted = self.lines_to_blocks(inserted)
        modified = self.lines_to_blocks(modified)
        all_changes = sorted(inserted + modified + deleted)

        row, col = view.rowcol(view.sel()[0].begin())

        current_row = row + 1

        line = self.jump(all_changes, current_row)

        self.window.active_view().run_command("goto_line", {"line": line})

class GitGutterNextChangeCommand(GitGutterBaseChangeCommand):
    def jump(self, all_changes, current_row):
        return next((change for change in all_changes
                        if change > current_row), current_row)

class GitGutterPrevChangeCommand(GitGutterBaseChangeCommand):
    def jump(self, all_changes, current_row):
        return next((change for change in reversed(all_changes)
                        if change < current_row), current_row)

import sublime
import sublime_plugin
try:
    from GitGutter.view_collection import ViewCollection
except ImportError:
    from view_collection import ViewCollection

class GitGutterBaseChangeCommand(sublime_plugin.WindowCommand):
    def lines_to_blocks(self, lines):
        blocks = []
        last_line = -2
        for line in lines:
            if line > last_line+1:
                blocks.append(line)
            last_line = line
        return blocks

    def run(self):
        view = self.window.active_view()

        inserted, modified, deleted = ViewCollection.diff(view)
        inserted = self.lines_to_blocks(inserted)
        modified = self.lines_to_blocks(modified)
        all_changes = sorted(inserted + modified + deleted)

        row, col = view.rowcol(view.sel()[0].begin())

        current_row = row + 1

        line = self.jump(all_changes, current_row)

        self.window.active_view().run_command("goto_line", {"line": line})

class GitGutterNextChangeCommand(GitGutterBaseChangeCommand):
    def jump(self, all_changes, current_row):
        return next((change for change in all_changes
                        if change > current_row), all_changes[0])

class GitGutterPrevChangeCommand(GitGutterBaseChangeCommand):
    def jump(self, all_changes, current_row):
        return next((change for change in reversed(all_changes)
                        if change < current_row), all_changes[-1])

Make jumping between changes loop back around


import unittest

import numpy

import chainer.functions as F
from chainer import testing

def make_data(dtype, shape):
    x = numpy.random.uniform(0.1, 5, shape).astype(dtype)
    gy = numpy.random.uniform(-1, 1, shape).astype(dtype)
    return x, gy

#
# sqrt

@testing.math_function_test(F.Sqrt(), make_data=make_data)
class TestSqrt(unittest.TestCase):
    pass

#
# rsqrt

def rsqrt(x, dtype=numpy.float32):
    return numpy.reciprocal(numpy.sqrt(x, dtype=dtype))

# TODO(takagi) Fix test of rsqrt not to use this decorator.
@testing.math_function_test(F.rsqrt, func_expected=rsqrt, make_data=make_data)
class TestRsqrt(unittest.TestCase):
    pass

testing.run_module(__name__, __file__)

import unittest

import numpy

import chainer.functions as F
from chainer import testing

#
# sqrt

def make_data(dtype, shape):
    x = numpy.random.uniform(0.1, 5, shape).astype(dtype)
    gy = numpy.random.uniform(-1, 1, shape).astype(dtype)
    return x, gy

@testing.math_function_test(F.Sqrt(), make_data=make_data)
class TestSqrt(unittest.TestCase):
    pass

#
# rsqrt

def rsqrt(x):
    return numpy.reciprocal(numpy.sqrt(x))

class TestRsqrt(unittest.TestCase):

    def test_rsqrt(self):
        x = numpy.random.uniform(0.1, 5, (3, 2)).astype(numpy.float32)
        testing.assert_allclose(F.rsqrt(x).data, rsqrt(x))

testing.run_module(__name__, __file__)

Simplify test of rsqrt function.

Simplify test of rsqrt function.


"""Test IAM Policy templates are valid JSON."""
import jinja2

from foremast.iam.construct_policy import render_policy_template
from foremast.utils.templates import LOCAL_TEMPLATES

def iam_templates():
    """Generate list of IAM templates."""
    jinjaenv = jinja2.Environment(loader=jinja2.FileSystemLoader([LOCAL_TEMPLATES]))

    iam_template_names = jinjaenv.list_templates(filter_func=lambda x: all([
        x.startswith('infrastructure/iam/'),
        'trust' not in x,
        'wrapper' not in x, ]))

    for iam_template_name in iam_template_names:
        yield iam_template_name

        items = ['resource1', 'resource2']

        if service == 'rds-db':
            items = {
                'resource1': 'user1',
                'resource2': 'user2',
            }

        rendered = render_policy_template(
            account_number='',
            app='coreforrest',
            env='dev',
            group='forrest',
            items=items,
            pipeline_settings={
                'lambda': {
                    'vpc_enabled': False,
                },
            },
            region='us-east-1',
            service=service)

        assert isinstance(rendered, list)

"""Test IAM Policy templates are valid JSON."""
import json

import jinja2
import pytest

from foremast.iam.construct_policy import render_policy_template
from foremast.utils.templates import LOCAL_TEMPLATES

def iam_templates():
    """Generate list of IAM templates."""
    jinjaenv = jinja2.Environment(loader=jinja2.FileSystemLoader([LOCAL_TEMPLATES]))

    iam_template_names = jinjaenv.list_templates(filter_func=lambda x: all([
        x.startswith('infrastructure/iam/'),
        'trust' not in x,
        'wrapper' not in x, ]))

    for iam_template_name in iam_template_names:
        yield iam_template_name

@pytest.mark.parametrize(argnames='template_name', argvalues=iam_templates())
def test_all_iam_templates(template_name):
    """Verify all IAM templates render as proper JSON."""
    *_, service_json = template_name.split('/')
    service, *_ = service_json.split('.')

    items = ['resource1', 'resource2']

    if service == 'rds-db':
        items = {
            'resource1': 'user1',
            'resource2': 'user2',
        }

    try:
        rendered = render_policy_template(
            account_number='',
            app='coreforrest',
            env='dev',
            group='forrest',
            items=items,
            pipeline_settings={
                'lambda': {
                    'vpc_enabled': False,
                },
            },
            region='us-east-1',
            service=service)
    except json.decoder.JSONDecodeError:
        pytest.fail('Bad template: {0}'.format(template_name), pytrace=False)

    assert isinstance(rendered, list)

test: Split IAM template tests with paramtrize

See also: #208


#!/usr/bin/env python

"""
Generate sample olfactory model stimulus.
"""

import numpy as np
import h5py

osn_num = 1375

dt = 1e-4 # time step
Ot = 2000 # number of data point during reset period
Rt = 1000 # number of data point during odor delivery period
Nt = 4*Ot + 3*Rt # number of data points in time
t  = np.arange(0, dt*Nt, dt)

I       = -1.*0.0195 # amplitude of odorant concentration
u_on    = I*np.ones(Ot, dtype=np.float64)
u_off   = np.zeros(Ot, dtype=np.float64)
u_reset = np.zeros(Rt, dtype=np.float64)
u       = np.concatenate((u_off, u_reset, u_on, u_reset, u_off, u_reset, u_on))
u_all   = np.transpose(np.kron(np.ones((osn_num, 1)), u))

with h5py.File('olfactory_input.h5', 'w') as f:
    f.create_dataset('real', (Nt, osn_num),
                     dtype=np.float64,
                     data=u_all)

#!/usr/bin/env python

"""
Generate sample olfactory model stimulus.
"""

import numpy as np
import h5py

osn_num = 1375

dt = 1e-4 # time step
Ot = 2000 # number of data point during reset period
Rt = 1000 # number of data point during odor delivery period
Nt = 4*Ot + 3*Rt # number of data points in time
t  = np.arange(0, dt*Nt, dt)

I       = 10.0 # amplitude of odorant concentration
u_on    = I*np.ones(Ot, dtype=np.float64)
u_off   = np.zeros(Ot, dtype=np.float64)
u_reset = np.zeros(Rt, dtype=np.float64)
u       = np.concatenate((u_off, u_reset, u_on, u_reset, u_off, u_reset, u_on))
u_all   = np.transpose(np.kron(np.ones((osn_num, 1)), u))

with h5py.File('olfactory_input.h5', 'w') as f:
    f.create_dataset('real', (Nt, osn_num),
                     dtype=np.float64,
                     data=u_all)

Tweak olfactory input stimulus to produce more interesting output.


"""Retain apiclient as an alias for googleapiclient."""

import googleapiclient

from googleapiclient import channel
from googleapiclient import discovery
from googleapiclient import errors
from googleapiclient import http
from googleapiclient import mimeparse
from googleapiclient import model
from googleapiclient import sample_tools
from googleapiclient import schema

__version__ = googleapiclient.__version__

"""Retain apiclient as an alias for googleapiclient."""

import googleapiclient

try:
  import oauth2client
except ImportError:
  raise RuntimeError(
      'Previous version of google-api-python-client detected; due to a '
      'packaging issue, we cannot perform an in-place upgrade. To repair, '
      'remove and reinstall this package, along with oauth2client and '
      'uritemplate. One can do this with pip via\n'
      '  pip install -I google-api-python-client'
  )

from googleapiclient import channel
from googleapiclient import discovery
from googleapiclient import errors
from googleapiclient import http
from googleapiclient import mimeparse
from googleapiclient import model
from googleapiclient import sample_tools
from googleapiclient import schema

__version__ = googleapiclient.__version__

Add another check for a failed googleapiclient upgrade.

This adds one more check for a failed 1.2 -> 1.3 upgrade, specifically in the
`apiclient` import (which was the only import available in 1.2). Even combined
with the check in setup.py, this won't catch everything, but it now covers all
the most common cases.


# Japanese Language Test - Python 3 Only!
from seleniumbase.translate.japanese import セレンテストケース  # noqa

class テストクラス(セレンテストケース):  # noqa

    def test_例1(self):
        self.URLを開く("https://ja.wikipedia.org/wiki/")
        self.テキストを確認する("ウィキペディア")
        self.要素を確認する('[title="メインページに移動する"]')
        self.テキストを更新("#searchInput", "アニメ")
        self.クリックして("#searchButton")
        self.テキストを確認する("アニメ", "#firstHeading")
        self.テキストを更新("#searchInput", "寿司")
        self.クリックして("#searchButton")
        self.テキストを確認する("寿司", "#firstHeading")
        self.要素を確認する('img[alt="握り寿司"]')

# Japanese Language Test - Python 3 Only!
from seleniumbase.translate.japanese import セレニウムテストケース  # noqa

class テストクラス(セレニウムテストケース):  # noqa

    def test_例1(self):
        self.URLを開く("https://ja.wikipedia.org/wiki/")
        self.テキストを確認する("ウィキペディア")
        self.要素を確認する('[title="メインページに移動する"]')
        self.テキストを更新("#searchInput", "アニメ")
        self.クリックして("#searchButton")
        self.テキストを確認する("アニメ", "#firstHeading")
        self.テキストを更新("#searchInput", "寿司")
        self.クリックして("#searchButton")
        self.テキストを確認する("寿司", "#firstHeading")
        self.要素を確認する('img[alt="握り寿司"]')

Update for fixing odd Japanese

Update for fixing odd Japanese

Selenium is "セレニウム" in Japanese. (Most people don't write Selenium in Japanese, by the way)


# -*- coding: utf-8 -*-

import logging
import sys

logger = logging.getLogger('dbmigrator')
logger.setLevel(logging.INFO)

handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter('[%(levelname)s] %(name)s (%(filename)s) - %(message)s'))
logger.addHandler(handler)

Add a logger for dbmigrator that writes to stdout

For example in a migration file
20160128111115_mimetype_removal_from_module_files.py:

```
from dbmigrator import logger

logger.info('message from migration')
```

You will see this when you run the migration:

```
[INFO] dbmigrator (20160128111115_mimetype_removal_from_module_files.py) - message from migration
```

Close #3


# Copyright (c) 2016 Unidata.
# Distributed under the terms of the MIT License.
# SPDX-License-Identifier: MIT
import warnings

from siphon.testing import get_recorder
from siphon.cdmr.coveragedataset import CoverageDataset

recorder = get_recorder(__file__)

# Ignore warnings about CoverageDataset
warnings.simplefilter('ignore')

@recorder.use_cassette('hrrr_cdmremotefeature')
def test_simple_cdmremotefeature():
    'Just a smoke test for CDMRemoteFeature'
    cd = CoverageDataset('http://localhost:8080/thredds/cdmrfeature/grid/'
                         'test/HRRR_CONUS_2p5km_20160309_1600.grib2')
    assert cd.grids

@recorder.use_cassette('hrrr_cdmremotefeature')
def test_simple_cdmremotefeature_str():
    'Just a smoke test for converting CoverageDataset to str'
    cd = CoverageDataset('http://localhost:8080/thredds/cdmrfeature/grid/'
                         'test/HRRR_CONUS_2p5km_20160309_1600.grib2')
    assert str(cd)

Add smoketest for convering CoverageDataset to str.


"""
Flask-MongoKit
--------------

Flask-MongoKit simplifies to use MongoKit, a powerful MongoDB ORM in Flask
applications.

Links
`````

* `documentation <http://packages.python.org/Flask-MongoKit>`_
* `development version <http://github.com/jarus/flask-mongokit/zipball/master#egg=Flask-MongoKit-dev>`_
* `MongoKit <http://namlook.github.com/mongokit/>`_
* `Flask <http://flask.pocoo.org>`_

"""
from setuptools import setup

setup(
    name='Flask-MongoKit',
    version='0.6',
    url='http://github.com/jarus/flask-mongokit',
    license='BSD',
    author='Christoph Heer',
    author_email='Christoph.Heer@googlemail.com',
    description='A Flask extension simplifies to use MongoKit',
    long_description=__doc__,
    py_modules=['flask_mongokit'],
    zip_safe=False,
    platforms='any',
    install_requires=[
        'Flask',
        'MongoKit'
    ],
    test_suite='tests.suite',
    classifiers=[
        'Development Status :: 4 - Beta',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
        'Topic :: Software Development :: Libraries :: Python Modules'
    ]
)

"""
Flask-MongoKit
--------------

Flask-MongoKit simplifies to use MongoKit, a powerful MongoDB ORM in Flask
applications.

Links
`````

* `documentation <http://packages.python.org/Flask-MongoKit>`_
* `development version <http://github.com/jarus/flask-mongokit/zipball/master#egg=Flask-MongoKit-dev>`_
* `MongoKit <http://namlook.github.com/mongokit/>`_
* `Flask <http://flask.pocoo.org>`_

"""
import sys
from setuptools import setup

install_requires = [
    "Flask",
    "MongoKit"
]

if sys.version_info < (2, 6):
    install_requires.append('simplejson')

setup(
    name='Flask-MongoKit',
    version='0.6',
    url='http://github.com/jarus/flask-mongokit',
    license='BSD',
    author='Christoph Heer',
    author_email='Christoph.Heer@googlemail.com',
    description='A Flask extension simplifies to use MongoKit',
    long_description=__doc__,
    py_modules=['flask_mongokit'],
    zip_safe=False,
    platforms='any',
    install_requires=install_requires,
    test_suite='tests.suite',
    classifiers=[
        'Development Status :: 4 - Beta',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
        'Topic :: Software Development :: Libraries :: Python Modules'
    ]
)

Add simplejson as requirement for python 2.5


from setuptools import setup, find_packages
setup(name='diaspy',
      version='0.1.0',
      author='Moritz Kiefer',
      author_email='moritz.kiefer@gmail.com',
      url='https://github.com/Javafant/diaspora-api',
      description='A python api to the social network diaspora',
      packages=find_packages(),
      install_requires=['requests']
      )

from setuptools import setup, find_packages
setup(name='diaspy',
      version='0.2.0',
      author='Moritz Kiefer',
      author_email='moritz.kiefer@gmail.com',
      url='https://github.com/Javafant/diaspora-api',
      description='A python api to the social network diaspora',
      packages=find_packages(),
      install_requires=['requests']
      )

Update to version 0.2.0 (according with semantic versioning)


import safe

def test_simple_exception():
    class MockReponse(object):
        def json(self):
            return {'status': False,
                    'method': 'synchronize',
                    'module': 'cluster',
                    'error': {'message': 'Example error'}}

    exception = safe.library.raise_from_json(MockReponse())
    assert str(exception) == 'Example error'

import safe

class MockResponse(object):
    def __init__(self, data):
        self.data = data

    def json(self):
        return self.data

def test_basic_exception():
    error_message = 'Example error'
    response = MockResponse({
        'status': False,
        'method': 'synchronize',
        'module': 'cluster',
        'error': {'message': error_message}
    })

    exception = safe.library.raise_from_json(response)
    assert str(exception) == error_message

def test_commit_failed_exception():
    error_message = 'Default ipv4 gateway is not on eth0 subnet'
    response = MockResponse({
        'status': False,
        'type': 'configuration',
        'method': 'smartapply',
        'module': 'nsc',
        'error': {
            'message': 'Apply configuration failed.',
            'reason': [{
                'url': '/SAFe/sng_network_config/modify/network',
                'obj_type': 'configuration',
                'type': 'ERROR',
                'description': error_message,
                'module': 'network'
            }]
        }
    })

    exception = safe.library.raise_from_json(response)
    assert isinstance(exception, safe.CommitFailed)
    assert str(exception) == 'Apply changes failed: ' + error_message
    assert len(exception.reasons) == 1

    reason = exception.reasons[0]
    assert reason.obj == 'configuration'
    assert reason.module == 'network'
    assert reason.description == error_message

Add a commit failed test

Add a commit failed test


from setuptools import setup

setup(
    name="pytest-cpp",
    version='0.4',
    packages=['pytest_cpp'],
    entry_points={
        'pytest11': ['cpp = pytest_cpp.plugin'],
    },
    install_requires=['pytest', 'colorama'],

    # metadata for upload to PyPI
    author="Bruno Oliveira",
    author_email="nicoddemus@gmail.com",
    description="Use pytest's runner to discover and execute C++ tests",
    long_description=open('README.rst').read(),
    license="MIT",
    keywords="pytest test unittest",
    url="http://github.com/pytest-dev/pytest-cpp",
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.4',
        'Programming Language :: Python :: 3.5',
        'Programming Language :: C++',
        'Topic :: Software Development :: Quality Assurance',
        'Topic :: Software Development :: Testing',
    ],
)

from setuptools import setup

setup(
    name="pytest-cpp",
    version='0.4',
    packages=['pytest_cpp'],
    entry_points={
        'pytest11': ['cpp = pytest_cpp.plugin'],
    },
    install_requires=['pytest', 'colorama'],

    # metadata for upload to PyPI
    author="Bruno Oliveira",
    author_email="nicoddemus@gmail.com",
    description="Use pytest's runner to discover and execute C++ tests",
    long_description=open('README.rst').read(),
    license="MIT",
    keywords="pytest test unittest",
    url="http://github.com/pytest-dev/pytest-cpp",
    classifiers=[
        'Development Status :: 4 - Beta',
        'Framework :: Pytest',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.4',
        'Programming Language :: Python :: 3.5',
        'Programming Language :: C++',
        'Topic :: Software Development :: Quality Assurance',
        'Topic :: Software Development :: Testing',
    ],
)

Add Framework::Pytest to list of classifiers


import os, io
from setuptools import setup, find_packages

long_description = (
    io.open('README.rst', encoding='utf-8').read()
    + '\n' +
    io.open('CHANGES.txt', encoding='utf-8').read())

setup(name='more.chameleon',
      version='0.3.dev0',
      description="Chameleon template integration for Morepath",
      long_description=long_description,
      author="Martijn Faassen",
      author_email="faassen@startifact.com",
      keywords='morepath chameleon',
      license="BSD",
      url="http://pypi.python.org/pypi/more.chameleon",
      namespace_packages=['more'],
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      install_requires=[
        'setuptools',
        'morepath >= 0.10',
        'chameleon >= 2.20'
        ],
      extras_require = dict(
        test=['pytest >= 2.6.0',
              'pytest-cov',
              'WebTest'],
        ),
      )

import io
from setuptools import setup, find_packages

long_description = '\n'.join((
    io.open('README.rst', encoding='utf-8').read(),
    io.open('CHANGES.txt', encoding='utf-8').read()
))

setup(name='more.chameleon',
      version='0.3.dev0',
      description="Chameleon template integration for Morepath",
      long_description=long_description,
      author="Martijn Faassen",
      author_email="faassen@startifact.com",
      keywords='morepath chameleon',
      license="BSD",
      url="http://pypi.python.org/pypi/more.chameleon",
      namespace_packages=['more'],
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      install_requires=[
        'setuptools',
        'morepath >= 0.10',
        'chameleon >= 2.20'
        ],
      extras_require=dict(
        test=['pytest >= 2.6.0',
              'pytest-cov',
              'WebTest'],
        ),
      )

Use io.open with encoding='utf-8' and flake8 compliance


from __future__ import absolute_import

import pygit2

from .base_git import NoSuchRemote
from .plain_git import PlainGit

class Pygit2Git(PlainGit):
    @staticmethod
    def is_on_branch(path):
        repo = pygit2.Repository(path)

        return not (repo.head_is_detached or repo.head_is_unborn)

    @staticmethod
    def get_remote_url(path, remote_name):
        repo = pygit2.Repository(path)

        for remote in repo.remotes:
            if remote.name == remote_name:
                break
        else:
            raise NoSuchRemote()

        return remote.url

    @staticmethod
    def add_remote(path, remote_name, remote_url):
        repo = pygit2.Repository(path)
        repo.create_remote(remote_name, remote_url)

Add add_remote to pygit2 implementation

Add add_remote to pygit2 implementation


from __future__ import absolute_import
from __future__ import print_function
from __future__ import division

def _previsit():
    pass

def _postvisit():
    pass

def _dfs_explore():
    pass

def check_dag():
    """Check Directed Acyclic Graph (DAG)."""
    pass

def main():
    # DAG.
    dag_adj_d = {
        'A': ['D'],
        'B': ['D'],
        'C': ['D'],
        'D': ['E', 'G'],
        'E': ['J'],
        'F': ['G'],
        'G': ['I'],
        'I': ['J'],
        'J': []
    }

if __name__ == '__main__':
    main()

from __future__ import absolute_import
from __future__ import print_function
from __future__ import division

def _previsit():
    pass

def _postvisit():
    pass

def _dfs_explore():
    pass

def check_dag():
    """Check Directed Acyclic Graph (DAG)."""
    pass

def main():
    # Graph adjacency dictionary for DAG.
    dag_adj_d = {
        'A': ['D'],
        'B': ['D'],
        'C': ['D'],
        'D': ['E', 'G'],
        'E': ['J'],
        'F': ['G'],
        'G': ['I'],
        'I': ['J'],
        'J': []
    }

    # Graph adjacency dictionary for non-DAG.
    nondag_adj_d = {
        'A': ['B'],
        'B': ['C', 'E'],
        'C': ['C', 'F'],
        'D': ['B', 'G'],
        'E': ['A', 'D'],
        'F': ['H'],
        'G': ['E'],
        'H': ['I'],
        'I': ['F']
    }

if __name__ == '__main__':
    main()

Add DAG & non-DAG adjacency dicts

Add DAG & non-DAG adjacency dicts


# pylint: disable=wildcard-import, missing-docstring, protected-access
# pylint: disable=attribute-defined-outside-init, invalid-name, no-self-use
# pylint: disable=wrong-import-order, unused-wildcard-import

from .utils import *
from contact_map.dask_runner import *

class TestDaskContactFrequency(object):
    def test_dask_integration(self):
        # this is an integration test to check that dask works
        dask = pytest.importorskip('dask')  # pylint: disable=W0612
        distributed = pytest.importorskip('dask.distributed')
        # Explicitly set only 4 workers on Travis instead of 31
        # Fix copied from https://github.com/spencerahill/aospy/pull/220/files
        cluster = distributed.LocalCluster(n_workers=4)
        client = distributed.Client(cluster)
        filename = find_testfile("trajectory.pdb")

        dask_freq = DaskContactFrequency(client, filename, cutoff=0.075,
                                         n_neighbors_ignored=0)
        client.close()
        assert dask_freq.n_frames == 5

# pylint: disable=wildcard-import, missing-docstring, protected-access
# pylint: disable=attribute-defined-outside-init, invalid-name, no-self-use
# pylint: disable=wrong-import-order, unused-wildcard-import

from .utils import *
from contact_map.dask_runner import *

def dask_setup_test_cluster(distributed, n_workers=4, n_attempts=3):
    """Set up a test cluster using dask.distributed. Try up to n_attempts
    times, and skip the test if all attempts fail.
    """
    cluster = None
    for _ in range(n_attempts):
        try:
            cluster = distributed.LocalCluster(n_workers=n_workers)
        except distributed.TimeoutError:
            continue
        else:
            return cluster
    # only get here if all retries fail
    pytest.skip("Failed to set up distributed LocalCluster")

class TestDaskContactFrequency(object):
    def test_dask_integration(self):
        # this is an integration test to check that dask works
        dask = pytest.importorskip('dask')  # pylint: disable=W0612
        distributed = pytest.importorskip('dask.distributed')
        # Explicitly set only 4 workers on Travis instead of 31
        # Fix copied from https://github.com/spencerahill/aospy/pull/220/files
        cluster = dask_setup_test_cluster(distributed)
        client = distributed.Client(cluster)
        filename = find_testfile("trajectory.pdb")

        dask_freq = DaskContactFrequency(client, filename, cutoff=0.075,
                                         n_neighbors_ignored=0)
        client.close()
        assert dask_freq.n_frames == 5

Handle dask TimeoutError exception in tests


from setuptools import setup

setup(name='covenant',
      version='0.1.0',
      description='Code contracts for Python 3',
      author='Kamil Kisiel',
      author_email='kamil@kamilkisiel.net',
      url='http://pypi.python.org/pypi/covenant',
      license="BSD License",
      packages=["covenant"],
      keywords="contract",
      platforms=["All"],
      install_requires=["decorator"],
      classifiers=['Development Status :: 3 - Alpha',
                   'Intended Audience :: Developers',
                   'License :: OSI Approved :: BSD License',
                   'Natural Language :: English',
                   'Operating System :: OS Independent',
                   'Programming Language :: Python :: 3',
                   'Topic :: Software Development :: Libraries',
                   'Topic :: Utilities'],
     )

from setuptools import setup

setup(name='covenant',
      version='0.1.0',
      description='Code contracts for Python 3',
      author='Kamil Kisiel',
      author_email='kamil@kamilkisiel.net',
      url='http://pypi.python.org/pypi/covenant',
      license="BSD License",
      packages=["covenant"],
      keywords="contract",
      platforms=["All"],
      install_requires=["decorator"],
      classifiers=['Development Status :: 3 - Alpha',
                   'Intended Audience :: Developers',
                   'License :: OSI Approved :: BSD License',
                   'Natural Language :: English',
                   'Operating System :: OS Independent',
                   'Programming Language :: Python :: 3',
                   'Programming Language :: Python :: 3.2',
                   'Topic :: Software Development :: Libraries',
                   'Topic :: Utilities'],
     )

Add Python 3.2 trove classifier

Add Python 3.2 trove classifier


from setuptools import setup

setup(
    name='icapservice',
    version='0.2.0',
    description='ICAP service library for Python',
    author='Giles Brown',
    author_email='giles_brown@hotmail.com',
    url='https://github.com/gilesbrown/icapservice',
    license='MIT',
    packages=['icapservice'],
    zip_safe=False,
    install_requires=['six', 'brotlipy'],
    include_package_data=True,
    package_data={'': ['LICENSE']},
    classifiers=(
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'Natural Language :: English',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python',
        'Programming Language :: Python :: 2.7',
        #'Programming Language :: Python :: 3',
        #'Programming Language :: Python :: 3.4',
        #'Programming Language :: Python :: 3.5',
    ),
)

from setuptools import setup

setup(
    name='icapservice',
    version='0.2.1',
    description='ICAP service library for Python',
    author='Giles Brown',
    author_email='giles_brown@hotmail.com',
    url='https://github.com/gilesbrown/icapservice',
    license='MIT',
    packages=['icapservice'],
    zip_safe=False,
    install_requires=['six', 'brotlipy'],
    include_package_data=True,
    package_data={'': ['LICENSE']},
    classifiers=(
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'Natural Language :: English',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python',
        'Programming Language :: Python :: 2.7',
        #'Programming Language :: Python :: 3',
        #'Programming Language :: Python :: 3.4',
        #'Programming Language :: Python :: 3.5',
    ),
)

Patch 0.2.1 to remove print

Patch 0.2.1 to remove print


import os

from setuptools import setup, find_packages

here = os.path.abspath(os.path.dirname(__file__))
README = open(os.path.join(here, 'README.txt')).read()

requires = [
        'requests',
    ]

setup(name='prism_rest_client',
      version='0.1',
      description='prism_rest_client',
      long_description=README,
      classifiers=[
        "Programming Language :: Python",
        "Topic :: Internet :: WWW/HTTP",
        ],
      author='Elliot Peele',
      author_email='elliot@bentlogic.net',
      url='https://github.com/elliotpeele/prism_rest_client',
      keywords='web rest client',
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      test_suite='prism_rest_client',
      install_requires=requires,
      )

import os

from setuptools import setup, find_packages

here = os.path.abspath(os.path.dirname(__file__))
README = open(os.path.join(here, 'README.txt')).read()

requires = [
        'requests',
    ]

setup(name='prism_rest_client',
      version='0.2',
      description='prism_rest_client',
      long_description=README,
      classifiers=[
        "Programming Language :: Python",
        "Topic :: Internet :: WWW/HTTP",
        ],
      author='Elliot Peele',
      author_email='elliot@bentlogic.net',
      url='https://github.com/elliotpeele/prism_rest_client',
      keywords='web rest client',
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      test_suite='prism_rest_client',
      install_requires=requires,
      )

Update version for next release 0.2

Update version for next release 0.2


from setuptools import setup

with open('README.md') as file:
    # Try my best to have at least the intro in Markdown/reST.
    long_description = file.read().partition('<!-- END long_description -->')[0]

setup(name='caniusepython3',
      version='1.0',
      description='Determine what projects are blocking you from porting to Python 3',
      long_description=long_description,
      author='Brett Cannon',
      author_email='brett@python.org',
      url='https://github.com/brettcannon/caniusepython3',
      py_modules=['caniusepython3'],
      setup_requires=['setuptools'],
      install_requires=['distlib', 'pip'],
      tests_require=['mock'],
      classifiers=[
          'Development Status :: 4 - Beta',
          'Environment :: Console',
          'Intended Audience :: Developers',
          'License :: OSI Approved :: Apache Software License',
          'Programming Language :: Python :: 3',
          'Programming Language :: Python :: 3.3',
      ],
      entry_points={
          'console_scripts': [
              'caniusepython3=caniusepython3:main',
          ]
      },
      zip_safe=True,
)

from setuptools import setup

with open('README.md') as file:
    # Try my best to have at least the intro in Markdown/reST.
    long_description = file.read().partition('<!-- END long_description -->')[0]

setup(name='caniusepython3',
      version='1.0',
      description='Determine what projects are blocking you from porting to Python 3',
      long_description=long_description,
      author='Brett Cannon',
      author_email='brett@python.org',
      url='https://github.com/brettcannon/caniusepython3',
      py_modules=['caniusepython3'],
      setup_requires=['setuptools'],
      install_requires=['distlib', 'pip'],
      tests_require=['mock'],
      classifiers=[
          'Development Status :: 4 - Beta',
          'Environment :: Console',
          'Intended Audience :: Developers',
          'License :: OSI Approved :: Apache Software License',
          'Programming Language :: Python :: 3',
          'Programming Language :: Python :: 3.2',
          'Programming Language :: Python :: 3.3',
      ],
      entry_points={
          'console_scripts': [
              'caniusepython3=caniusepython3:main',
          ]
      },
      zip_safe=True,
)

Set classifier for Python 3.2

Set classifier for Python 3.2

For #6


#!/usr/bin/env python
from setuptools import setup

setup(
    name='rinse',
    version='0.1.2',
    description='Python3 SOAP client built with lxml and requests.',
    long_description=open('README.rst').read(),
    author='Tyson Clugg',
    author_email='tyson@clugg.net',
    url='http://github.com/tysonclugg/rinse',
    license='MIT',
    packages=['rinse'],
    test_suite='rinse.tests',
    install_requires=[
        'defusedxml',
        'lxml',
        'requests',
    ],
    classifiers=[
        "Programming Language :: Python :: 3",
        "Development Status :: 3 - Alpha",
        "License :: OSI Approved :: MIT License",
    ],
)

#!/usr/bin/env python
from setuptools import setup

setup(
    name='rinse',
    version='0.1.2',
    description='Python3 SOAP client built with lxml and requests.',
    long_description=open('README.rst').read(),
    author='Tyson Clugg',
    author_email='tyson@clugg.net',
    url='http://github.com/tysonclugg/rinse',
    license='MIT',
    packages=['rinse'],
    test_suite='rinse.tests',
    install_requires=[
        'defusedxml',
        'lxml',
        'requests',
    ],
    classifiers=[
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 3",
        "Development Status :: 3 - Alpha",
        "License :: OSI Approved :: MIT License",
    ],
)

Add "Python 2" classifier since it works (according to Travis CI).


from setuptools import setup

def readme():
    with open('README.rst') as f:
        return f.read()

setup(name='housecanary',
      version='0.5',
      description='Client Wrapper for the HouseCanary API',
      long_description=readme(),
      url='http://github.com/housecanary/hc-api-python',
      author='HouseCanary',
      author_email='techops@housecanary.com',
      license='MIT',
      packages=['housecanary'],
      install_requires=['requests','docopt', 'openpyxl'],
      zip_safe=False,
      test_suite='nose.collector',
      tests_require=['nose', 'mock'],
      scripts=['bin/hc_api_export'])

from setuptools import setup

def readme():
    with open('README.rst') as f:
        return f.read()

setup(name='housecanary',
      version='0.5.1',
      description='Client Wrapper for the HouseCanary API',
      long_description=readme(),
      url='http://github.com/housecanary/hc-api-python',
      author='HouseCanary',
      author_email='techops@housecanary.com',
      license='MIT',
      packages=['housecanary', 'housecanary.excel'],
      install_requires=['requests','docopt', 'openpyxl'],
      zip_safe=False,
      test_suite='nose.collector',
      tests_require=['nose', 'mock'],
      scripts=['bin/hc_api_export'])

Add missing package name and bump version


from setuptools import find_packages, setup

version = '6.0.0'

install_requires = (
    'djangorestframework>=2.4.3,<3',
    'incuna_mail>=2.0.0,<3',
)

extras_require = {
    'avatar': [
        'django-imagekit>=3.2',
    ],
    'utils': [
        'raven>=5.1.1',
    ],
}

setup(
    name='django-user-management',
    packages=find_packages(),
    include_package_data=True,
    version=version,
    description='User management model mixins and api views.',
    long_description='',
    keywords='django rest framework user management api',
    author='Incuna',
    author_email='admin@incuna.com',
    url='https://github.com/incuna/django-user-management/',
    install_requires=install_requires,
    extras_require=extras_require,
    zip_safe=False,
    license='BSD',
    classifiers=[
        'Development Status :: 5 - Production/Stable',
        'Environment :: Web Environment',
        'Framework :: Django',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Topic :: Software Development',
        'Topic :: Utilities',
    ],
)

from setuptools import find_packages, setup

version = '6.0.0'

install_requires = (
    'djangorestframework>=2.4.4,<3',
    'incuna_mail>=2.0.0,<3',
)

extras_require = {
    'avatar': [
        'django-imagekit>=3.2',
    ],
    'utils': [
        'raven>=5.1.1',
    ],
}

setup(
    name='django-user-management',
    packages=find_packages(),
    include_package_data=True,
    version=version,
    description='User management model mixins and api views.',
    long_description='',
    keywords='django rest framework user management api',
    author='Incuna',
    author_email='admin@incuna.com',
    url='https://github.com/incuna/django-user-management/',
    install_requires=install_requires,
    extras_require=extras_require,
    zip_safe=False,
    license='BSD',
    classifiers=[
        'Development Status :: 5 - Production/Stable',
        'Environment :: Web Environment',
        'Framework :: Django',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Topic :: Software Development',
        'Topic :: Utilities',
    ],
)

Update `djangorestframework` from 2.4.3 to 2.4.4


#!/usr/bin/env python

import os
import sys

from setuptools import setup

readme = open('README.rst').read()
doclink = """
Documentation
-------------

The full documentation is at http://gryaml.rtfd.org."""
history = open('HISTORY.rst').read().replace('.. :changelog:', '')

setup(
    name='gryaml',
    use_scm_version=True,
    description='Represent Neo4j graph data as YAML.',
    long_description=readme + '\n\n' + doclink + '\n\n' + history,
    author='Wil Cooley',
    author_email='wcooley@nakedape.cc',
    url='https://github.com/wcooley/python-gryaml',
    packages=[
        'gryaml',
    ],
    package_dir={'gryaml': 'gryaml'},
    include_package_data=True,
    install_requires=[
        'py2neo>=2.0,<3',
        'pyyaml',
    ],
    setup_requires=['setuptools_scm'],
    license='MIT',
    zip_safe=False,
    keywords='gryaml',
    classifiers=[
        'Development Status :: 2 - Pre-Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: English',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: Implementation :: PyPy',
    ],
)

#!/usr/bin/env python
"""Setuptools setup."""

from setuptools import setup

readme = open('README.rst').read()
doclink = """
Documentation
-------------

The full documentation is at http://gryaml.rtfd.org."""
history = open('HISTORY.rst').read().replace('.. :changelog:', '')

setup(
    name='gryaml',
    use_scm_version=True,
    description='Represent Neo4j graph data as YAML.',
    long_description=readme + '\n\n' + doclink + '\n\n' + history,
    author='Wil Cooley',
    author_email='wcooley@nakedape.cc',
    url='https://github.com/wcooley/python-gryaml',
    packages=[
        'gryaml',
    ],
    package_dir={'gryaml': 'gryaml'},
    include_package_data=True,
    install_requires=[
        'boltons',
        'py2neo>=2.0,<3',
        'pyyaml',
    ],
    setup_requires=['setuptools_scm'],
    license='MIT',
    zip_safe=False,
    keywords='gryaml',
    classifiers=[
        'Development Status :: 2 - Pre-Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: English',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: Implementation :: PyPy',
    ],
)

Add missing 'boltons' package & clean up


"""
trafficserver_exporter
----------------------

An Apache Traffic Server metrics exporter for Prometheus.  Uses the
stats_over_http plugin to translate JSON data into Prometheus format.

"""

from setuptools import setup

setup(
    name='trafficserver_exporter',
    version='0.0.3',
    author='Greg Dallavalle',
    description='Traffic Server metrics exporter for Prometheus',
    long_description=__doc__,
    license='Apache Software License 2.0',
    keywords='prometheus monitoring trafficserver',
    test_suite='tests',
    packages=['trafficserver_exporter'],
    entry_points={
        'console_scripts': [
            'trafficserver_exporter=trafficserver_exporter.__main__:main'
        ],
    },
    install_requires=[
        'prometheus_client>=0.0.11',
        'requests>=2.0.0'
    ],
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.2',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Intended Audience :: Information Technology',
        'Intended Audience :: System Administrators',
        'Topic :: System :: Monitoring',
        'Topic :: System :: Networking :: Monitoring',
        'License :: OSI Approved :: Apache Software License',
    ],
)

"""
trafficserver_exporter
----------------------

An Apache Traffic Server metrics exporter for Prometheus.  Uses the
stats_over_http plugin to translate JSON data into Prometheus format.

"""

from setuptools import setup

setup(
    name='trafficserver_exporter',
    version='0.0.4',
    author='Greg Dallavalle',
    description='Traffic Server metrics exporter for Prometheus',
    long_description=__doc__,
    license='Apache Software License 2.0',
    keywords='prometheus monitoring trafficserver',
    test_suite='tests',
    packages=['trafficserver_exporter'],
    entry_points={
        'console_scripts': [
            'trafficserver_exporter=trafficserver_exporter.__main__:main'
        ],
    },
    install_requires=[
        'prometheus_client>=0.0.11',
        'requests>=2.0.0'
    ],
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.2',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Intended Audience :: Information Technology',
        'Intended Audience :: System Administrators',
        'Topic :: System :: Monitoring',
        'Topic :: System :: Networking :: Monitoring',
        'License :: OSI Approved :: Apache Software License',
    ],
)

Bump version: 0.0.3 → 0.0.4

Bump version: 0.0.3 → 0.0.4


import os, io
from setuptools import setup, find_packages

long_description = (
    io.open('README.rst', encoding='utf-8').read()
    + '\n' +
    io.open('CHANGES.txt', encoding='utf-8').read())

setup(name='more.jinja2',
      version='0.3.dev0',
      description="Jinja2 template integration for Morepath",
      long_description=long_description,
      author="Martijn Faassen",
      author_email="faassen@startifact.com",
      keywords='morepath jinja2',
      license="BSD",
      url="http://pypi.python.org/pypi/more.jinja2",
      namespace_packages=['more'],
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      install_requires=[
        'setuptools',
        'morepath >= 0.10',
        'Jinja2 >= 2.7.3'
        ],
      extras_require = dict(
        test=['pytest >= 2.6.0',
              'pytest-cov',
              'WebTest'],
        ),
      )

import io
from setuptools import setup, find_packages

long_description = '\n'.join((
    io.open('README.rst', encoding='utf-8').read(),
    io.open('CHANGES.txt', encoding='utf-8').read()
))

setup(name='more.jinja2',
      version='0.3.dev0',
      description="Jinja2 template integration for Morepath",
      long_description=long_description,
      author="Martijn Faassen",
      author_email="faassen@startifact.com",
      keywords='morepath jinja2',
      license="BSD",
      url="http://pypi.python.org/pypi/more.jinja2",
      namespace_packages=['more'],
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      install_requires=[
        'setuptools',
        'morepath >= 0.10',
        'Jinja2 >= 2.7.3'
        ],
      extras_require=dict(
        test=['pytest >= 2.6.0',
              'pytest-cov',
              'WebTest'],
        ),
      )


# -*- coding: utf-8 -

import os
import sys

from setuptools import setup

setup(
    name = 'bernhard',
    version = '0.0.3',

    description = 'Python client for Riemann',
    long_description = file(
        os.path.join(
            os.path.dirname(__file__),
            'README.md'
        )
    ).read(),
    author = 'Benjamin Anderspn',
    author_email = 'b@banjiewen.net',
    license = 'ASF2.0',
    url = 'http://github.com/banjiewen/bernhard.git',

    classifiers = [
        'Development Status :: 4 - Beta',
        'Environment :: Other Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: Apache Software License',
        'Operating System :: MacOS :: MacOS X',
        'Operating System :: POSIX',
        'Operating System :: Unix',
        'Programming Language :: Python',
        'Topic :: Internet :: Log Analysis',
        'Topic :: Utilities',
        'Topic :: System :: Networking :: Monitoring'
    ],
    zip_safe = False,
    packages = ['bernhard'],
    include_package_data = True,
    install_requires=['protobuf >= 2.4']
)

# -*- coding: utf-8 -

import os
import sys

from setuptools import setup

setup(
    name = 'bernhard',
    version = '0.0.4',

    description = 'Python client for Riemann',
    long_description = file(
        os.path.join(
            os.path.dirname(__file__),
            'README.md'
        )
    ).read(),
    author = 'Benjamin Anderspn',
    author_email = 'b@banjiewen.net',
    license = 'ASF2.0',
    url = 'http://github.com/banjiewen/bernhard.git',

    classifiers = [
        'Development Status :: 4 - Beta',
        'Environment :: Other Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: Apache Software License',
        'Operating System :: MacOS :: MacOS X',
        'Operating System :: POSIX',
        'Operating System :: Unix',
        'Programming Language :: Python',
        'Topic :: Internet :: Log Analysis',
        'Topic :: Utilities',
        'Topic :: System :: Networking :: Monitoring'
    ],
    zip_safe = False,
    packages = ['bernhard'],
    include_package_data = True,
    install_requires=['protobuf >= 2.4']
)

Bump version to account for protobuf file change


from setuptools import setup, find_packages

setup(name='django-forge',
      version=__import__('forge').__version__,
      author='Justin Bronn',
      author_email='jbronn@gmail.com',
      description='A Django implementation of the Puppet Forge web API.',
      url='https://github.com/jbronn/django-forge',
      download_url='http://pypi.python.org/pypi/django-forge/',
      install_requires=[
        'Django>=1.4',
        'requests>=2',
        'semantic_version>=2.1.2',
      ],
      packages=find_packages(),
      package_data={'apache': ['forge/apache'],
                    'templates': ['forge/templates']},
      include_package_data=True,
      zip_safe=False,
      classifiers=[
          'Development Status :: 4 - Beta',
          'Environment :: Web Environment',
          'Framework :: Django',
          'Intended Audience :: Developers',
          'Intended Audience :: System Administrators',
          'License :: OSI Approved :: Apache Software License',
      ],
)

from setuptools import setup, find_packages

setup(name='django-forge',
      version=__import__('forge').__version__,
      author='Justin Bronn',
      author_email='jbronn@gmail.com',
      description='A Django implementation of the Puppet Forge API.',
      url='https://github.com/jbronn/django-forge',
      download_url='http://pypi.python.org/pypi/django-forge/',
      install_requires=[
        'Django>=1.4',
        'requests>=2',
        'semantic_version>=2.1.2',
      ],
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      classifiers=[
          'Development Status :: 4 - Beta',
          'Environment :: Web Environment',
          'Framework :: Django',
          'Intended Audience :: Developers',
          'Intended Audience :: System Administrators',
          'License :: OSI Approved :: Apache Software License',
      ],
)

Simplify description and MANIFEST.in suits me fine.


#!/usr/bin/env python
from setuptools import find_packages, setup

setup(
    name='Flask-uWSGI-WebSocket',
    version='0.6.1',
    url='https://github.com/zeekay/flask_uwsgi_websocket',
    license='MIT',
    author='Zach Kelling',
    author_email='zk@monoid.io',
    description='High-performance WebSockets for your Flask apps powered by uWSGI.',
    long_description=open('README.rst').read(),
    py_modules=['flask_uwsgi_websocket'],
    zip_safe=False,
    include_package_data=True,
    packages=find_packages(),
    platforms='any',
    install_requires=[
        'Flask',
        'uwsgi',
    ],
    classifiers=[
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
        'Topic :: Software Development :: Libraries :: Python Modules'
    ],
    keywords='uwsgi flask websockets'
)

#!/usr/bin/env python
from setuptools import find_packages, setup

setup(
    name='Flask-uWSGI-WebSocket',
    version='0.6.1',
    url='https://github.com/zeekay/flask-uwsgi-websocket',
    license='MIT',
    author='Zach Kelling',
    author_email='zk@monoid.io',
    description='High-performance WebSockets for your Flask apps powered by uWSGI.',
    long_description=open('README.rst').read(),
    py_modules=['flask_uwsgi_websocket'],
    zip_safe=False,
    include_package_data=True,
    packages=find_packages(),
    platforms='any',
    install_requires=[
        'Flask',
        'uwsgi',
    ],
    classifiers=[
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
        'Topic :: Software Development :: Libraries :: Python Modules'
    ],
    keywords='uwsgi flask websockets'
)

Fix homepage url to point to the correct repo


from setuptools import setup

from rohrpost import __version__

def read(filepath):
    with open(filepath, "r", encoding="utf-8") as f:
        return f.read()

setup(
    name="rohrpost",
    version=__version__,
    description="rohrpost WebSocket protocol for ASGI",
    long_description=read("README.rst"),
    url="https://github.com/axsemantics/rohrpost",
    author="Tobias Kunze",
    author_email="tobias.kunze@ax-semantics.com",
    license="MIT",
    python_requires=">=3.5",
    install_requires=["channels>=2.0"],
    classifiers=[
        "Development Status :: 5 - Production/Stable",
        "Environment :: Web Environment",
        "Intended Audience :: Developers",
        "Operating System :: OS Independent",
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.5",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        "Topic :: Internet :: WWW/HTTP",
    ],
    packages=["rohrpost"],
    project_urls={
        "Documentation": "https://rohrpost.readthedocs.io/en/stable/",
        "Source": "https://github.com/axsemantics/rohrpost",
        "Tracker": "https://github.com/axsemantics/rohrpost/issues",
    },
)

from setuptools import setup

from rohrpost import __version__

def read(filepath):
    with open(filepath, "r", encoding="utf-8") as f:
        return f.read()

setup(
    name="rohrpost",
    version=__version__,
    description="rohrpost WebSocket protocol for ASGI",
    long_description=read("README.rst"),
    url="https://github.com/axsemantics/rohrpost",
    author="Tobias Kunze",
    author_email="tobias.kunze@ax-semantics.com",
    license="MIT",
    python_requires=">=3.5",
    install_requires=["channels>=2.0"],
    classifiers=[
        "Development Status :: 5 - Production/Stable",
        "Environment :: Web Environment",
        "Intended Audience :: Developers",
        "Operating System :: OS Independent",
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.5",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3 :: Only",
        "Topic :: Internet :: WWW/HTTP",
    ],
    packages=["rohrpost"],
    project_urls={
        "Documentation": "https://rohrpost.readthedocs.io/en/stable/",
        "Source": "https://github.com/axsemantics/rohrpost",
        "Tracker": "https://github.com/axsemantics/rohrpost/issues",
    },
)

Add 'Python :: 3 :: Only' classifier

Add 'Python :: 3 :: Only' classifier


import sys

from setuptools import find_packages, setup

with open('README.md') as fp:
    long_description = fp.read()

install_requires = [
    'six',
]
if sys.version_info[:2] < (2, 7):
    install_requires += [
        'argparse',
        'configparser',
    ]

setup(
    name='django-local-settings',
    version='1.0a4',
    author='Wyatt Baldwin',
    author_email='wyatt.baldwin@pdx.edu',
    url='https://github.com/PSU-OIT-ARC/django-local-settings',
    description='A system for dealing with local settings in Django projects',
    long_description=long_description,
    packages=find_packages(),
    install_requires=install_requires,
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Framework :: Django',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
    ],
    entry_points="""
    [console_scripts]
    make-local-settings = local_settings:make_local_settings

    """,
)

import sys

from setuptools import find_packages, setup

with open('README.md') as fp:
    long_description = fp.read()

install_requires = [
    'six',
]
if sys.version_info[:2] < (2, 7):
    install_requires += [
        'argparse',
        'configparser',
    ]

setup(
    name='django-local-settings',
    version='1.0a5',
    author='Wyatt Baldwin',
    author_email='wyatt.baldwin@pdx.edu',
    url='https://github.com/PSU-OIT-ARC/django-local-settings',
    description='A system for dealing with local settings in Django projects',
    long_description=long_description,
    packages=find_packages(),
    install_requires=install_requires,
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Framework :: Django',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
    ],
    entry_points="""
    [console_scripts]
    make-local-settings = local_settings:make_local_settings

    """,
)

Bump version for 5th 1.0 alpha

Bump version for 5th 1.0 alpha


# Always prefer setuptools over distutils
from setuptools import setup, find_packages
# To use a consistent encoding
from codecs import open
from os import path

here = path.abspath(path.dirname(__file__))

# Get the long description from the README file
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
    long_description = f.read()

setup(
    name='stmcli',
    version='1.0.4',
    description='The unofficial STM CLI client.',
    long_description=long_description,
    url='https://github.com/stmcli/stmcli',
    author='Pascal Boardman / Philippe Dagenais',
    author_email='pascalboardman@gmail.com',
    license='MIT',
    scripts=['bin/stmcli'],
    classifiers=[
        'Development Status :: 4 - Beta',
        'Intended Audience :: End Users/Desktop',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Programming Language :: Python :: 3.5',
    ],
    keywords='stm montreal autobus bus schedule horaire',
    packages=['stmcli'],
    install_requires=['peewee', 'unicodecsv', 'xmltodict'],
)

# Always prefer setuptools over distutils
from setuptools import setup, find_packages
# To use a consistent encoding
from codecs import open
from os import path

here = path.abspath(path.dirname(__file__))

# Get the long description from the README file
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
    long_description = f.read()

setup(
    name='stmcli',
    version='1.1.1',
    description='The unofficial STM CLI client.',
    long_description=long_description,
    url='https://github.com/stmcli/stmcli',
    author='Pascal Boardman / Philippe Dagenais',
    author_email='pascalboardman@gmail.com',
    license='MIT',
    scripts=['bin/stmcli'],
    classifiers=[
        'Development Status :: 4 - Beta',
        'Intended Audience :: End Users/Desktop',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Programming Language :: Python :: 3.5',
    ],
    keywords='stm montreal autobus bus schedule horaire',
    packages=['stmcli'],
    install_requires=['peewee', 'unicodecsv', 'xmltodict'],
)

Update version to like the main expected


from setuptools import setup, find_packages

setup(
    name='vumi-wikipedia',
    version='0.1a',
    description='Vumi Wikipedia App',
    packages=find_packages(),
    include_package_data=True,
    install_requires=[
        'vumi>=0.5',
        'unidecode',
    ],

    url='http://github.com/praekelt/vumi-wikipedia',
    license='BSD',
    long_description=open('README', 'r').read(),
    maintainer='Praekelt Foundation',
    maintainer_email='dev@praekelt.com',
    classifiers=[
        'Development Status :: 4 - Beta',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: POSIX',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Topic :: Software Development :: Libraries :: Python Modules',
        'Topic :: System :: Networking',
    ],
)

from setuptools import setup, find_packages

setup(
    name='vumi-wikipedia',
    version='0.1.0',
    description='Vumi Wikipedia App',
    packages=find_packages(),
    include_package_data=True,
    install_requires=[
        'vumi>=0.5',
        'unidecode',
    ],

    url='http://github.com/praekelt/vumi-wikipedia',
    license='BSD',
    long_description=open('README', 'r').read(),
    maintainer='Praekelt Foundation',
    maintainer_email='dev@praekelt.com',
    classifiers=[
        'Development Status :: 4 - Beta',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: POSIX',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Topic :: Software Development :: Libraries :: Python Modules',
        'Topic :: System :: Networking',
    ],
)

Set version for 0.1.0 release.

Set version for 0.1.0 release.


#!/usr/bin/env python

from setuptools import find_packages, setup

setup(
    name='eventlet',
    version='0.2',
    description='Coroutine-based networking library',
    author='Linden Lab',
    author_email='eventletdev@lists.secondlife.com',
    url='http://wiki.secondlife.com/wiki/Eventlet',
    packages=find_packages(),
    install_requires=['greenlet'],
    long_description="""
    Eventlet is a networking library written in Python. It achieves
    high scalability by using non-blocking io while at the same time
    retaining high programmer usability by using coroutines to make
    the non-blocking io operations appear blocking at the source code
    level.""",
    classifiers=[
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python",
    "Topic :: Internet",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Intended Audience :: Developers",
    "Development Status :: 4 - Beta"]
    )

#!/usr/bin/env python

from setuptools import find_packages, setup

setup(
    name='eventlet',
    version='0.5',
    description='Coroutine-based networking library',
    author='Linden Lab',
    author_email='eventletdev@lists.secondlife.com',
    url='http://wiki.secondlife.com/wiki/Eventlet',
    packages=find_packages(),
    install_requires=['greenlet'],
    long_description="""
    Eventlet is a networking library written in Python. It achieves
    high scalability by using non-blocking io while at the same time
    retaining high programmer usability by using coroutines to make
    the non-blocking io operations appear blocking at the source code
    level.""",
    classifiers=[
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python",
    "Topic :: Internet",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Intended Audience :: Developers",
    "Development Status :: 4 - Beta"]
    )

Update version number in prep for release


#!/usr/bin/env python

from setuptools import setup

def readreq(filename):
    result = []
    with open(filename) as f:
        for req in f:
            req = req.partition('#')[0].strip()
            if not req:
                continue
            result.append(req)
    return result

def readfile(filename):
    with open(filename) as f:
        return f.read()

setup(
    name='cli_tools',
    version='0.2.3',
    author='Kevin L. Mitchell',
    author_email='klmitch@mit.edu',
    url='https://github.com/klmitch/cli_utils',
    description="Command Line Interface Tools",
    long_description=readfile('README.rst'),
    classifiers=[
        'Development Status :: 4 - Beta',
        'Environment :: Console',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: GNU General Public License v3 or '
        'later (GPLv3+)',
        'Operating System :: OS Independent',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Topic :: Software Development :: User Interfaces',
    ],
    py_modules=['cli_tools'],
    requires=readreq('requirements.txt'),
    tests_require=readreq('test-requirements.txt'),
)

#!/usr/bin/env python

from setuptools import setup

def readreq(filename):
    result = []
    with open(filename) as f:
        for req in f:
            req = req.partition('#')[0].strip()
            if not req:
                continue
            result.append(req)
    return result

def readfile(filename):
    with open(filename) as f:
        return f.read()

setup(
    name='cli_tools',
    version='0.2.4',
    author='Kevin L. Mitchell',
    author_email='klmitch@mit.edu',
    url='https://github.com/klmitch/cli_utils',
    description="Command Line Interface Tools",
    long_description=readfile('README.rst'),
    classifiers=[
        'Development Status :: 4 - Beta',
        'Environment :: Console',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: GNU General Public License v3 or '
        'later (GPLv3+)',
        'Operating System :: OS Independent',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Topic :: Software Development :: User Interfaces',
    ],
    py_modules=['cli_tools'],
    requires=readreq('requirements.txt'),
    tests_require=readreq('test-requirements.txt'),
)

Bump version number for release.

Bump version number for release.


#!/usr/bin/python
# -*- coding: utf-8 -*-
from setuptools import setup

setup(
    name='pymisp',
    version='1.1.2',
    author='Raphaël Vinot',
    author_email='raphael.vinot@circl.lu',
    maintainer='Raphaël Vinot',
    url='https://github.com/MISP/PyMISP',
    description='Python API for MISP.',
    packages=['pymisp'],
    classifiers=[
        'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
        'Development Status :: 5 - Production/Stable',
        'Environment :: Console',
        'Intended Audience :: Science/Research',
        'Intended Audience :: Telecommunications Industry',
        'Programming Language :: Python',
        'Topic :: Security',
        'Topic :: Internet',
    ],
    install_requires=['requests'],
)

#!/usr/bin/python
# -*- coding: utf-8 -*-
from setuptools import setup

setup(
    name='pymisp',
    version='1.2',
    author='Raphaël Vinot',
    author_email='raphael.vinot@circl.lu',
    maintainer='Raphaël Vinot',
    url='https://github.com/MISP/PyMISP',
    description='Python API for MISP.',
    packages=['pymisp'],
    classifiers=[
        'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
        'Development Status :: 5 - Production/Stable',
        'Environment :: Console',
        'Intended Audience :: Science/Research',
        'Intended Audience :: Telecommunications Industry',
        'Programming Language :: Python',
        'Topic :: Security',
        'Topic :: Internet',
    ],
    install_requires=['requests'],
)

Increase flexibility of upload sample

Increase flexibility of upload sample


"""
Copyright (c) 2010-2013, Anthony Garcia <anthony@lagg.me>
Distributed under the ISC License (see LICENSE)
"""

from distutils.core import setup, Command
from distutils.errors import DistutilsOptionError
from unittest import TestLoader, TextTestRunner
import os
import steam

class run_tests(Command):
    description = "Run the steamodd unit tests"

    user_options = [
            ("key=", 'k', "Your API key")
            ]

    def initialize_options(self):
        self.key = None

    def finalize_options(self):
        if not self.key:
            raise DistutilsOptionError("API key is required")
        else:
            os.environ["STEAM_API_KEY"] = self.key

    def run(self):
        tests = TestLoader().discover("tests")
        TextTestRunner(verbosity = 2).run(tests)

setup(name = "steamodd",
      version = steam.__version__,
      description = "High level Steam API implementation with low level reusable core",
      packages = ["steam"],
      author = steam.__author__,
      author_email = steam.__contact__,
      url = "https://github.com/Lagg/steamodd",
      classifiers = [
          "License :: OSI Approved :: ISC License (ISCL)",
          "Intended Audience :: Developers",
          "Operating System :: OS Independent",
          "Programming Language :: Python"
          ],
      license = steam.__license__,
      cmdclass = {"run_tests": run_tests})

"""
Copyright (c) 2010-2013, Anthony Garcia <anthony@lagg.me>
Distributed under the ISC License (see LICENSE)
"""

from distutils.core import setup, Command
from distutils.errors import DistutilsOptionError
from unittest import TestLoader, TextTestRunner
import steam

class run_tests(Command):
    description = "Run the steamodd unit tests"

    user_options = [
            ("key=", 'k', "Your API key")
            ]

    def initialize_options(self):
        self.key = None

    def finalize_options(self):
        if not self.key:
            raise DistutilsOptionError("API key is required")
        else:
            steam.api.key.set(self.key)

    def run(self):
        tests = TestLoader().discover("tests")
        TextTestRunner(verbosity = 2).run(tests)

setup(name = "steamodd",
      version = steam.__version__,
      description = "High level Steam API implementation with low level reusable core",
      packages = ["steam"],
      author = steam.__author__,
      author_email = steam.__contact__,
      url = "https://github.com/Lagg/steamodd",
      classifiers = [
          "License :: OSI Approved :: ISC License (ISCL)",
          "Intended Audience :: Developers",
          "Operating System :: OS Independent",
          "Programming Language :: Python"
          ],
      license = steam.__license__,
      cmdclass = {"run_tests": run_tests})

Set API key directly in test runner

Set API key directly in test runner


#
#   Copyright 2013 Cisco Systems
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

from setuptools import setup, find_packages

setup(
    name='django-cloudslave',
    version='0.2.0',
    description='Create, use and destroy temporary slaves in the cloud',
    author='Soren Hansen',
    author_email='sorhanse@cisco.com',
    url='http://github.com/sorenh/python-django-cloudslave',
    packages=find_packages(),
    include_package_data=True,
    license='Apache 2.0',
    keywords='django openstack cloud',
    install_requires=[
        'django',
        'python-novaclient'
    ],
    test_suite='tests.main',
    classifiers=[
      'Development Status :: 2 - Pre-Alpha',
      'Environment :: Web Environment',
      'Framework :: Django',
      'Intended Audience :: Developers',
      'License :: OSI Approved :: Apache Software License',
      'Operating System :: POSIX :: Linux',
      'Programming Language :: Python',
      'Topic :: Software Development',
     ]
)

#
#   Copyright 2013 Cisco Systems
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

from setuptools import setup, find_packages

setup(
    name='django-cloudslave',
    version='0.2.0',
    description='Create, use and destroy temporary slaves in the cloud',
    author='Soren Hansen',
    author_email='sorhanse@cisco.com',
    url='http://github.com/sorenh/python-django-cloudslave',
    packages=find_packages(),
    include_package_data=True,
    license='Apache 2.0',
    keywords='django openstack cloud',
    install_requires=[
        'django',
        'python-novaclient',
        'south'
    ],
    test_suite='tests.main',
    classifiers=[
      'Development Status :: 2 - Pre-Alpha',
      'Environment :: Web Environment',
      'Framework :: Django',
      'Intended Audience :: Developers',
      'License :: OSI Approved :: Apache Software License',
      'Operating System :: POSIX :: Linux',
      'Programming Language :: Python',
      'Topic :: Software Development',
     ]
)

Add south as a dependency.

Add south as a dependency.


# -*- coding: utf-8 -*-

from distutils.core import setup
setup(
    name='nutshell',
    packages=['nutshell'],
    version='0.1.1',
    description='A minimal python library to access Nutshell CRM:s JSON-RPC API.',
    author=u'Emil Stenström',
    author_email='em@kth.se',
    url='https://github.com/EmilStenstrom/python-nutshell',
    download_url='https://github.com/EmilStenstrom/python-nutshell/tarball/0.1.1',
    keywords=['nutshell', 'nutshell-crm', 'json-rpc'],
    classifiers=[],
)

# -*- coding: utf-8 -*-

from distutils.core import setup
setup(
    name='nutshell',
    packages=['nutshell'],
    version='0.1.1',
    description='A minimal python library to access Nutshell CRM:s JSON-RPC API.',
    author=u'Emil Stenström',
    author_email='em@kth.se',
    url='https://github.com/EmilStenstrom/python-nutshell',
    download_url='https://github.com/EmilStenstrom/python-nutshell/tarball/0.1.1',
    install_requires=["requests"],
    keywords=['nutshell', 'nutshell-crm', 'json-rpc'],
    classifiers=[],
)

Add requests as installation dependency.


import os
from setuptools import setup, find_packages

def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

setup(
    name = 'django-helpline-faq',
    version = '1.1',
    description = 'A simple FAQ application for Django sites.',
    long_description = read('README.rst'),
    license = "BSD",

    author  ='Kevin Fricovsky',
    author_email = 'kfricovsky@gmail.com',
    url = 'http://django-fack.rtfd.org/',

    packages = find_packages(exclude=['example']),
    zip_safe = False,

    classifiers = [
        'Development Status :: 3 - Alpha',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Framework :: Django',
    ],

    install_requires = ['Django >= 1.3'],
    test_suite = "faq._testrunner.runtests",
    tests_require = ["mock"],
)

import os
from setuptools import setup, find_packages

def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

setup(
    name = 'django-helpline-faq',
    version = '1.1',
    description = 'A simple FAQ application for Django sites.',
    long_description = read('README.rst'),
    license = "BSD",

    author  ='Kevin Fricovsky',
    author_email = 'kfricovsky@gmail.com',
    url = 'http://django-fack.rtfd.org/',

    packages = find_packages(exclude=['example']),
    include_package_data=True,
    zip_safe = False,

    classifiers = [
        'Development Status :: 3 - Alpha',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Framework :: Django',
    ],

    install_requires = ['Django >= 1.3'],
    test_suite = "faq._testrunner.runtests",
    tests_require = ["mock"],
)

Include Package Data was missing.

Include Package Data was missing.


#!/usr/bin/env python

from setuptools import setup

setup(name='ftw',
      version='1.1.0',
      description='Framework for Testing WAFs',
      author='Chaim Sanders, Zack Allen',
      author_email='zma4580@gmail.com, chaim.sanders@gmail.com',
      url='https://www.github.com/fastly/ftw',
      download_url='https://github.com/fastly/ftw/tarball/1.1.0',
      entry_points = {
        'pytest11': [
            'ftw = ftw.pytest_plugin'
        ]
      },
      packages=['ftw'],
      keywords=['waf'],
      install_requires=[
          'IPy',
          'pytest==2.9.1',
          'PyYAML',
          'python-dateutil==2.6.0'
      ],
     )

#!/usr/bin/env python

from setuptools import setup

setup(name='ftw',
      version='1.2.0',
      description='Framework for Testing WAFs',
      author='Chaim Sanders, Zack Allen',
      author_email='zma4580@gmail.com, chaim.sanders@gmail.com',
      url='https://www.github.com/fastly/ftw',
      download_url='https://github.com/fastly/ftw/tarball/1.2.0',
      entry_points = {
        'pytest11': [
            'ftw = ftw.pytest_plugin'
        ]
      },
      packages=['ftw'],
      keywords=['waf'],
      install_requires=[
          'IPy',
          'pytest==2.9.1',
          'PyYAML',
          'python-dateutil==2.6.0'
      ],
     )

Bump version for API changes

Bump version for API changes


import os
from setuptools import setup

def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

setup(name='windpowerlib',
      version='0.1.2dev',
      description='Creating time series of wind power plants.',
      url='http://github.com/wind-python/windpowerlib',
      author='oemof developer group',
      author_email='windpowerlib@rl-institut.de',
      license=None,
      packages=['windpowerlib'],
      package_data={
          'windpowerlib': [os.path.join('data', '*.csv')]},
      long_description=read('README.rst'),
      zip_safe=False,
      install_requires=['pandas >= 0.19.1',
                        'requests'],
      extras_require={
          'dev': ['pytest', 'jupyter', 'sphinx_rtd_theme', 'nbformat']})

import os
from setuptools import setup

def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

setup(name='windpowerlib',
      version='0.1.2dev',
      description='Creating time series of wind power plants.',
      url='http://github.com/wind-python/windpowerlib',
      author='oemof developer group',
      author_email='windpowerlib@rl-institut.de',
      license=None,
      packages=['windpowerlib'],
      package_data={
          'windpowerlib': [os.path.join('data', '*.csv')]},
      long_description=read('README.rst'),
      zip_safe=False,
      install_requires=['pandas >= 0.19.1, < 0.25.0',
                        'requests'],
      extras_require={
          'dev': ['pytest', 'jupyter', 'sphinx_rtd_theme', 'nbformat']})

Add upper limit of pandas

Add upper limit of pandas


from setuptools import setup, find_packages
import sys, os

version = '0.1.0'

description = "CKAN extension for creating/distributing budget data packages"
with open('README.rst') as readme:
    long_description = readme.read()

setup(
    name='ckanext-budgets',
    version=version,
    description=description,
    long_description=long_description,
    classifiers=[
        'Development Status :: 4 - Beta',
        'Intended Audience :: Other Audience',
        'License :: OSI Approved :: GNU Affero General Public License v3',
        'Programming Language :: Python :: 2.7',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
    ],
    keywords='ckan',
    author='Tryggvi Bjorgvinsson',
    author_email='tryggvi.bjorgvinsson@okfn.org',
    url='https://github.com/tryggvib/ckanext-budgets',
    license='AGPLv3',
    packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
    namespace_packages=['ckanext', 'ckanext.budgets'],
    include_package_data=True,
    zip_safe=False,
    install_requires=[
        # -*- Extra requirements: -*-
        'unicodecsv',
	'requests',
	'six',
        'py-dateutil',
    ],
    entry_points='''
        [ckan.plugins]
        budgets=ckanext.budgets.plugin:BudgetDataPackagePlugin
    ''',
)

from setuptools import setup, find_packages
import sys, os

version = '0.1.1'

description = "CKAN extension for creating/distributing budget data packages"
with open('README.rst') as readme:
    long_description = readme.read()

setup(
    name='ckanext-budgets',
    version=version,
    description=description,
    long_description=long_description,
    classifiers=[
        'Development Status :: 4 - Beta',
        'Intended Audience :: Other Audience',
        'License :: OSI Approved :: GNU Affero General Public License v3',
        'Programming Language :: Python :: 2.7',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
    ],
    keywords='ckan',
    author='Tryggvi Bjorgvinsson',
    author_email='tryggvi.bjorgvinsson@okfn.org',
    url='https://github.com/tryggvib/ckanext-budgets',
    license='AGPLv3',
    packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
    namespace_packages=['ckanext', 'ckanext.budgets'],
    include_package_data=True,
    zip_safe=False,
    install_requires=[
        # -*- Extra requirements: -*-
        'unicodecsv',
	'requests',
	'six',
        'py-dateutil',
        'budgetdatapackage'
    ],
    entry_points='''
        [ckan.plugins]
        budgets=ckanext.budgets.plugin:BudgetDataPackagePlugin
    ''',
)

Update dependencies and bump patch version

budgetdatapackage was missing from the dependencies and has now
been added.


from setuptools import find_packages, setup

setup(
    name='ngx-task',
    version='0.1',
    description='Testimonial for candidates to show up their code-foo',
    author='Dmitry Shulyak',
    author_email='dmitri.shulyak@gmail.com',
    url='https://github.com/shudmi/ngx-task',
    classifiers=[
        'License :: Apache License 2.0',
        'Programming Language :: Python',
        'Programming Language :: Python 3',
        'Programming Language :: Python 3.4',
    ],
    packages=find_packages(exclude=['tests', 'tests.*']),
    install_requires=[],
    entry_points="""
        [console_scripts]
        ngx_generate=ngx_task.cli.generate_data
        ngx_process=ngx_task.cli.process_data
    """
)

from setuptools import find_packages, setup

setup(
    name='ngx-task',
    version='0.2',
    description='Testimonial for candidates to show up their code-foo',
    author='Dmitry Shulyak',
    author_email='dmitri.shulyak@gmail.com',
    url='https://github.com/shudmi/ngx-task',
    classifiers=[
        'License :: Apache License 2.0',
        'Programming Language :: Python',
        'Programming Language :: Python 3',
        'Programming Language :: Python 3.4',
    ],
    packages=find_packages(exclude=['tests', 'tests.*']),
    install_requires=[],
    tests_require=[
        "pytest==3.0.7",
    ],
    entry_points="""
        [console_scripts]
        ngx_generate=ngx_task.cli:generate_data
        ngx_process=ngx_task.cli:process_data
    """
)

Add tests requirements, fix console scripts definitions


from setuptools import setup

# "import" __version__
for line in open('nbsphinx.py'):
    if line.startswith('__version__'):
        exec(line)
        break

setup(
    name='nbsphinx',
    version=__version__,
    py_modules=['nbsphinx'],
    install_requires=[
        'docutils',
        'jinja2',
        'nbconvert',
        'traitlets',
        'nbformat',
        'sphinx>=1.3.2,!=1.5.0',
    ],
    author='Matthias Geier',
    author_email='Matthias.Geier@gmail.com',
    description='Jupyter Notebook Tools for Sphinx',
    long_description=open('README.rst').read(),
    license='MIT',
    keywords='Sphinx Jupyter notebook'.split(),
    url='http://nbsphinx.rtfd.io/',
    platforms='any',
    classifiers=[
        'Framework :: Sphinx',
        'Framework :: Sphinx :: Extension',
        'Framework :: Jupyter',
        'Intended Audience :: Education',
        'Intended Audience :: Science/Research',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Programming Language :: Python :: 3',
        'Topic :: Documentation :: Sphinx',
    ],
    zip_safe=True,
)

from setuptools import setup

# "import" __version__
for line in open('nbsphinx.py'):
    if line.startswith('__version__'):
        exec(line)
        break

setup(
    name='nbsphinx',
    version=__version__,
    py_modules=['nbsphinx'],
    install_requires=[
        'docutils',
        'jinja2',
        'nbconvert',
        'traitlets',
        'nbformat',
        'sphinx>=1.3.2,!=1.5.0',
    ],
    author='Matthias Geier',
    author_email='Matthias.Geier@gmail.com',
    description='Jupyter Notebook Tools for Sphinx',
    long_description=open('README.rst').read(),
    license='MIT',
    keywords='Sphinx Jupyter notebook'.split(),
    url='http://nbsphinx.readthedocs.io/',
    platforms='any',
    classifiers=[
        'Framework :: Sphinx',
        'Framework :: Sphinx :: Extension',
        'Framework :: Jupyter',
        'Intended Audience :: Education',
        'Intended Audience :: Science/Research',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Programming Language :: Python :: 3',
        'Topic :: Documentation :: Sphinx',
    ],
    zip_safe=True,
)

DOC: Change rtfd -> readthedocs in package description


import os
from setuptools import setup, find_packages

setup(name='morepath',
      version = '0.1dev',
      description="A micro web-framework with superpowers",
      author="Martijn Faassen",
      author_email="faassen@startifact.com",
      license="BSD",
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      install_requires=[
        'setuptools',
        'venusian',
        'reg',
        'werkzeug',
        ],
      extras_require = dict(
        test=['pytest >= 2.0',
              'pytest-cov'],
        ),
      )

import os
from setuptools import setup, find_packages

setup(name='morepath',
      version = '0.1dev',
      description="A micro web-framework with superpowers",
      author="Martijn Faassen",
      author_email="faassen@startifact.com",
      license="BSD",
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      install_requires=[
        'setuptools',
        'venusian >= 1.0a8',
        'reg',
        'werkzeug >= 0.9.4',
        ],
      extras_require = dict(
        test=['pytest >= 2.0',
              'pytest-cov'],
        ),
      )

Put in some version requirements.

Put in some version requirements.


from setuptools import setup
from distutils.core import Command
import os
import sys

class TestCommand(Command):
    description = "Run tests"
    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        import subprocess
        errno = subprocess.call(['nosetests', '--debug=DEBUG', '-s'])
        raise SystemExit(errno)

setup(
    name='mafan',
    version='0.2.7',
    author='Herman Schaaf',
    author_email='herman@ironzebra.com',
    packages=['mafan', 'mafan.hanzidentifier'],
    scripts=['bin/convert.py'],
    url='https://github.com/hermanschaaf/mafan',
    license='LICENSE.txt',
    description='A toolbox for working with the Chinese language in Python',
    long_description=open('docs/README.md').read(),
    cmdclass={
        'test': TestCommand,
    },
    install_requires=[
        "jieba == 0.29",
        "argparse == 1.1",
        "chardet == 2.1.1",
        "wsgiref == 0.1.2",
    ],
)

from setuptools import setup
from distutils.core import Command
import os
import sys

class TestCommand(Command):
    description = "Run tests"
    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        import subprocess
        errno = subprocess.call(['nosetests', '--debug=DEBUG', '-s'])
        raise SystemExit(errno)

setup(
    name='mafan',
    version='0.2.10',
    author='Herman Schaaf',
    author_email='herman@ironzebra.com',
    packages=[
        'mafan',
        'mafan.hanzidentifier',
        'mafan.third_party',
        'mafan.third_party.jianfan'
    ],
    scripts=['bin/convert.py'],
    url='https://github.com/hermanschaaf/mafan',
    license='LICENSE.txt',
    description='A toolbox for working with the Chinese language in Python',
    long_description=open('docs/README.md').read(),
    cmdclass={
        'test': TestCommand,
    },
    install_requires=[
        "jieba == 0.29",
        "argparse == 1.1",
        "chardet == 2.1.1",
        "wsgiref == 0.1.2",
    ],
)

Add jianfan to python package installation