<commit_before># Copyright 2020 Google LLC
#
# 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.

"""Setuptools for Atheris."""

import os
import shutil
import subprocess
import sys
import tempfile

import setuptools
from setuptools import Extension
from setuptools import setup
from setuptools.command.build_ext import build_ext

__version__ = os.getenv("ATHERIS_VERSION", "1.0.7")

if len(sys.argv) > 1 and sys.argv[1] == "print_version":
  print(__version__)
  quit()

clang_install_instructions = """download and build the latest version of Clang:
    git clone https://github.com/llvm/llvm-project.git
    cd llvm-project
    mkdir build
    cd build
    cmake -DLLVM_ENABLE_PROJECTS='clang;compiler-rt' -G "Unix Makefiles" ../llvm
    make -j 100  # This step is very slow
Then, set $CLANG_BIN="$(pwd)/bin/clang" and run pip again.
You should use this same Clang for building any Python extensions you plan to fuzz.
"""

too_old_error = """Your libFuzzer version is too old; set either $CLANG_BIN to point to a more recent Clang, or $LIBFUZZER_VERSION to point directly to a more recent libFuzzer .a file. If needed, """ + clang_install_instructions

no_libfuzzer_error = """Failed to find libFuzzer; set either $CLANG_BIN to point to your Clang binary, or $LIBFUZZER_LIB to point directly to your libFuzzer .a file. If needed, """ + clang_install_instructions

if sys.platform == "darwin":
  too_old_error = ("Your libFuzzer version is too old.\nPlease" +
                   clang_install_instructions + "Do not use Apple "
                   "Clang; Apple Clang does not come with libFuzzer.")
  no_libfuzzer_error = ("Failed to find libFuzzer; you may be building using "
                        "Apple Clang. Apple Clang does not come with "
                        "libFuzzer.\nPlease " + clang_install_instructions)

class PybindIncludeGetter(object):
  """Helper class to determine the pybind11 include path.

    The purpose of this class is to postpone importing pybind11
    until it is actually installed, so that the ``get_include()``
    method can be invoked.
  """

  def __str__(self):
    import pybind11  # pylint: disable=g-import-not-at-top
    return pybind11.get_include()

def check_libfuzzer_version(libfuzzer):
  """Verifies that the specified libFuzzer is of a sufficiently high version."""
  current_path = os.path.dirname(os.path.realpath(__file__))
  try:
    version = subprocess.check_output(
        [current_path + "/setup_utils/check_libfuzzer_version.sh", libfuzzer])
  except subprocess.CalledProcessError as e:
    sys.stderr.write("Failed to check libFuzzer version: %s" % e.stderr)
    sys.stderr.write("Assuming libFuxzzer is up-to-date.")
    return "up-to-date"
  version = version.strip().decode("utf-8")
  return version

def upgrade_libfuzzer(libfuzzer):
  """Hacky code for upgrading libFuzzer to be compatible with Atheris."""
  current_path = os.path.dirname(os.path.realpath(__file__))
  try:
    new_libfuzzer = subprocess.check_output(
        [current_path + "/setup_utils/upgrade_libfuzzer.sh", libfuzzer])
  except subprocess.CalledProcessError as e:
    sys.stderr.write("libFuzzer upgrade failed: %s" % e.stderr)
    return libfuzzer
  new_libfuzzer = new_libfuzzer.strip().decode("utf-8")
  return new_libfuzzer

def get_libfuzzer_lib():
  """Returns path to the libFuzzer .a library."""
  libfuzzer_lib = os.getenv("LIBFUZZER_LIB", "")
  if libfuzzer_lib:
    return libfuzzer_lib
  current_path = os.path.dirname(os.path.realpath(__file__))
  try:
    libfuzzer = subprocess.check_output(
        [current_path + "/setup_utils/find_libfuzzer.sh"])
  except subprocess.CalledProcessError as e:
    sys.stderr.write(no_libfuzzer_error + "\n")
    raise RuntimeError(no_libfuzzer_error)
  libfuzzer = libfuzzer.strip().decode("utf-8")
  return libfuzzer

ext_modules = [
    Extension(
        "atheris",
        sorted([
            "atheris.cc",
            "libfuzzer.cc",
            "tracer.cc",
            "util.cc",
            "fuzzed_data_provider.cc",
        ]),
        include_dirs=[
            # Path to pybind11 headers
            PybindIncludeGetter(),
        ],
        language="c++"),
    Extension(
        "atheris_no_libfuzzer",
        sorted([
            "atheris.cc",
            "libfuzzer.cc",
            "tracer.cc",
            "util.cc",
            "fuzzed_data_provider.cc",
        ]),
        include_dirs=[
            # Path to pybind11 headers
            PybindIncludeGetter(),
        ],
        language="c++"),
]

# cf http://bugs.python.org/issue26689
def has_flag(compiler, flagname):
  """Return a boolean indicating whether a flag name."""

  with tempfile.NamedTemporaryFile("w", suffix=".cpp", delete=False) as f:
    f.write("int main (int argc, char **argv) { return 0; }")
    fname = f.name
  try:
    compiler.compile([fname], extra_postargs=[flagname])
  except setuptools.distutils.errors.CompileError:
    return False
  finally:
    try:
      os.remove(fname)
    except OSError:
      pass
  return True

def cpp_flag(compiler):
  """Return the highest-supported -std=c++[11/14/17] compiler flag."""
  if os.getenv("FORCE_MIN_VERSION"):
    # Use for testing, to make sure Atheris supports C++11
    flags = ["-std=c++11"]
  elif os.getenv("FORCE_VERSION"):
    flags = ["-std=c++" + os.getenv("FORCE_VERSION")]
  else:
    flags = [
      #"-std=c++17",  C++17 disabled unless explicitly requested, to work
      # around https://github.com/pybind/pybind11/issues/1818
      "-std=c++14",
      "-std=c++11"]

  for flag in flags:
    if has_flag(compiler, flag):
      return flag

  raise RuntimeError("Unsupported compiler -- at least C++11 support "
                     "is needed!")

class BuildExt(build_ext):
  """A custom build extension for adding compiler-specific options."""

  def build_extensions(self):
    libfuzzer = get_libfuzzer_lib()
    orig_libfuzzer = libfuzzer
    orig_libfuzzer_name = os.path.basename(libfuzzer)
    version = check_libfuzzer_version(libfuzzer)

    if sys.platform == "darwin" and version != "up-to-date":
      raise RuntimeError(too_old_error)

    if version == "outdated-unrecoverable":
      raise RuntimeError(too_old_error)

    elif version == "outdated-recoverable":
      sys.stderr.write("Your libFuzzer version is too old, but it's possible "
                       "to attempt an in-place upgrade. Trying that now.\n")
      libfuzzer = upgrade_libfuzzer(libfuzzer)
      if check_libfuzzer_version(libfuzzer) != "up-to-date":
        sys.stderr.write("Upgrade failed.")
        raise RuntimeError(too_old_error)
    elif version != "up-to-date":
      raise RuntimeError("Unexpected up-to-date status: " + version)

    sys.stderr.write("Your libFuzzer is up-to-date.\n")

    c_opts = []
    l_opts = []

    if sys.platform == "darwin":
      darwin_opts = ["-stdlib=libc++", "-mmacosx-version-min=10.7"]
      c_opts += darwin_opts
      l_opts += darwin_opts

    ct = self.compiler.compiler_type
    if ct == "unix":
      c_opts.append(cpp_flag(self.compiler))

    for ext in self.extensions:
      ext.define_macros = [("VERSION_INFO",
                            "'{}'".format(self.distribution.get_version())),
                           ("ATHERIS_MODULE_NAME", ext.name)]
      ext.extra_compile_args = c_opts
      if ext.name == "atheris_no_libfuzzer":
        ext.extra_link_args = l_opts
      else:
        ext.extra_link_args = l_opts + [libfuzzer]
    build_ext.build_extensions(self)

    try:
      self.deploy_file(libfuzzer, orig_libfuzzer_name)
    except Exception as e:
      sys.stderr.write(str(e))
      sys.stderr.write("\n")
      pass

    # Deploy versions of ASan and UBSan that have been merged with libFuzzer
    asan_name = orig_libfuzzer.replace(".fuzzer_no_main-", ".asan-")
    merged_asan_name = "asan_with_fuzzer.so"
    self.merge_deploy_libfuzzer_sanitizer(
        libfuzzer, asan_name, merged_asan_name,
        "asan_preinit.cc.o asan_preinit.cpp.o")

    ubsan_name = orig_libfuzzer.replace(".fuzzer_no_main-",
                                        ".ubsan_standalone-")
    merged_ubsan_name = "ubsan_with_fuzzer.so"
    self.merge_deploy_libfuzzer_sanitizer(
        libfuzzer, ubsan_name, merged_ubsan_name,
        "ubsan_init_standalone_preinit.cc.o ubsan_init_standalone_preinit.cpp.o"
    )

    ubsanxx_name = orig_libfuzzer.replace(".fuzzer_no_main-",
                                          ".ubsan_standalone_cxx-")
    merged_ubsanxx_name = "ubsan_cxx_with_fuzzer.so"
    self.merge_deploy_libfuzzer_sanitizer(
        libfuzzer, ubsanxx_name, merged_ubsanxx_name,
        "ubsan_init_standalone_preinit.cc.o ubsan_init_standalone_preinit.cpp.o"
    )

  def deploy_file(self, name, target_filename):
    atheris = self.get_ext_fullpath("atheris")
    dest_file = os.path.join(os.path.dirname(atheris), target_filename)

    shutil.copy(name, dest_file)

  def merge_libfuzzer_sanitizer(self, libfuzzer, sanitizer, strip_preinit):
    """Generate a .so that contains both libFuzzer and a sanitizer."""
    current_path = os.path.dirname(os.path.realpath(__file__))

    new_sanitizer = subprocess.check_output([
        os.path.join(current_path, "setup_utils/merge_libfuzzer_sanitizer.sh"),
        libfuzzer, sanitizer, strip_preinit
    ])

    return new_sanitizer.strip().decode("utf-8")

  def merge_deploy_libfuzzer_sanitizer(self, libfuzzer, lib_name,
                                       merged_lib_name, preinit):
    try:
      merged_lib = self.merge_libfuzzer_sanitizer(libfuzzer, lib_name, preinit)
      self.deploy_file(merged_lib, merged_lib_name)
    except Exception as e:
      sys.stderr.write(str(e))
      sys.stderr.write("\n")
      pass

setup(
    name="atheris",
    version=__version__,
    author="Bitshift",
    author_email="atheris@google.com",
    url="https://pypi.org/project/atheris/",
    description="A coverage-guided fuzzer for Python and Python extensions.",
    long_description=open("README.md", "r").read(),
    long_description_content_type="text/markdown",
    ext_modules=ext_modules,
    setup_requires=["pybind11>=2.5.0"],
    cmdclass={"build_ext": BuildExt},
    zip_safe=False,
)
<commit_msg>Bump to version 1.0.8<commit_after># Copyright 2020 Google LLC
#
# 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.

"""Setuptools for Atheris."""

import os
import shutil
import subprocess
import sys
import tempfile

import setuptools
from setuptools import Extension
from setuptools import setup
from setuptools.command.build_ext import build_ext

__version__ = os.getenv("ATHERIS_VERSION", "1.0.8")

if len(sys.argv) > 1 and sys.argv[1] == "print_version":
  print(__version__)
  quit()

clang_install_instructions = """download and build the latest version of Clang:
    git clone https://github.com/llvm/llvm-project.git
    cd llvm-project
    mkdir build
    cd build
    cmake -DLLVM_ENABLE_PROJECTS='clang;compiler-rt' -G "Unix Makefiles" ../llvm
    make -j 100  # This step is very slow
Then, set $CLANG_BIN="$(pwd)/bin/clang" and run pip again.
You should use this same Clang for building any Python extensions you plan to fuzz.
"""

too_old_error = """Your libFuzzer version is too old; set either $CLANG_BIN to point to a more recent Clang, or $LIBFUZZER_VERSION to point directly to a more recent libFuzzer .a file. If needed, """ + clang_install_instructions

no_libfuzzer_error = """Failed to find libFuzzer; set either $CLANG_BIN to point to your Clang binary, or $LIBFUZZER_LIB to point directly to your libFuzzer .a file. If needed, """ + clang_install_instructions

if sys.platform == "darwin":
  too_old_error = ("Your libFuzzer version is too old.\nPlease" +
                   clang_install_instructions + "Do not use Apple "
                   "Clang; Apple Clang does not come with libFuzzer.")
  no_libfuzzer_error = ("Failed to find libFuzzer; you may be building using "
                        "Apple Clang. Apple Clang does not come with "
                        "libFuzzer.\nPlease " + clang_install_instructions)

class PybindIncludeGetter(object):
  """Helper class to determine the pybind11 include path.

    The purpose of this class is to postpone importing pybind11
    until it is actually installed, so that the ``get_include()``
    method can be invoked.
  """

  def __str__(self):
    import pybind11  # pylint: disable=g-import-not-at-top
    return pybind11.get_include()

def check_libfuzzer_version(libfuzzer):
  """Verifies that the specified libFuzzer is of a sufficiently high version."""
  current_path = os.path.dirname(os.path.realpath(__file__))
  try:
    version = subprocess.check_output(
        [current_path + "/setup_utils/check_libfuzzer_version.sh", libfuzzer])
  except subprocess.CalledProcessError as e:
    sys.stderr.write("Failed to check libFuzzer version: %s" % e.stderr)
    sys.stderr.write("Assuming libFuxzzer is up-to-date.")
    return "up-to-date"
  version = version.strip().decode("utf-8")
  return version

def upgrade_libfuzzer(libfuzzer):
  """Hacky code for upgrading libFuzzer to be compatible with Atheris."""
  current_path = os.path.dirname(os.path.realpath(__file__))
  try:
    new_libfuzzer = subprocess.check_output(
        [current_path + "/setup_utils/upgrade_libfuzzer.sh", libfuzzer])
  except subprocess.CalledProcessError as e:
    sys.stderr.write("libFuzzer upgrade failed: %s" % e.stderr)
    return libfuzzer
  new_libfuzzer = new_libfuzzer.strip().decode("utf-8")
  return new_libfuzzer

def get_libfuzzer_lib():
  """Returns path to the libFuzzer .a library."""
  libfuzzer_lib = os.getenv("LIBFUZZER_LIB", "")
  if libfuzzer_lib:
    return libfuzzer_lib
  current_path = os.path.dirname(os.path.realpath(__file__))
  try:
    libfuzzer = subprocess.check_output(
        [current_path + "/setup_utils/find_libfuzzer.sh"])
  except subprocess.CalledProcessError as e:
    sys.stderr.write(no_libfuzzer_error + "\n")
    raise RuntimeError(no_libfuzzer_error)
  libfuzzer = libfuzzer.strip().decode("utf-8")
  return libfuzzer

ext_modules = [
    Extension(
        "atheris",
        sorted([
            "atheris.cc",
            "libfuzzer.cc",
            "tracer.cc",
            "util.cc",
            "fuzzed_data_provider.cc",
        ]),
        include_dirs=[
            # Path to pybind11 headers
            PybindIncludeGetter(),
        ],
        language="c++"),
    Extension(
        "atheris_no_libfuzzer",
        sorted([
            "atheris.cc",
            "libfuzzer.cc",
            "tracer.cc",
            "util.cc",
            "fuzzed_data_provider.cc",
        ]),
        include_dirs=[
            # Path to pybind11 headers
            PybindIncludeGetter(),
        ],
        language="c++"),
]

# cf http://bugs.python.org/issue26689
def has_flag(compiler, flagname):
  """Return a boolean indicating whether a flag name."""

  with tempfile.NamedTemporaryFile("w", suffix=".cpp", delete=False) as f:
    f.write("int main (int argc, char **argv) { return 0; }")
    fname = f.name
  try:
    compiler.compile([fname], extra_postargs=[flagname])
  except setuptools.distutils.errors.CompileError:
    return False
  finally:
    try:
      os.remove(fname)
    except OSError:
      pass
  return True

def cpp_flag(compiler):
  """Return the highest-supported -std=c++[11/14/17] compiler flag."""
  if os.getenv("FORCE_MIN_VERSION"):
    # Use for testing, to make sure Atheris supports C++11
    flags = ["-std=c++11"]
  elif os.getenv("FORCE_VERSION"):
    flags = ["-std=c++" + os.getenv("FORCE_VERSION")]
  else:
    flags = [
      #"-std=c++17",  C++17 disabled unless explicitly requested, to work
      # around https://github.com/pybind/pybind11/issues/1818
      "-std=c++14",
      "-std=c++11"]

  for flag in flags:
    if has_flag(compiler, flag):
      return flag

  raise RuntimeError("Unsupported compiler -- at least C++11 support "
                     "is needed!")

class BuildExt(build_ext):
  """A custom build extension for adding compiler-specific options."""

  def build_extensions(self):
    libfuzzer = get_libfuzzer_lib()
    orig_libfuzzer = libfuzzer
    orig_libfuzzer_name = os.path.basename(libfuzzer)
    version = check_libfuzzer_version(libfuzzer)

    if sys.platform == "darwin" and version != "up-to-date":
      raise RuntimeError(too_old_error)

    if version == "outdated-unrecoverable":
      raise RuntimeError(too_old_error)

    elif version == "outdated-recoverable":
      sys.stderr.write("Your libFuzzer version is too old, but it's possible "
                       "to attempt an in-place upgrade. Trying that now.\n")
      libfuzzer = upgrade_libfuzzer(libfuzzer)
      if check_libfuzzer_version(libfuzzer) != "up-to-date":
        sys.stderr.write("Upgrade failed.")
        raise RuntimeError(too_old_error)
    elif version != "up-to-date":
      raise RuntimeError("Unexpected up-to-date status: " + version)

    sys.stderr.write("Your libFuzzer is up-to-date.\n")

    c_opts = []
    l_opts = []

    if sys.platform == "darwin":
      darwin_opts = ["-stdlib=libc++", "-mmacosx-version-min=10.7"]
      c_opts += darwin_opts
      l_opts += darwin_opts

    ct = self.compiler.compiler_type
    if ct == "unix":
      c_opts.append(cpp_flag(self.compiler))

    for ext in self.extensions:
      ext.define_macros = [("VERSION_INFO",
                            "'{}'".format(self.distribution.get_version())),
                           ("ATHERIS_MODULE_NAME", ext.name)]
      ext.extra_compile_args = c_opts
      if ext.name == "atheris_no_libfuzzer":
        ext.extra_link_args = l_opts
      else:
        ext.extra_link_args = l_opts + [libfuzzer]
    build_ext.build_extensions(self)

    try:
      self.deploy_file(libfuzzer, orig_libfuzzer_name)
    except Exception as e:
      sys.stderr.write(str(e))
      sys.stderr.write("\n")
      pass

    # Deploy versions of ASan and UBSan that have been merged with libFuzzer
    asan_name = orig_libfuzzer.replace(".fuzzer_no_main-", ".asan-")
    merged_asan_name = "asan_with_fuzzer.so"
    self.merge_deploy_libfuzzer_sanitizer(
        libfuzzer, asan_name, merged_asan_name,
        "asan_preinit.cc.o asan_preinit.cpp.o")

    ubsan_name = orig_libfuzzer.replace(".fuzzer_no_main-",
                                        ".ubsan_standalone-")
    merged_ubsan_name = "ubsan_with_fuzzer.so"
    self.merge_deploy_libfuzzer_sanitizer(
        libfuzzer, ubsan_name, merged_ubsan_name,
        "ubsan_init_standalone_preinit.cc.o ubsan_init_standalone_preinit.cpp.o"
    )

    ubsanxx_name = orig_libfuzzer.replace(".fuzzer_no_main-",
                                          ".ubsan_standalone_cxx-")
    merged_ubsanxx_name = "ubsan_cxx_with_fuzzer.so"
    self.merge_deploy_libfuzzer_sanitizer(
        libfuzzer, ubsanxx_name, merged_ubsanxx_name,
        "ubsan_init_standalone_preinit.cc.o ubsan_init_standalone_preinit.cpp.o"
    )

  def deploy_file(self, name, target_filename):
    atheris = self.get_ext_fullpath("atheris")
    dest_file = os.path.join(os.path.dirname(atheris), target_filename)

    shutil.copy(name, dest_file)

  def merge_libfuzzer_sanitizer(self, libfuzzer, sanitizer, strip_preinit):
    """Generate a .so that contains both libFuzzer and a sanitizer."""
    current_path = os.path.dirname(os.path.realpath(__file__))

    new_sanitizer = subprocess.check_output([
        os.path.join(current_path, "setup_utils/merge_libfuzzer_sanitizer.sh"),
        libfuzzer, sanitizer, strip_preinit
    ])

    return new_sanitizer.strip().decode("utf-8")

  def merge_deploy_libfuzzer_sanitizer(self, libfuzzer, lib_name,
                                       merged_lib_name, preinit):
    try:
      merged_lib = self.merge_libfuzzer_sanitizer(libfuzzer, lib_name, preinit)
      self.deploy_file(merged_lib, merged_lib_name)
    except Exception as e:
      sys.stderr.write(str(e))
      sys.stderr.write("\n")
      pass

setup(
    name="atheris",
    version=__version__,
    author="Bitshift",
    author_email="atheris@google.com",
    url="https://pypi.org/project/atheris/",
    description="A coverage-guided fuzzer for Python and Python extensions.",
    long_description=open("README.md", "r").read(),
    long_description_content_type="text/markdown",
    ext_modules=ext_modules,
    setup_requires=["pybind11>=2.5.0"],
    cmdclass={"build_ext": BuildExt},
    zip_safe=False,
)
<|endoftext|>


<commit_before>"""
Cloud CLI for Humans
"""
from setuptools import find_packages, setup

dependencies = ['click', 'awscli', 'boto3', 'prettytable']

setup(
    name='cch',
    version='0.1.0',
    url='https://github.com/rushiagr/cch',
    license='BSD',
    author='Rushi Agrawal',
    author_email='rushi.agr@gmail.com',
    description='Cloud CLI for Humans',
    long_description=__doc__,
    packages=find_packages(exclude=['tests']),
    include_package_data=True,
    zip_safe=False,
    platforms='any',
    install_requires=dependencies,
    entry_points={
        'console_scripts': [
            'lsvm = cch.cli:lsvm',
            'mkvm = cch.cli:mkvm',
        ],
    },
    classifiers=[
        # As from http://pypi.python.org/pypi?%3Aaction=list_classifiers
        # 'Development Status :: 1 - Planning',
        # 'Development Status :: 2 - Pre-Alpha',
        # 'Development Status :: 3 - Alpha',
        'Development Status :: 4 - Beta',
        # 'Development Status :: 5 - Production/Stable',
        # 'Development Status :: 6 - Mature',
        # 'Development Status :: 7 - Inactive',
        'Environment :: Console',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: POSIX',
        'Operating System :: MacOS',
        'Operating System :: Unix',
        'Operating System :: Microsoft :: Windows',
        'Programming Language :: Python',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 3',
        'Topic :: Software Development :: Libraries :: Python Modules',
    ]
)
<commit_msg>Remove redundant awscli dependency<commit_after>"""
Cloud CLI for Humans
"""
from setuptools import find_packages, setup

dependencies = ['click', 'boto3', 'prettytable']

setup(
    name='cch',
    version='0.1.0',
    url='https://github.com/rushiagr/cch',
    license='BSD',
    author='Rushi Agrawal',
    author_email='rushi.agr@gmail.com',
    description='Cloud CLI for Humans',
    long_description=__doc__,
    packages=find_packages(exclude=['tests']),
    include_package_data=True,
    zip_safe=False,
    platforms='any',
    install_requires=dependencies,
    entry_points={
        'console_scripts': [
            'lsvm = cch.cli:lsvm',
            'mkvm = cch.cli:mkvm',
        ],
    },
    classifiers=[
        # As from http://pypi.python.org/pypi?%3Aaction=list_classifiers
        # 'Development Status :: 1 - Planning',
        # 'Development Status :: 2 - Pre-Alpha',
        # 'Development Status :: 3 - Alpha',
        'Development Status :: 4 - Beta',
        # 'Development Status :: 5 - Production/Stable',
        # 'Development Status :: 6 - Mature',
        # 'Development Status :: 7 - Inactive',
        'Environment :: Console',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: POSIX',
        'Operating System :: MacOS',
        'Operating System :: Unix',
        'Operating System :: Microsoft :: Windows',
        'Programming Language :: Python',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 3',
        'Topic :: Software Development :: Libraries :: Python Modules',
    ]
)
<|endoftext|>


<commit_before># coding=utf-8
import sys
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand

NAME = 'tolerance'
VERSION = '0.1.1'

def read(filename):
    import os
    BASE_DIR = os.path.dirname(__file__)
    filename = os.path.join(BASE_DIR, filename)
    fi = open(filename, 'r')
    return fi.read()

def readlist(filename):
    rows = read(filename).split("\n")
    rows = [x.strip() for x in rows if x.strip()]
    return list(rows)

setup_extras = {}
if sys.version_info > (3,):
    setup_extras['use_2to3'] = True

setup(
    name = NAME,
    version = VERSION,
    description = ('A function decorator which makes a function tolerant ('
                  'the function fail silently).'),
    long_description = read('README.rst'),
    classifiers = (
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python',
        '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',
    ),
    keywords = 'function decorator, decorator, fail silently',
    author = 'Alisue',
    author_email = 'lambdalisue@hashnote.net',
    url = 'https://github.com/lambdalisue/%s' % NAME,
    download_url = 'https://github.com/lambdalisue/%s/tarball/master' % NAME,
    license = 'MIT',
    packages = find_packages('src'),
    package_dir = {'': 'src'},
    include_package_data = True,
    package_data = {
        '': ['LICENSE',
             'README.rst',
             'TEST.rst',
             'requirements.txt',
             'requirements-test.txt',
             'requirements-docs.txt'],
    },
    zip_safe=True,
    install_requires=readlist('requirements.txt'),
    **setup_extras
)
<commit_msg>Bump version<commit_after># coding=utf-8
import sys
from setuptools import setup, find_packages

NAME = 'tolerance'
VERSION = '0.1.2'

def read(filename):
    import os
    BASE_DIR = os.path.dirname(__file__)
    filename = os.path.join(BASE_DIR, filename)
    fi = open(filename, 'r')
    return fi.read()

def readlist(filename):
    rows = read(filename).split("\n")
    rows = [x.strip() for x in rows if x.strip()]
    return list(rows)

setup_extras = {}
if sys.version_info > (3,):
    setup_extras['use_2to3'] = True

setup(
    name=NAME,
    version=VERSION,
    description=('A function decorator which makes a function tolerant ('
                 'the function fail silently).'),
    long_description = read('README.rst'),
    classifiers = (
        'Development Status :: 3 - Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python',
        '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',
    ),
    keywords = 'function decorator, decorator, fail silently',
    author = 'Alisue',
    author_email = 'lambdalisue@hashnote.net',
    url = 'https://github.com/lambdalisue/%s' % NAME,
    download_url = 'https://github.com/lambdalisue/%s/tarball/master' % NAME,
    license = 'MIT',
    packages = find_packages('src'),
    package_dir = {'': 'src'},
    include_package_data = True,
    package_data = {
        '': ['LICENSE',
             'README.rst',
             'TEST.rst',
             'requirements.txt',
             'requirements-test.txt',
             'requirements-docs.txt'],
    },
    zip_safe=True,
    install_requires=readlist('requirements.txt'),
    **setup_extras
)
<|endoftext|>


<commit_before>from setuptools import setup, find_packages
import os

import cmsplugin_dragoman

CLASSIFIERS = [
        'Development Status :: 5 - Production/Stable',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Framework :: Django',
]

setup(
    name='cmsplugin_dragoman',
    version=dragoman_blog.get_version(),
    description='This is a Django CMS plugin for django-dragoman-blog',
    long_description=open(os.path.join(os.path.dirname(__file__), 'README.rst')).read(),
    author='Oyvind Saltvik',
    author_email='oyvind.saltvik@gmail.com',
    url='http://github.com/fivethreeo/cmsplugin_dragoman/',
    packages=find_packages(),
    package_data={
        'cmsplugin_dragoman': [
            'static/cmsplugin_dragoman/*',
            'locale/*/LC_MESSAGES/*',
        ]
    },
    classifiers=CLASSIFIERS,
    include_package_data=True,
    zip_safe=False,
    install_requires=['django-dragoman-blog'],
)
<commit_msg>correct module<commit_after>from setuptools import setup, find_packages
import os

import cmsplugin_dragoman

CLASSIFIERS = [
        'Development Status :: 5 - Production/Stable',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: BSD License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Framework :: Django',
]

setup(
    name='cmsplugin_dragoman',
    version=cmsplugin_dragoman.get_version(),
    description='This is a Django CMS plugin for django-dragoman-blog',
    long_description=open(os.path.join(os.path.dirname(__file__), 'README.rst')).read(),
    author='Oyvind Saltvik',
    author_email='oyvind.saltvik@gmail.com',
    url='http://github.com/fivethreeo/cmsplugin_dragoman/',
    packages=find_packages(),
    package_data={
        'cmsplugin_dragoman': [
            'static/cmsplugin_dragoman/*',
            'locale/*/LC_MESSAGES/*',
        ]
    },
    classifiers=CLASSIFIERS,
    include_package_data=True,
    zip_safe=False,
    install_requires=['django-dragoman-blog'],
)
<|endoftext|>


<commit_before>#!/usr/bin/env python2
# coding=utf-8

from distutils.command.build_py import build_py as _build_py
import os
import versioneer

import sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), "src"))
import octoprint_setuptools
import setuptools

#-----------------------------------------------------------------------------------------------------------------------

# Supported python versions
# we test against 2.7, 3.6 and 3.7, so that's what we'll mark as supported
PYTHON_REQUIRES = ">=2.7.9, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4"

# Requirements for setup.py
SETUP_REQUIRES = [
	"markdown>=3.1,<3.2"         # newer versions require Python 3
]

# Requirements for our application
INSTALL_REQUIRES = [
	# additional OctoPrint plugins that are maintained on a different release cycle
	"OctoPrint-FirmwareCheck>=2020.06.22",
	"OctoPrint-FileCheck>=2020.07.06",

	# the following dependencies are non trivial to update since later versions introduce backwards incompatible
	# changes that might affect plugins, or due to other observed problems

	"markupsafe>=1.1,<2.0",      # Jinja dependency, newer versions require Python 3
	"tornado==5.1.1",            # newer versions require Python 3
	"markdown>=3.1,<3.2",        # newer versions require Python 3
	"rsa==4.0",                  # newer versions require Python 3
	"regex!=2018.11.6",          # avoid broken 2018.11.6. See #2874

	# anything below this should be checked on releases for new versions

	"flask>=1.1.2,<2",
	"Jinja2>=2.11.2,<3",
	"Flask-Login>=0.5,<0.6",     # flask-login doesn't use semver & breaks stuff on minor version increases
	"Flask-Babel>=1.0,<2",
	"Flask-Assets>=2.0,<3",
	"werkzeug>=1.0.1,<2",
	"cachelib>=0.1,<1",
	"PyYAML>=5.3.1,<6",
	"pyserial>=3.4,<4",
	"netaddr>=0.7.19,<1",
	"watchdog>=0.10.2,<1",
	"sarge==0.1.5post0",
	"netifaces>=0.10.9,<1",
	"pylru>=1.2,<2",
	"pkginfo>=1.5.0.1,<2",
	"requests>=2.23.0,<3",
	"semantic_version>=2.8.5,<3",
	"psutil>=5.7,<6",
	"Click>=7.1.2,<8",
	"feedparser>=5.2.1,<6",
	"future>=0.18.2,<1",
	"websocket-client>=0.57,<1",
	"wrapt>=1.12.1,<2",
	"emoji>=0.5.4,<1",
	"frozendict>=1.2,<2",
	"sentry-sdk>=0.15.1,<1",
	"filetype>=1.0.7,<2",

	# vendor bundle dependencies
	"unidecode>=0.04.14,<0.05",  # dependency of awesome-slugify
	"blinker>=1.4,<2"            # dependency of flask_principal
]

# Python 2 specific requirements
INSTALL_REQUIRES_PYTHON2 = [
	"futures>=3.3,<4",
	"monotonic>=1.5,<2",
	"scandir>=1.10,<2",
	"chainmap>=1.0.3,<2",
	"typing>=3.7.4.1,<4"
]

# OSX specific requirements
INSTALL_REQUIRES_OSX = [
	"appdirs>=1.4.4",
]

# Additional requirements for optional install options
EXTRA_REQUIRES = dict(
	# Dependencies for developing OctoPrint
	develop=[
		# Testing dependencies - SEE ALSO tox.ini
		"mock>=3.0.5,<4",
		"pytest==4.6.10",
		"pytest-doctest-custom>=1.0.0,<2",
		"ddt",

		# linter
		"flake8",

		# profiler
		"pyinstrument",
	],

	# Dependencies for developing OctoPrint plugins
	plugins=[
		"cookiecutter>=1.7.2,<1.8"
	],

	# Dependencies for building the documentation - Python 3 required!
	docs=[
		"sphinx>=3,<4",
		"sphinxcontrib-httpdomain",
		"sphinxcontrib-mermaid",
		"sphinx_rtd_theme",
		"readthedocs-sphinx-ext"
	],
)

# Dependency links for any of the aforementioned dependencies
DEPENDENCY_LINKS = []

# adapted from https://hynek.me/articles/conditional-python-dependencies/
if int(setuptools.__version__.split(".", 1)[0]) < 18:
	# no bdist_wheel support for setuptools < 18 since we build universal wheels and our optional dependencies
	# would get lost there
	assert "bdist_wheel" not in sys.argv

	# add optional dependencies for setuptools versions < 18 that don't yet support environment markers
	if sys.version_info[0] < 3:
		INSTALL_REQUIRES += INSTALL_REQUIRES_PYTHON2

	if sys.platform == "darwin":
		INSTALL_REQUIRES += INSTALL_REQUIRES_OSX
else:
	# environment markers supported
	EXTRA_REQUIRES[":python_version < '3'"] = INSTALL_REQUIRES_PYTHON2
	EXTRA_REQUIRES[":sys_platform == 'darwin'"] = INSTALL_REQUIRES_OSX

#-----------------------------------------------------------------------------------------------------------------------
# Anything below here is just command setup and general setup configuration

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

def read_file_contents(path):
	import codecs
	with codecs.open(path, encoding="utf-8") as f:
		return f.read()

def md_to_html_build_py_factory(files, baseclass):
	class md_to_html_build_py(baseclass):
		files = dict()

		def run(self):
			print("RUNNING md_to_html_build_py")
			if not self.dry_run:
				for directory, files in self.files.items():
					target_dir = os.path.join(self.build_lib, directory)
					self.mkpath(target_dir)

					for entry in files:
						if isinstance(entry, tuple):
							if len(entry) != 2:
								continue
							source, dest = entry[0], os.path.join(target_dir, entry[1])
						else:
							source = entry
							dest = os.path.join(target_dir, source + ".html")

						print("Rendering markdown from {} to {}".format(source, dest))

						from markdown import markdownFromFile
						markdownFromFile(input=source,
						                 output=dest,
						                 encoding="utf-8")
			baseclass.run(self)

	return type(md_to_html_build_py)(md_to_html_build_py.__name__,
	                                 (md_to_html_build_py,),
	                                 dict(files=files))

def get_cmdclass():
	# make sure these are always available, even when run by dependabot
	global versioneer, octoprint_setuptools, md_to_html_build_py_factory

	cmdclass = versioneer.get_cmdclass()

	# add clean command
	cmdclass.update(dict(clean=octoprint_setuptools.CleanCommand.for_options(source_folder="src", eggs=["OctoPrint*.egg-info"])))

	# add translation commands
	translation_dir = "translations"
	pot_file = os.path.join(translation_dir, "messages.pot")
	bundled_dir = os.path.join("src", "octoprint", "translations")
	cmdclass.update(octoprint_setuptools.get_babel_commandclasses(pot_file=pot_file, output_dir=translation_dir, pack_name_prefix="OctoPrint-i18n-", pack_path_prefix="", bundled_dir=bundled_dir))

	cmdclass["build_py"] = md_to_html_build_py_factory({
		"octoprint/templates/_data": [
			"AUTHORS.md",
			"SUPPORTERS.md",
			"THIRDPARTYLICENSES.md",
		]
	}, cmdclass["build_py"] if "build_py" in cmdclass else _build_py)

	return cmdclass

def params():
	# make sure these are always available, even when run by dependabot
	global versioneer, get_cmdclass, read_file_contents, here, \
		PYTHON_REQUIRES, SETUP_REQUIRES, INSTALL_REQUIRES, EXTRA_REQUIRES, DEPENDENCY_LINKS

	name = "OctoPrint"
	version = versioneer.get_version()
	cmdclass = get_cmdclass()

	description = "The snappy web interface for your 3D printer"
	long_description = read_file_contents(os.path.join(here, "README.md"))
	long_description_content_type = "text/markdown"

	python_requires = PYTHON_REQUIRES
	setup_requires = SETUP_REQUIRES
	install_requires = INSTALL_REQUIRES
	extras_require = EXTRA_REQUIRES
	dependency_links = DEPENDENCY_LINKS

	classifiers = [
		"Development Status :: 5 - Production/Stable",
		"Environment :: Web Environment",
		"Framework :: Flask",
		"Intended Audience :: Developers",
		"Intended Audience :: Education",
		"Intended Audience :: End Users/Desktop",
		"Intended Audience :: Manufacturing",
		"Intended Audience :: Other Audience",
		"Intended Audience :: Science/Research",
		"License :: OSI Approved :: GNU Affero General Public License v3",
		"Natural Language :: English",
		"Natural Language :: German",
		"Operating System :: OS Independent",
		"Programming Language :: Python",
		"Programming Language :: Python :: 2",
		"Programming Language :: Python :: 2.7",
		"Programming Language :: Python :: 3",
		"Programming Language :: Python :: 3.6",
		"Programming Language :: Python :: 3.7",
		"Programming Language :: Python :: 3.8",
		"Programming Language :: Python :: Implementation :: CPython",
		"Programming Language :: JavaScript",
		"Topic :: Printing",
		"Topic :: System :: Monitoring"
	]
	author = "Gina Häußge"
	author_email = "gina@octoprint.org"
	url = "https://octoprint.org"
	license = "GNU Affero General Public License v3"
	keywords = "3dprinting 3dprinter 3d-printing 3d-printer octoprint"

	project_urls={
		"Community Forum": "https://community.octoprint.org",
		"Bug Reports": "https://github.com/foosel/OctoPrint/issues",
		"Source": "https://github.com/foosel/OctoPrint",
		"Funding": "https://donate.octoprint.org"
	}

	packages = setuptools.find_packages(where="src")
	package_dir = {
		"": "src",
	}
	package_data = {
		"octoprint": octoprint_setuptools.package_data_dirs('src/octoprint',
		                                                    ['static', 'templates', 'plugins', 'translations'])
		             + ['util/piptestballoon/setup.py']
	}

	include_package_data = True
	zip_safe = False

	if os.environ.get('READTHEDOCS', None) == 'True':
		# we can't tell read the docs to please perform a pip install -e .[docs], so we help
		# it a bit here by explicitly adding the development dependencies, which include our
		# documentation dependencies
		install_requires = install_requires + extras_require['docs']

	entry_points = {
		"console_scripts": [
			"octoprint = octoprint:main"
		]
	}

	return locals()

setuptools.setup(**params())
<commit_msg>⬆ Ensure current versions of itsdangerous<commit_after>#!/usr/bin/env python2
# coding=utf-8

from distutils.command.build_py import build_py as _build_py
import os
import versioneer

import sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), "src"))
import octoprint_setuptools
import setuptools

#-----------------------------------------------------------------------------------------------------------------------

# Supported python versions
# we test against 2.7, 3.6 and 3.7, so that's what we'll mark as supported
PYTHON_REQUIRES = ">=2.7.9, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4"

# Requirements for setup.py
SETUP_REQUIRES = [
	"markdown>=3.1,<3.2"         # newer versions require Python 3
]

# Requirements for our application
INSTALL_REQUIRES = [
	# additional OctoPrint plugins that are maintained on a different release cycle
	"OctoPrint-FirmwareCheck>=2020.06.22",
	"OctoPrint-FileCheck>=2020.07.06",

	# the following dependencies are non trivial to update since later versions introduce backwards incompatible
	# changes that might affect plugins, or due to other observed problems

	"markupsafe>=1.1,<2.0",      # Jinja dependency, newer versions require Python 3
	"tornado==5.1.1",            # newer versions require Python 3
	"markdown>=3.1,<3.2",        # newer versions require Python 3
	"rsa==4.0",                  # newer versions require Python 3
	"regex!=2018.11.6",          # avoid broken 2018.11.6. See #2874

	# anything below this should be checked on releases for new versions

	"flask>=1.1.2,<2",
	"Jinja2>=2.11.2,<3",
	"Flask-Login>=0.5,<0.6",     # flask-login doesn't use semver & breaks stuff on minor version increases
	"Flask-Babel>=1.0,<2",
	"Flask-Assets>=2.0,<3",
	"werkzeug>=1.0.1,<2",
	"itsdangerous>=1.1.0,<2",
	"cachelib>=0.1,<1",
	"PyYAML>=5.3.1,<6",
	"pyserial>=3.4,<4",
	"netaddr>=0.7.19,<1",
	"watchdog>=0.10.2,<1",
	"sarge==0.1.5post0",
	"netifaces>=0.10.9,<1",
	"pylru>=1.2,<2",
	"pkginfo>=1.5.0.1,<2",
	"requests>=2.23.0,<3",
	"semantic_version>=2.8.5,<3",
	"psutil>=5.7,<6",
	"Click>=7.1.2,<8",
	"feedparser>=5.2.1,<6",
	"future>=0.18.2,<1",
	"websocket-client>=0.57,<1",
	"wrapt>=1.12.1,<2",
	"emoji>=0.5.4,<1",
	"frozendict>=1.2,<2",
	"sentry-sdk>=0.15.1,<1",
	"filetype>=1.0.7,<2",

	# vendor bundle dependencies
	"unidecode>=0.04.14,<0.05",  # dependency of awesome-slugify
	"blinker>=1.4,<2"            # dependency of flask_principal
]

# Python 2 specific requirements
INSTALL_REQUIRES_PYTHON2 = [
	"futures>=3.3,<4",
	"monotonic>=1.5,<2",
	"scandir>=1.10,<2",
	"chainmap>=1.0.3,<2",
	"typing>=3.7.4.1,<4"
]

# OSX specific requirements
INSTALL_REQUIRES_OSX = [
	"appdirs>=1.4.4",
]

# Additional requirements for optional install options
EXTRA_REQUIRES = dict(
	# Dependencies for developing OctoPrint
	develop=[
		# Testing dependencies - SEE ALSO tox.ini
		"mock>=3.0.5,<4",
		"pytest==4.6.10",
		"pytest-doctest-custom>=1.0.0,<2",
		"ddt",

		# linter
		"flake8",

		# profiler
		"pyinstrument",
	],

	# Dependencies for developing OctoPrint plugins
	plugins=[
		"cookiecutter>=1.7.2,<1.8"
	],

	# Dependencies for building the documentation - Python 3 required!
	docs=[
		"sphinx>=3,<4",
		"sphinxcontrib-httpdomain",
		"sphinxcontrib-mermaid",
		"sphinx_rtd_theme",
		"readthedocs-sphinx-ext"
	],
)

# Dependency links for any of the aforementioned dependencies
DEPENDENCY_LINKS = []

# adapted from https://hynek.me/articles/conditional-python-dependencies/
if int(setuptools.__version__.split(".", 1)[0]) < 18:
	# no bdist_wheel support for setuptools < 18 since we build universal wheels and our optional dependencies
	# would get lost there
	assert "bdist_wheel" not in sys.argv

	# add optional dependencies for setuptools versions < 18 that don't yet support environment markers
	if sys.version_info[0] < 3:
		INSTALL_REQUIRES += INSTALL_REQUIRES_PYTHON2

	if sys.platform == "darwin":
		INSTALL_REQUIRES += INSTALL_REQUIRES_OSX
else:
	# environment markers supported
	EXTRA_REQUIRES[":python_version < '3'"] = INSTALL_REQUIRES_PYTHON2
	EXTRA_REQUIRES[":sys_platform == 'darwin'"] = INSTALL_REQUIRES_OSX

#-----------------------------------------------------------------------------------------------------------------------
# Anything below here is just command setup and general setup configuration

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

def read_file_contents(path):
	import codecs
	with codecs.open(path, encoding="utf-8") as f:
		return f.read()

def md_to_html_build_py_factory(files, baseclass):
	class md_to_html_build_py(baseclass):
		files = dict()

		def run(self):
			print("RUNNING md_to_html_build_py")
			if not self.dry_run:
				for directory, files in self.files.items():
					target_dir = os.path.join(self.build_lib, directory)
					self.mkpath(target_dir)

					for entry in files:
						if isinstance(entry, tuple):
							if len(entry) != 2:
								continue
							source, dest = entry[0], os.path.join(target_dir, entry[1])
						else:
							source = entry
							dest = os.path.join(target_dir, source + ".html")

						print("Rendering markdown from {} to {}".format(source, dest))

						from markdown import markdownFromFile
						markdownFromFile(input=source,
						                 output=dest,
						                 encoding="utf-8")
			baseclass.run(self)

	return type(md_to_html_build_py)(md_to_html_build_py.__name__,
	                                 (md_to_html_build_py,),
	                                 dict(files=files))

def get_cmdclass():
	# make sure these are always available, even when run by dependabot
	global versioneer, octoprint_setuptools, md_to_html_build_py_factory

	cmdclass = versioneer.get_cmdclass()

	# add clean command
	cmdclass.update(dict(clean=octoprint_setuptools.CleanCommand.for_options(source_folder="src", eggs=["OctoPrint*.egg-info"])))

	# add translation commands
	translation_dir = "translations"
	pot_file = os.path.join(translation_dir, "messages.pot")
	bundled_dir = os.path.join("src", "octoprint", "translations")
	cmdclass.update(octoprint_setuptools.get_babel_commandclasses(pot_file=pot_file, output_dir=translation_dir, pack_name_prefix="OctoPrint-i18n-", pack_path_prefix="", bundled_dir=bundled_dir))

	cmdclass["build_py"] = md_to_html_build_py_factory({
		"octoprint/templates/_data": [
			"AUTHORS.md",
			"SUPPORTERS.md",
			"THIRDPARTYLICENSES.md",
		]
	}, cmdclass["build_py"] if "build_py" in cmdclass else _build_py)

	return cmdclass

def params():
	# make sure these are always available, even when run by dependabot
	global versioneer, get_cmdclass, read_file_contents, here, \
		PYTHON_REQUIRES, SETUP_REQUIRES, INSTALL_REQUIRES, EXTRA_REQUIRES, DEPENDENCY_LINKS

	name = "OctoPrint"
	version = versioneer.get_version()
	cmdclass = get_cmdclass()

	description = "The snappy web interface for your 3D printer"
	long_description = read_file_contents(os.path.join(here, "README.md"))
	long_description_content_type = "text/markdown"

	python_requires = PYTHON_REQUIRES
	setup_requires = SETUP_REQUIRES
	install_requires = INSTALL_REQUIRES
	extras_require = EXTRA_REQUIRES
	dependency_links = DEPENDENCY_LINKS

	classifiers = [
		"Development Status :: 5 - Production/Stable",
		"Environment :: Web Environment",
		"Framework :: Flask",
		"Intended Audience :: Developers",
		"Intended Audience :: Education",
		"Intended Audience :: End Users/Desktop",
		"Intended Audience :: Manufacturing",
		"Intended Audience :: Other Audience",
		"Intended Audience :: Science/Research",
		"License :: OSI Approved :: GNU Affero General Public License v3",
		"Natural Language :: English",
		"Natural Language :: German",
		"Operating System :: OS Independent",
		"Programming Language :: Python",
		"Programming Language :: Python :: 2",
		"Programming Language :: Python :: 2.7",
		"Programming Language :: Python :: 3",
		"Programming Language :: Python :: 3.6",
		"Programming Language :: Python :: 3.7",
		"Programming Language :: Python :: 3.8",
		"Programming Language :: Python :: Implementation :: CPython",
		"Programming Language :: JavaScript",
		"Topic :: Printing",
		"Topic :: System :: Monitoring"
	]
	author = "Gina Häußge"
	author_email = "gina@octoprint.org"
	url = "https://octoprint.org"
	license = "GNU Affero General Public License v3"
	keywords = "3dprinting 3dprinter 3d-printing 3d-printer octoprint"

	project_urls={
		"Community Forum": "https://community.octoprint.org",
		"Bug Reports": "https://github.com/foosel/OctoPrint/issues",
		"Source": "https://github.com/foosel/OctoPrint",
		"Funding": "https://donate.octoprint.org"
	}

	packages = setuptools.find_packages(where="src")
	package_dir = {
		"": "src",
	}
	package_data = {
		"octoprint": octoprint_setuptools.package_data_dirs('src/octoprint',
		                                                    ['static', 'templates', 'plugins', 'translations'])
		             + ['util/piptestballoon/setup.py']
	}

	include_package_data = True
	zip_safe = False

	if os.environ.get('READTHEDOCS', None) == 'True':
		# we can't tell read the docs to please perform a pip install -e .[docs], so we help
		# it a bit here by explicitly adding the development dependencies, which include our
		# documentation dependencies
		install_requires = install_requires + extras_require['docs']

	entry_points = {
		"console_scripts": [
			"octoprint = octoprint:main"
		]
	}

	return locals()

setuptools.setup(**params())
<|endoftext|>


<commit_before>import os
import sys
from distutils.core import setup

if sys.argv[-1] == 'publish':
    os.system('python setup.py sdist upload -r PyPI')
    sys.exit()

setup(
    name='schedule',
    packages=['schedule'],
    version='0.1.11',
    description='Job scheduling for humans.',
    long_description=(open('README.rst').read() + '\n\n' +
                      open('HISTORY.rst').read()),
    license=open('LICENSE.txt').read(),
    author='Daniel Bader',
    author_email='mail@dbader.org',
    url='https://github.com/dbader/schedule',
    download_url='https://github.com/dbader/schedule/tarball/0.1.11',
    keywords=[
        'schedule', 'periodic', 'jobs', 'scheduling', 'clockwork',
        'cron'
    ],
    classifiers=[
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3.3',
        'Natural Language :: English',
    ],
)
<commit_msg>Make version changes in setup.py less error prone.<commit_after>import os
import sys
from distutils.core import setup

if sys.argv[-1] == 'publish':
    os.system('python setup.py sdist upload -r PyPI')
    sys.exit()

SCHEDULE_VERSION = '0.1.11'
SCHEDULE_DOWNLOAD_URL = ('https://github.com/dbader/schedule/tarball/' +
                         SCHEDULE_VERSION)

setup(
    name='schedule',
    packages=['schedule'],
    version=SCHEDULE_VERSION,
    description='Job scheduling for humans.',
    long_description=(open('README.rst').read() + '\n\n' +
                      open('HISTORY.rst').read()),
    license=open('LICENSE.txt').read(),
    author='Daniel Bader',
    author_email='mail@dbader.org',
    url='https://github.com/dbader/schedule',
    download_url=SCHEDULE_DOWNLOAD_URL,
    keywords=[
        'schedule', 'periodic', 'jobs', 'scheduling', 'clockwork',
        'cron'
    ],
    classifiers=[
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3.3',
        'Natural Language :: English',
    ],
)
<|endoftext|>


<commit_before># -*- coding: utf-8 -*-
"""Python packaging."""
import os
from setuptools import setup

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

NAME = u'django-plainpasswordhasher'
DESCRIPTION = u'Dummy (plain text) password hashing for Django.'
README = open(os.path.join(here, 'README.rst')).read()
VERSION = open(os.path.join(here, 'VERSION')).read().strip()
PACKAGES = [NAME.replace(u'-', u'_')]
REQUIREMENTS = ['Django',
                'setuptools']
ENTRY_POINTS = {}
AUTHOR = u'Boris Feld'
EMAIL = u'lothiraldan@gmail.com'
URL = u'https://github.com/novapost/django-plainpasswordhasher'
CLASSIFIERS = ['Development Status :: 4 - Beta',
               'Programming Language :: Python :: 2.7',
               'Framework :: Django',
               'Topic :: Security :: Cryptography',
               'Topic :: Software Development :: Testing']
KEYWORDS = []

if __name__ == '__main__':  # Don't run setup() when we import this module.
    setup(name=NAME,
          version=VERSION,
          description=DESCRIPTION,
          long_description=README,
          classifiers=CLASSIFIERS,
          keywords=' '.join(KEYWORDS),
          author=AUTHOR,
          author_email=EMAIL,
          url=URL,
          packages=PACKAGES,
          include_package_data=True,
          zip_safe=False,
          install_requires=REQUIREMENTS,
          entry_points=ENTRY_POINTS)
<commit_msg>Added license in setup.py metadata.<commit_after># -*- coding: utf-8 -*-
"""Python packaging."""
import os
from setuptools import setup

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

NAME = u'django-plainpasswordhasher'
DESCRIPTION = u'Dummy (plain text) password hashing for Django.'
README = open(os.path.join(here, 'README.rst')).read()
VERSION = open(os.path.join(here, 'VERSION')).read().strip()
PACKAGES = [NAME.replace(u'-', u'_')]
REQUIREMENTS = ['Django',
                'setuptools']
ENTRY_POINTS = {}
LICENSE = u'BSD'
AUTHOR = u'Boris Feld'
EMAIL = u'lothiraldan@gmail.com'
URL = u'https://github.com/novapost/django-plainpasswordhasher'
CLASSIFIERS = ['Development Status :: 4 - Beta',
               'License :: OSI Approved :: BSD License',
               'Programming Language :: Python :: 2.7',
               'Framework :: Django',
               'Topic :: Security :: Cryptography',
               'Topic :: Software Development :: Testing']
KEYWORDS = []

if __name__ == '__main__':  # Don't run setup() when we import this module.
    setup(name=NAME,
          version=VERSION,
          description=DESCRIPTION,
          long_description=README,
          classifiers=CLASSIFIERS,
          keywords=' '.join(KEYWORDS),
          license=LICENSE,
          author=AUTHOR,
          author_email=EMAIL,
          url=URL,
          packages=PACKAGES,
          include_package_data=True,
          zip_safe=False,
          install_requires=REQUIREMENTS,
          entry_points=ENTRY_POINTS)
<|endoftext|>


<commit_before>#   Copyright 2012-2013 OpenStack, LLC.
#
#   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.
#

import os

import setuptools

from openstackclient.openstack.common import setup

project = "python-openstackclient"
requires = setup.parse_requirements()
dependency_links = setup.parse_dependency_links()

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

setuptools.setup(
    name=project,
    version=setup.get_version(project),
    description="OpenStack command-line client",
    long_description=read('README.rst'),
    url='https://github.com/openstack/python-openstackclient',
    license="Apache License, Version 2.0",
    author='OpenStack Client Contributors',
    author_email='openstack@lists.launchpad.net',
    packages=setuptools.find_packages(exclude=['tests', 'tests.*']),
    classifiers=[
        'Development Status :: 2 - Pre-Alpha',
        'Environment :: Console',
        'Environment :: OpenStack',
        'Intended Audience :: Developers',
        'Intended Audience :: Information Technology',
        'License :: OSI Approved :: Apache Software License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
    ],
    install_requires=requires,
    dependency_links=dependency_links,
    cmdclass=setup.get_cmdclass(),
    entry_points={
        'console_scripts': ['openstack=openstackclient.shell:main'],
        'openstack.cli': [
        ],
        'openstack.identity.v2_0': [
            'create_endpoint=' +
            'openstackclient.identity.v2_0.endpoint:CreateEndpoint',
            'delete_endpoint=' +
            'openstackclient.identity.v2_0.endpoint:DeleteEndpoint',
            'list_endpoint=' +
            'openstackclient.identity.v2_0.endpoint:ListEndpoint',
            'show_endpoint=' +
            'openstackclient.identity.v2_0.endpoint:ShowEndpoint',
            'add_role=' +
            'openstackclient.identity.v2_0.role:AddRole',
            'create_role=' +
            'openstackclient.identity.v2_0.role:CreateRole',
            'delete_role=' +
            'openstackclient.identity.v2_0.role:DeleteRole',
            'list_role=openstackclient.identity.v2_0.role:ListRole',
            'remove_role=' +
            'openstackclient.identity.v2_0.role:RemoveRole',
            'show_role=openstackclient.identity.v2_0.role:ShowRole',
            'create_service=' +
            'openstackclient.identity.v2_0.service:CreateService',
            'delete_service=' +
            'openstackclient.identity.v2_0.service:DeleteService',
            'list_service=openstackclient.identity.v2_0.service:ListService',
            'show_service=openstackclient.identity.v2_0.service:ShowService',
            'create_tenant=' +
            'openstackclient.identity.v2_0.tenant:CreateTenant',
            'delete_tenant=' +
            'openstackclient.identity.v2_0.tenant:DeleteTenant',
            'list_tenant=openstackclient.identity.v2_0.tenant:ListTenant',
            'set_tenant=openstackclient.identity.v2_0.tenant:SetTenant',
            'show_tenant=openstackclient.identity.v2_0.tenant:ShowTenant',
            'list_user-role=openstackclient.identity.v2_0.role:ListUserRole',
            'create_user=' +
            'openstackclient.identity.v2_0.user:CreateUser',
            'delete_user=' +
            'openstackclient.identity.v2_0.user:DeleteUser',
            'list_user=openstackclient.identity.v2_0.user:ListUser',
            'set_user=openstackclient.identity.v2_0.user:SetUser',
            'show_user=openstackclient.identity.v2_0.user:ShowUser',
        ],
        'openstack.identity.v3': [
            'create_group=openstackclient.identity.v3.group:CreateGroup',
            'delete_group=openstackclient.identity.v3.group:DeleteGroup',
            'set_group=openstackclient.identity.v3.group:SetGroup',
            'show_group=openstackclient.identity.v3.group:ShowGroup',
            'list_group=openstackclient.identity.v3.group:ListGroup',
            'create_project=' +
            'openstackclient.identity.v3.project:CreateProject',
            'delete_project=' +
            'openstackclient.identity.v3.project:DeleteProject',
            'set_project=openstackclient.identity.v3.project:SetProject',
            'show_project=openstackclient.identity.v3.project:ShowProject',
            'list_project=openstackclient.identity.v3.project:ListProject',
            'create_user=' +
            'openstackclient.identity.v3.user:CreateUser',
            'delete_user=' +
            'openstackclient.identity.v3.user:DeleteUser',
            'list_user=openstackclient.identity.v3.user:ListUser',
            'set_user=openstackclient.identity.v3.user:SetUser',
            'show_user=openstackclient.identity.v3.user:ShowUser',
        ],
        'openstack.image.v2': [
            'list_image=openstackclient.image.v2.image:ListImage',
            'show_image=openstackclient.image.v2.image:ShowImage',
            'save_image=openstackclient.image.v2.image:SaveImage',
        ],
        'openstack.compute.v2': [
            'create_agent=openstackclient.compute.v2.agent:CreateAgent',
            'create_flavor=openstackclient.compute.v2.flavor:CreateFlavor',
            'create_server=openstackclient.compute.v2.server:CreateServer',
            'delete_agent=openstackclient.compute.v2.agent:DeleteAgent',
            'delete_flavor=openstackclient.compute.v2.flavor:DeleteFlavor',
            'delete_server=openstackclient.compute.v2.server:DeleteServer',
            'list_agent=openstackclient.compute.v2.agent:ListAgent',
            'list_flavor=openstackclient.compute.v2.flavor:ListFlavor',
            'list_server=openstackclient.compute.v2.server:ListServer',
            'list_compute-service=' +
            'openstackclient.compute.v2.service:ListService',
            'pause_server=openstackclient.compute.v2.server:PauseServer',
            'reboot_server=openstackclient.compute.v2.server:RebootServer',
            'rebuild_server=openstackclient.compute.v2.server:RebuildServer',
            'resume_server=openstackclient.compute.v2.server:ResumeServer',
            'set_agent=openstackclient.compute.v2.agent:SetAgent',
            'show_flavor=openstackclient.compute.v2.flavor:ShowFlavor',
            'set_compute-service=' +
            'openstackclient.compute.v2.service:SetService',
            'show_server=openstackclient.compute.v2.server:ShowServer',
            'suspend_server=openstackclient.compute.v2.server:SuspendServer',
            'unpause_server=openstackclient.compute.v2.server:UnpauseServer',
        ],
        'openstack.volume.v1': [
            'create_type=openstackclient.volume.v1.type:CreateType',
            'delete_type=openstackclient.volume.v1.type:DeleteType',
            'list_type=openstackclient.volume.v1.type:ListType',
            'set_type=openstackclient.volume.v1.type:SetType',
            'unset_type=openstackclient.volume.v1.type:UnsetType',
            'show_quota=openstackclient.volume.v1.quota:ShowQuota',
            'list_quota=openstackclient.volume.v1.quota:ListQuota',
            'set_quota=openstackclient.volume.v1.quota:SetQuota',
        ]
    }
)
<commit_msg>add domain, credential to identity v3 api<commit_after>#   Copyright 2012-2013 OpenStack, LLC.
#
#   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.
#

import os

import setuptools

from openstackclient.openstack.common import setup

project = "python-openstackclient"
requires = setup.parse_requirements()
dependency_links = setup.parse_dependency_links()

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

setuptools.setup(
    name=project,
    version=setup.get_version(project),
    description="OpenStack command-line client",
    long_description=read('README.rst'),
    url='https://github.com/openstack/python-openstackclient',
    license="Apache License, Version 2.0",
    author='OpenStack Client Contributors',
    author_email='openstack@lists.launchpad.net',
    packages=setuptools.find_packages(exclude=['tests', 'tests.*']),
    classifiers=[
        'Development Status :: 2 - Pre-Alpha',
        'Environment :: Console',
        'Environment :: OpenStack',
        'Intended Audience :: Developers',
        'Intended Audience :: Information Technology',
        'License :: OSI Approved :: Apache Software License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
    ],
    install_requires=requires,
    dependency_links=dependency_links,
    cmdclass=setup.get_cmdclass(),
    entry_points={
        'console_scripts': ['openstack=openstackclient.shell:main'],
        'openstack.cli': [
        ],
        'openstack.identity.v2_0': [
            'create_endpoint=' +
            'openstackclient.identity.v2_0.endpoint:CreateEndpoint',
            'delete_endpoint=' +
            'openstackclient.identity.v2_0.endpoint:DeleteEndpoint',
            'list_endpoint=' +
            'openstackclient.identity.v2_0.endpoint:ListEndpoint',
            'show_endpoint=' +
            'openstackclient.identity.v2_0.endpoint:ShowEndpoint',
            'add_role=' +
            'openstackclient.identity.v2_0.role:AddRole',
            'create_role=' +
            'openstackclient.identity.v2_0.role:CreateRole',
            'delete_role=' +
            'openstackclient.identity.v2_0.role:DeleteRole',
            'list_role=openstackclient.identity.v2_0.role:ListRole',
            'remove_role=' +
            'openstackclient.identity.v2_0.role:RemoveRole',
            'show_role=openstackclient.identity.v2_0.role:ShowRole',
            'create_service=' +
            'openstackclient.identity.v2_0.service:CreateService',
            'delete_service=' +
            'openstackclient.identity.v2_0.service:DeleteService',
            'list_service=openstackclient.identity.v2_0.service:ListService',
            'show_service=openstackclient.identity.v2_0.service:ShowService',
            'create_tenant=' +
            'openstackclient.identity.v2_0.tenant:CreateTenant',
            'delete_tenant=' +
            'openstackclient.identity.v2_0.tenant:DeleteTenant',
            'list_tenant=openstackclient.identity.v2_0.tenant:ListTenant',
            'set_tenant=openstackclient.identity.v2_0.tenant:SetTenant',
            'show_tenant=openstackclient.identity.v2_0.tenant:ShowTenant',
            'list_user-role=openstackclient.identity.v2_0.role:ListUserRole',
            'create_user=' +
            'openstackclient.identity.v2_0.user:CreateUser',
            'delete_user=' +
            'openstackclient.identity.v2_0.user:DeleteUser',
            'list_user=openstackclient.identity.v2_0.user:ListUser',
            'set_user=openstackclient.identity.v2_0.user:SetUser',
            'show_user=openstackclient.identity.v2_0.user:ShowUser',
        ],
        'openstack.identity.v3': [
            'create_group=openstackclient.identity.v3.group:CreateGroup',
            'delete_group=openstackclient.identity.v3.group:DeleteGroup',
            'set_group=openstackclient.identity.v3.group:SetGroup',
            'show_group=openstackclient.identity.v3.group:ShowGroup',
            'list_group=openstackclient.identity.v3.group:ListGroup',
            'create_project=' +
            'openstackclient.identity.v3.project:CreateProject',
            'delete_project=' +
            'openstackclient.identity.v3.project:DeleteProject',
            'set_project=openstackclient.identity.v3.project:SetProject',
            'show_project=openstackclient.identity.v3.project:ShowProject',
            'list_project=openstackclient.identity.v3.project:ListProject',
            'create_user=' +
            'openstackclient.identity.v3.user:CreateUser',
            'delete_user=' +
            'openstackclient.identity.v3.user:DeleteUser',
            'list_user=openstackclient.identity.v3.user:ListUser',
            'set_user=openstackclient.identity.v3.user:SetUser',
            'show_user=openstackclient.identity.v3.user:ShowUser',
            'create_credential=' +
            'openstackclient.identity.v3.credential:CreateCredential',
            'delete_credential=' +
            'openstackclient.identity.v3.credential:DeleteCredential',
            'set_credential=' +
            'openstackclient.identity.v3.credential:SetCredential',
            'show_credential=' +
            'openstackclient.identity.v3.credential:ShowCredential',
            'list_credential=' +
            'openstackclient.identity.v3.credential:ListCredential',
            'create_domain=openstackclient.identity.v3.domain:CreateDomain',
            'delete_domain=openstackclient.identity.v3.domain:DeleteDomain',
            'set_domain=openstackclient.identity.v3.domain:SetDomain',
            'show_domain=openstackclient.identity.v3.domain:ShowDomain',
            'list_domain=openstackclient.identity.v3.domain:ListDomain',
        ],
        'openstack.image.v2': [
            'list_image=openstackclient.image.v2.image:ListImage',
            'show_image=openstackclient.image.v2.image:ShowImage',
            'save_image=openstackclient.image.v2.image:SaveImage',
        ],
        'openstack.compute.v2': [
            'create_agent=openstackclient.compute.v2.agent:CreateAgent',
            'create_flavor=openstackclient.compute.v2.flavor:CreateFlavor',
            'create_server=openstackclient.compute.v2.server:CreateServer',
            'delete_agent=openstackclient.compute.v2.agent:DeleteAgent',
            'delete_flavor=openstackclient.compute.v2.flavor:DeleteFlavor',
            'delete_server=openstackclient.compute.v2.server:DeleteServer',
            'list_agent=openstackclient.compute.v2.agent:ListAgent',
            'list_flavor=openstackclient.compute.v2.flavor:ListFlavor',
            'list_server=openstackclient.compute.v2.server:ListServer',
            'list_compute-service=' +
            'openstackclient.compute.v2.service:ListService',
            'pause_server=openstackclient.compute.v2.server:PauseServer',
            'reboot_server=openstackclient.compute.v2.server:RebootServer',
            'rebuild_server=openstackclient.compute.v2.server:RebuildServer',
            'resume_server=openstackclient.compute.v2.server:ResumeServer',
            'set_agent=openstackclient.compute.v2.agent:SetAgent',
            'show_flavor=openstackclient.compute.v2.flavor:ShowFlavor',
            'set_compute-service=' +
            'openstackclient.compute.v2.service:SetService',
            'show_server=openstackclient.compute.v2.server:ShowServer',
            'suspend_server=openstackclient.compute.v2.server:SuspendServer',
            'unpause_server=openstackclient.compute.v2.server:UnpauseServer',
        ],
        'openstack.volume.v1': [
            'create_type=openstackclient.volume.v1.type:CreateType',
            'delete_type=openstackclient.volume.v1.type:DeleteType',
            'list_type=openstackclient.volume.v1.type:ListType',
            'set_type=openstackclient.volume.v1.type:SetType',
            'unset_type=openstackclient.volume.v1.type:UnsetType',
            'show_quota=openstackclient.volume.v1.quota:ShowQuota',
            'list_quota=openstackclient.volume.v1.quota:ListQuota',
            'set_quota=openstackclient.volume.v1.quota:SetQuota',
        ]
    }
)
<|endoftext|>


<commit_before>from setuptools import setup,find_packages

setup(
        name = 'movieMerlin',
        packages=find_packages(),
        version = '0.1',
        description = 'A personal movie recommender',
        author = 'Siddharth Verma',
        author_email = 'siddharthv93@gmail.com',
        url = 'https://github.com/padfoot27/merlin',
        download_url = 'https://github.com/padfoot27/merlin/tarball/0.1',
        include_package_data=True,
        install_requires = [
            'Click',
            'tmdbsimple',
        ],
        entry_points = '''
            [console_scripts]
            merlin=package.scripts.merlin:discover
        ''',
)
<commit_msg>Add changes to setup file<commit_after>from setuptools import setup,find_packages

setup(
        name = 'movieMerlin',
        packages=find_packages(),
        version = '0.2',
        description = 'A command line tool that finds you movies',
        author = 'Siddharth Verma',
        author_email = 'siddharthv93@gmail.com',
        url = 'https://github.com/padfoot27/merlin',
        download_url = 'https://github.com/padfoot27/merlin/tarball/0.2',
        include_package_data=True,
        license = 'MIT License',
        install_requires = [
            'Click',
            'tmdbsimple',
        ],
        entry_points = '''
            [console_scripts]
            merlin=package.scripts.merlin:discover
        ''',
)
<|endoftext|>


<commit_before>
from setuptools import setup, find_packages

setup(
    name="grappelli_safe",
    version="0.1.11",
    description="A snapshot of the grappelli_2 branch of django-grappelli, "
                "packaged as a dependency for the Mezzanine CMS for Django.",
    long_description=open("README.rst").read(),
    author="Patrick Kranzlmueller, Axel Swoboda (vonautomatisch)",
    author_email="werkstaetten@vonautomatisch.at",
    maintainer="Stephen McDonald",
    maintainer_email="stephen.mc@gmail.com",
    url="http://github.com/stephenmcd/grappelli-safe/",
    packages=find_packages(),
    include_package_data=True,
    zip_safe=False,
)
<commit_msg>Version bump.<commit_after>
from setuptools import setup, find_packages

setup(
    name="grappelli_safe",
    version="0.1.12",
    description="A snapshot of the grappelli_2 branch of django-grappelli, "
                "packaged as a dependency for the Mezzanine CMS for Django.",
    long_description=open("README.rst").read(),
    author="Patrick Kranzlmueller, Axel Swoboda (vonautomatisch)",
    author_email="werkstaetten@vonautomatisch.at",
    maintainer="Stephen McDonald",
    maintainer_email="stephen.mc@gmail.com",
    url="http://github.com/stephenmcd/grappelli-safe/",
    packages=find_packages(),
    include_package_data=True,
    zip_safe=False,
)
<|endoftext|>


<commit_before>#!/usr/bin/env python
# -*- coding: utf-8 -
#
# This file is part of socketpool.
# See the NOTICE for more information.

import os
from setuptools import setup, find_packages

CLASSIFIERS = [
    'Development Status :: 4 - Beta',
    'Environment :: Web Environment',
    'Intended Audience :: Developers',
    'License :: OSI Approved :: MIT License',
    'Operating System :: OS Independent',
    'Programming Language :: Python',
    'Topic :: Software Development :: Libraries']

# read long description
with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as f:
    long_description = f.read()

DATA_FILES = [
        ('socketpool', ["LICENSE", "MANIFEST.in", "NOTICE", "README.rst",
                        "THANKS", "UNLICENSE"])
        ]

setup(name='socketpool',
      version='0.2.1',
      description = 'Python socket pool',
      long_description = long_description,
      classifiers = CLASSIFIERS,
      license = 'BSD',
      url = 'http://github.com/benoitc/socketpool',
      packages=find_packages(),
      data_files = DATA_FILES)
<commit_msg>bump to 0.2.2<commit_after>#!/usr/bin/env python
# -*- coding: utf-8 -
#
# This file is part of socketpool.
# See the NOTICE for more information.

import os
from setuptools import setup, find_packages

CLASSIFIERS = [
    'Development Status :: 4 - Beta',
    'Environment :: Web Environment',
    'Intended Audience :: Developers',
    'License :: OSI Approved :: MIT License',
    'Operating System :: OS Independent',
    'Programming Language :: Python',
    'Topic :: Software Development :: Libraries']

# read long description
with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as f:
    long_description = f.read()

DATA_FILES = [
        ('socketpool', ["LICENSE", "MANIFEST.in", "NOTICE", "README.rst",
                        "THANKS", "UNLICENSE"])
        ]

setup(name='socketpool',
      version='0.2.2',
      description = 'Python socket pool',
      long_description = long_description,
      classifiers = CLASSIFIERS,
      license = 'BSD',
      url = 'http://github.com/benoitc/socketpool',
      packages=find_packages(),
      data_files = DATA_FILES)
<|endoftext|>


<commit_before>#!/usr/bin/env python
from setuptools import setup

setup(
    name="dbrhino-agent",
    version="0.3.1",
    description="Agent for dbrhino",
    author="Buck Ryan",
    url="https://dbrhino.com",
    classifiers=["Programming Language :: Python :: 3 :: Only"],
    install_requires=[
        "click>=6, <7",
        "requests>=2, <3",
        "PyMySQL<1",
        "psycopg2>=2, <3",
        "jinja2",
        "sqlparse",
        "daemonize",
    ],
    entry_points="""
        [console_scripts]
        dbrhino-agent=dbrhino_agent:cli
    """,
    packages=[
        "dbrhino_agent",
        "dbrhino_agent.db",
    ],
)
<commit_msg>Version 0.3.2<commit_after>#!/usr/bin/env python
from setuptools import setup

setup(
    name="dbrhino-agent",
    version="0.3.2",
    description="Agent for dbrhino",
    author="Buck Ryan",
    url="https://dbrhino.com",
    classifiers=["Programming Language :: Python :: 3 :: Only"],
    install_requires=[
        "click>=6, <7",
        "requests>=2, <3",
        "PyMySQL<1",
        "psycopg2>=2, <3",
        "jinja2",
        "sqlparse",
        "daemonize",
    ],
    entry_points="""
        [console_scripts]
        dbrhino-agent=dbrhino_agent:cli
    """,
    packages=[
        "dbrhino_agent",
        "dbrhino_agent.db",
    ],
)
<|endoftext|>


<commit_before># -*- coding: utf-8 -*-
"""Define the Django Silk setup."""
import os
from setuptools import setup

# allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))

README = open('README.md', 'rb').read().decode("UTF-8")

setup(
    name='django-silk',
    version='4.0.0',
    packages=['silk'],
    include_package_data=True,
    license='MIT License',
    description='Silky smooth profiling for the Django Framework',
    long_description=README,
    long_description_content_type='text/markdown',
    url='https://github.com/jazzband/django-silk',
    author='Michael Ford',
    author_email='mtford@gmail.com',
    classifiers=[
        'Development Status :: 5 - Production/Stable',
        'Environment :: Web Environment',
        'Framework :: Django',
        'Framework :: Django :: 2.2',
        'Framework :: Django :: 3.0',
        'Intended Audience :: Developers',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Programming Language :: Python :: 3.5',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
        'Topic :: Internet :: WWW/HTTP',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
    ],
    install_requires=[
        'Django>=2.2',
        'Pygments',
        'python-dateutil',
        'requests',
        'sqlparse',
        'Jinja2',
        'autopep8',
        'pytz',
        'gprof2dot>=2017.09.19',
    ]
)
<commit_msg>Added min python version to 3.5<commit_after># -*- coding: utf-8 -*-
"""Define the Django Silk setup."""
import os
from setuptools import setup

# allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))

README = open('README.md', 'rb').read().decode("UTF-8")

setup(
    name='django-silk',
    version='4.0.0',
    packages=['silk'],
    include_package_data=True,
    license='MIT License',
    description='Silky smooth profiling for the Django Framework',
    long_description=README,
    long_description_content_type='text/markdown',
    url='https://github.com/jazzband/django-silk',
    author='Michael Ford',
    author_email='mtford@gmail.com',
    classifiers=[
        'Development Status :: 5 - Production/Stable',
        'Environment :: Web Environment',
        'Framework :: Django',
        'Framework :: Django :: 2.2',
        'Framework :: Django :: 3.0',
        'Intended Audience :: Developers',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Programming Language :: Python :: 3.5',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
        'Topic :: Internet :: WWW/HTTP',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
    ],
    install_requires=[
        'Django>=2.2',
        'Pygments',
        'python-dateutil',
        'requests',
        'sqlparse',
        'Jinja2',
        'autopep8',
        'pytz',
        'gprof2dot>=2017.09.19',
    ],
    python_requires='>=3.5'
)
<|endoftext|>


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

install_requires = [
    'sentry>=6.0.0',
    'requests>=1.2.0',
    'BeautifulSoup>=3.2.1'
]

f = open('README.rst')
readme = f.read()
f.close()

setup(
    name='sentry-jira',
    version='0.8.0',
    author='Adam Thurlow',
    author_email='thurloat@gmail.com',
    url='http://github.com/thurloat/sentry-jira',
    description='A Sentry extension which creates JIRA issues from sentry events.',
    long_description=readme,
    license='BSD',
    packages=find_packages(),
    install_requires=install_requires,
    entry_points={
        'sentry.apps': [
            'sentry_jira = sentry_jira',
            ],
        'sentry.plugins': [
            'sentry_jira = sentry_jira.plugin:JIRAPlugin'
        ],
    },
    include_package_data=True,
    zip_safe=False,
    classifiers=[
        'Intended Audience :: Developers',
        'Intended Audience :: System Administrators',
        'Operating System :: OS Independent',
        'License :: OSI Approved :: BSD License',
        'Programming Language :: Python',
        'Framework :: Django',
        'Topic :: Software Development'
    ],
)
<commit_msg>Remove requests requirement<commit_after>#!/usr/bin/env python
from setuptools import setup, find_packages

install_requires = [
    'sentry>=6.0.0',
    'BeautifulSoup>=3.2.1'
]

f = open('README.rst')
readme = f.read()
f.close()

setup(
    name='sentry-jira',
    version='0.8.0',
    author='Adam Thurlow',
    author_email='thurloat@gmail.com',
    url='http://github.com/thurloat/sentry-jira',
    description='A Sentry extension which creates JIRA issues from sentry events.',
    long_description=readme,
    license='BSD',
    packages=find_packages(),
    install_requires=install_requires,
    entry_points={
        'sentry.apps': [
            'sentry_jira = sentry_jira',
            ],
        'sentry.plugins': [
            'sentry_jira = sentry_jira.plugin:JIRAPlugin'
        ],
    },
    include_package_data=True,
    zip_safe=False,
    classifiers=[
        'Intended Audience :: Developers',
        'Intended Audience :: System Administrators',
        'Operating System :: OS Independent',
        'License :: OSI Approved :: BSD License',
        'Programming Language :: Python',
        'Framework :: Django',
        'Topic :: Software Development'
    ],
)
<|endoftext|>


<commit_before># vim:fileencoding=UTF-8
#
# setup.py
#
# Copyright (C) AB Strakt 2001, All rights reserved
#
# @(#) $Id: setup.py,v 1.28 2004/08/10 10:59:01 martin Exp $
#
"""
Installation script for the OpenSSL module
"""

from distutils.core import setup, Extension
import os, sys

from version import __version__

# A hack to determine if Extension objects support the depends keyword arg.
try:
    init_func = Extension.__init__.func_code
    has_dep = 'depends' in init_func.co_varnames
except:
    has_dep = 0
if not has_dep:
    # If it doesn't, create a local replacement that removes depends
    # from the kwargs before calling the regular constructor.
    _Extension = Extension
    class Extension(_Extension):
        def __init__(self, name, sources, **kwargs):
            kwargs.pop('depends', None)
            _Extension.__init__(self, name, sources, **kwargs)

crypto_src = ['src/crypto/crypto.c', 'src/crypto/x509.c',
              'src/crypto/x509name.c', 'src/crypto/pkey.c',
              'src/crypto/x509store.c', 'src/crypto/x509req.c',
              'src/crypto/x509ext.c', 'src/crypto/pkcs7.c',
              'src/crypto/pkcs12.c', 'src/crypto/netscape_spki.c',
              'src/util.c']
crypto_dep = ['src/crypto/crypto.h', 'src/crypto/x509.h',
              'src/crypto/x509name.h', 'src/crypto/pkey.h',
              'src/crypto/x509store.h', 'src/crypto/x509req.h',
              'src/crypto/x509ext.h', 'src/crypto/pkcs7.h',
              'src/crypto/pkcs12.h', 'src/crypto/netscape_spki.h',
              'src/util.h']
rand_src = ['src/rand/rand.c', 'src/util.c']
rand_dep = ['src/util.h']
ssl_src = ['src/ssl/connection.c', 'src/ssl/context.c', 'src/ssl/ssl.c',
           'src/util.c']
ssl_dep = ['src/ssl/connection.h', 'src/ssl/context.h', 'src/ssl/ssl.h',
           'src/util.h']

IncludeDirs = None
LibraryDirs = None

# Add more platforms here when needed
if os.name == 'nt' or sys.platform == 'win32':
    Libraries = ['libeay32', 'ssleay32', 'Ws2_32']
else:
    Libraries = ['ssl', 'crypto']

if sys.platform == 'darwin':
    IncludeDirs = ['/sw/include']
    LibraryDirs = ['/sw/lib']

def mkExtension(name):
    modname = 'OpenSSL.' + name
    src = globals()[name.lower() + '_src']
    dep = globals()[name.lower() + '_dep']
    return Extension(modname, src, libraries=Libraries, depends=dep,
                     include_dirs=IncludeDirs, library_dirs=LibraryDirs)

setup(name='pyOpenSSL', version=__version__,
      package_dir = { 'OpenSSL': '.' },
      ext_modules = [mkExtension('crypto'), mkExtension('rand'), mkExtension('SSL')],
      py_modules  = ['OpenSSL.__init__', 'OpenSSL.tsafe', 'OpenSSL.version',
                     'OpenSSL.test.__init__', 'OpenSSL.test.test_crypto' ],
      description = 'Python wrapper module around the OpenSSL library',
      author = 'Martin Sjögren, AB Strakt', author_email = 'msjogren@gmail.com',
      url = 'http://pyopenssl.sourceforge.net/',
      license = 'LGPL',
      long_description = """\
High-level wrapper around a subset of the OpenSSL library, includes
 * SSL.Connection objects, wrapping the methods of Python's portable
   sockets
 * Callbacks written in Python
 * Extensive error-handling mechanism, mirroring OpenSSL's error codes
...  and much more ;)"""
     )
<commit_msg>Add an extra_objects for the Win32 build.  This is hard coded to paths on a particular machine, so it is kind of stupid.<commit_after># vim:fileencoding=UTF-8
#
# setup.py
#
# Copyright (C) AB Strakt 2001, All rights reserved
#
# @(#) $Id: setup.py,v 1.28 2004/08/10 10:59:01 martin Exp $
#
"""
Installation script for the OpenSSL module
"""

from distutils.core import setup, Extension
import os, sys

from version import __version__

# A hack to determine if Extension objects support the depends keyword arg.
try:
    init_func = Extension.__init__.func_code
    has_dep = 'depends' in init_func.co_varnames
except:
    has_dep = 0
if not has_dep:
    # If it doesn't, create a local replacement that removes depends
    # from the kwargs before calling the regular constructor.
    _Extension = Extension
    class Extension(_Extension):
        def __init__(self, name, sources, **kwargs):
            kwargs.pop('depends', None)
            _Extension.__init__(self, name, sources, **kwargs)

crypto_src = ['src/crypto/crypto.c', 'src/crypto/x509.c',
              'src/crypto/x509name.c', 'src/crypto/pkey.c',
              'src/crypto/x509store.c', 'src/crypto/x509req.c',
              'src/crypto/x509ext.c', 'src/crypto/pkcs7.c',
              'src/crypto/pkcs12.c', 'src/crypto/netscape_spki.c',
              'src/util.c']
crypto_dep = ['src/crypto/crypto.h', 'src/crypto/x509.h',
              'src/crypto/x509name.h', 'src/crypto/pkey.h',
              'src/crypto/x509store.h', 'src/crypto/x509req.h',
              'src/crypto/x509ext.h', 'src/crypto/pkcs7.h',
              'src/crypto/pkcs12.h', 'src/crypto/netscape_spki.h',
              'src/util.h']
rand_src = ['src/rand/rand.c', 'src/util.c']
rand_dep = ['src/util.h']
ssl_src = ['src/ssl/connection.c', 'src/ssl/context.c', 'src/ssl/ssl.c',
           'src/util.c']
ssl_dep = ['src/ssl/connection.h', 'src/ssl/context.h', 'src/ssl/ssl.h',
           'src/util.h']

IncludeDirs = None
LibraryDirs = None

# Add more platforms here when needed
if os.name == 'nt' or sys.platform == 'win32':
    Libraries = ['eay32', 'Ws2_32']
    ExtraObjects = [r"c:\Python25\libs\ssleay32.a"]
else:
    Libraries = ['ssl', 'crypto']
    ExtraObjects = []

if sys.platform == 'darwin':
    IncludeDirs = ['/sw/include']
    LibraryDirs = ['/sw/lib']

def mkExtension(name):
    modname = 'OpenSSL.' + name
    src = globals()[name.lower() + '_src']
    dep = globals()[name.lower() + '_dep']
    return Extension(modname, src, libraries=Libraries, depends=dep,
                     include_dirs=IncludeDirs, library_dirs=LibraryDirs,
                     extra_objects=ExtraObjects)

setup(name='pyOpenSSL', version=__version__,
      package_dir = { 'OpenSSL': '.' },
      ext_modules = [mkExtension('crypto'), mkExtension('rand'), mkExtension('SSL')],
      py_modules  = ['OpenSSL.__init__', 'OpenSSL.tsafe', 'OpenSSL.version',
                     'OpenSSL.test.__init__', 'OpenSSL.test.test_crypto' ],
      description = 'Python wrapper module around the OpenSSL library',
      author = 'Martin Sjögren, AB Strakt', author_email = 'msjogren@gmail.com',
      url = 'http://pyopenssl.sourceforge.net/',
      license = 'LGPL',
      long_description = """\
High-level wrapper around a subset of the OpenSSL library, includes
 * SSL.Connection objects, wrapping the methods of Python's portable
   sockets
 * Callbacks written in Python
 * Extensive error-handling mechanism, mirroring OpenSSL's error codes
...  and much more ;)"""
     )
<|endoftext|>


<commit_before>
import os
from distutils.core import setup
from distutils.command.build import build
from distutils.command.clean import clean
from distutils.spawn import spawn

from qygmy.__version__ import version
SRC_DIR = os.path.dirname(os.path.abspath(__file__))

class build(build):
    def run(self):
        os.chdir(SRC_DIR)
        spawn(['make'])
        super().run()

class clean(clean):
    def run(self):
        os.chdir(SRC_DIR)
        spawn(['make', 'clean'])
        super().run()

setup(
    name = 'Qygmy',
    version = version,
    description = "A simple MPD client.",
    long_description = """
A simple MPD client written in Qt/PySide.
""",
    author = 'tsufeki',
    author_email = 'tsufeki@ymail.com',
    url = 'https://github.com/tsufeki/qygmy',
    packages = [
        'qygmy',
        'qygmy.templates',
        'qygmy.ui',
    ],
    package_data={
        'qygmy': ['translations/*.qm'],
    },
    requires=[
        'PySide (>=1.1.2)',
        'python_mpd2 (>=0.5.1)',
    ],
    scripts=['bin/qygmy'],
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Environment :: X11 Applications :: Qt',
        'Intended Audience :: End Users/Desktop',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Topic :: Multimedia :: Sound/Audio',
    ],
    cmdclass={
        'clean': clean,
        'build': build,
    },
)
<commit_msg>Dependencies.<commit_after>
import os
from distutils.core import setup
from distutils.command.build import build
from distutils.command.clean import clean
from distutils.spawn import spawn

from qygmy.__version__ import version
SRC_DIR = os.path.dirname(os.path.abspath(__file__))

class build(build):
    def run(self):
        os.chdir(SRC_DIR)
        spawn(['make'])
        super().run()

class clean(clean):
    def run(self):
        os.chdir(SRC_DIR)
        spawn(['make', 'clean'])
        super().run()

setup(
    name = 'Qygmy',
    version = version,
    description = "A simple MPD client.",
    long_description = """
A simple MPD client written in Qt/PySide.
""",
    author = 'tsufeki',
    author_email = 'tsufeki@ymail.com',
    url = 'https://github.com/tsufeki/qygmy',
    packages = [
        'qygmy',
        'qygmy.templates',
        'qygmy.ui',
    ],
    package_data={
        'qygmy': ['translations/*.qm'],
    },
    install_requires=[
        'PySide>=1.1.2',
        'python_mpd2',
    ],
    scripts=['bin/qygmy'],
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Environment :: X11 Applications :: Qt',
        'Intended Audience :: End Users/Desktop',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Topic :: Multimedia :: Sound/Audio',
    ],
    cmdclass={
        'clean': clean,
        'build': build,
    },
)
<|endoftext|>