diff --git a/.travis.yml b/.travis.yml
index 7e3b082..20b84ce 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,7 @@ python:
- "3.6"
# command to install dependencies
install:
- - pip install coveralls pytest-cov==2.6 pytest==3.2.3
+ - pip install coveralls pytest-cov pytest
- pip install -e .
# command to run tests
script:
diff --git a/README.rst b/README.rst
index 1a5fc15..44e8be0 100644
--- a/README.rst
+++ b/README.rst
@@ -1,12 +1,12 @@
easy_dna
========
-.. image:: https://travis-ci.org/Edinburgh-Genome-Foundry/easy_dna.svg?branch=master
- :target: https://travis-ci.org/Edinburgh-Genome-Foundry/easy_dna
- :alt: Travis CI build status
+.. image:: https://app.travis-ci.com/Edinburgh-Genome-Foundry/easy_dna.svg?branch=master
+ :target: https://app.travis-ci.com/Edinburgh-Genome-Foundry/easy_dna
+ :alt: Travis CI build status
.. image:: https://coveralls.io/repos/github/Edinburgh-Genome-Foundry/easy_dna/badge.svg?branch=master
- :target: https://coveralls.io/github/Edinburgh-Genome-Foundry/easy_dna?branch=master
+ :target: https://coveralls.io/github/Edinburgh-Genome-Foundry/easy_dna?branch=master
Easy_dna is a Python library implementing useful routines for manipulating DNA
sequences, either as "ATGC" strings or Biopython records. It aims at providing
@@ -15,10 +15,11 @@ design and genbank generation.
Easy_dna was originally created to gather useful methods repeatedly used in the
different software projects of the Edinburgh Genome Foundry for DNA design and
-manufacturing.
+manufacturing.
See the API reference `here `_.
+
Installation
------------
@@ -26,13 +27,14 @@ You can install easy_dna through PIP:
.. code::
- sudo pip install easy_dna
+ pip install easy_dna
Alternatively, you can unzip the sources in a folder and type:
.. code::
- sudo python setup.py install
+ python setup.py install
+
License = MIT
-------------
@@ -41,6 +43,7 @@ Easy_dna is an open-source software originally written at the `Edinburgh Genome
`_ by `Zulko `_
and `released on Github `_ under the MIT licence (Copyright 2019 Edinburgh Genome Foundry). Everyone is welcome to contribute!
+
More biology software
---------------------
diff --git a/ez_setup.py b/ez_setup.py
index dd07b5c..21291d2 100755
--- a/ez_setup.py
+++ b/ez_setup.py
@@ -1,4 +1,3 @@
-
#!python
"""Bootstrap setuptools installation
@@ -32,14 +31,16 @@
DEFAULT_VERSION = "0.9.6"
DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/"
+
def _python_cmd(*args):
args = (sys.executable,) + args
return subprocess.call(args) == 0
+
def _install(tarball, install_args=()):
# extracting the tarball
tmpdir = tempfile.mkdtemp()
- log.warn('Extracting in %s', tmpdir)
+ log.warn("Extracting in %s", tmpdir)
old_wd = os.getcwd()
try:
os.chdir(tmpdir)
@@ -50,13 +51,13 @@ def _install(tarball, install_args=()):
# going in the directory
subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
os.chdir(subdir)
- log.warn('Now working in %s', subdir)
+ log.warn("Now working in %s", subdir)
# installing
- log.warn('Installing Setuptools')
- if not _python_cmd('setup.py', 'install', *install_args):
- log.warn('Something went wrong during the installation.')
- log.warn('See the error message above.')
+ log.warn("Installing Setuptools")
+ if not _python_cmd("setup.py", "install", *install_args):
+ log.warn("Something went wrong during the installation.")
+ log.warn("See the error message above.")
# exitcode will be 2
return 2
finally:
@@ -67,7 +68,7 @@ def _install(tarball, install_args=()):
def _build_egg(egg, tarball, to_dir):
# extracting the tarball
tmpdir = tempfile.mkdtemp()
- log.warn('Extracting in %s', tmpdir)
+ log.warn("Extracting in %s", tmpdir)
old_wd = os.getcwd()
try:
os.chdir(tmpdir)
@@ -78,11 +79,11 @@ def _build_egg(egg, tarball, to_dir):
# going in the directory
subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
os.chdir(subdir)
- log.warn('Now working in %s', subdir)
+ log.warn("Now working in %s", subdir)
# building an egg
- log.warn('Building a Setuptools egg in %s', to_dir)
- _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)
+ log.warn("Building a Setuptools egg in %s", to_dir)
+ _python_cmd("setup.py", "-q", "bdist_egg", "--dist-dir", to_dir)
finally:
os.chdir(old_wd)
@@ -90,27 +91,33 @@ def _build_egg(egg, tarball, to_dir):
# returning the result
log.warn(egg)
if not os.path.exists(egg):
- raise IOError('Could not build the egg.')
+ raise IOError("Could not build the egg.")
def _do_download(version, download_base, to_dir, download_delay):
- egg = os.path.join(to_dir, 'setuptools-%s-py%d.%d.egg'
- % (version, sys.version_info[0], sys.version_info[1]))
+ egg = os.path.join(
+ to_dir,
+ "setuptools-%s-py%d.%d.egg"
+ % (version, sys.version_info[0], sys.version_info[1]),
+ )
if not os.path.exists(egg):
- tarball = download_setuptools(version, download_base,
- to_dir, download_delay)
+ tarball = download_setuptools(version, download_base, to_dir, download_delay)
_build_egg(egg, tarball, to_dir)
sys.path.insert(0, egg)
import setuptools
+
setuptools.bootstrap_install_from = egg
-def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
- to_dir=os.curdir, download_delay=15):
+def use_setuptools(
+ version=DEFAULT_VERSION,
+ download_base=DEFAULT_URL,
+ to_dir=os.curdir,
+ download_delay=15,
+):
# making sure we use the absolute path
to_dir = os.path.abspath(to_dir)
- was_imported = 'pkg_resources' in sys.modules or \
- 'setuptools' in sys.modules
+ was_imported = "pkg_resources" in sys.modules or "setuptools" in sys.modules
try:
import pkg_resources
except ImportError:
@@ -122,23 +129,23 @@ def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
e = sys.exc_info()[1]
if was_imported:
sys.stderr.write(
- "The required version of setuptools (>=%s) is not available,\n"
- "and can't be installed while this script is running. Please\n"
- "install a more recent version first, using\n"
- "'easy_install -U setuptools'."
- "\n\n(Currently using %r)\n" % (version, e.args[0]))
+ "The required version of setuptools (>=%s) is not available,\n"
+ "and can't be installed while this script is running. Please\n"
+ "install a more recent version first, using\n"
+ "'easy_install -U setuptools'."
+ "\n\n(Currently using %r)\n" % (version, e.args[0])
+ )
sys.exit(2)
else:
- del pkg_resources, sys.modules['pkg_resources'] # reload ok
- return _do_download(version, download_base, to_dir,
- download_delay)
+ del pkg_resources, sys.modules["pkg_resources"] # reload ok
+ return _do_download(version, download_base, to_dir, download_delay)
except pkg_resources.DistributionNotFound:
- return _do_download(version, download_base, to_dir,
- download_delay)
+ return _do_download(version, download_base, to_dir, download_delay)
-def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
- to_dir=os.curdir, delay=15):
+def download_setuptools(
+ version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, delay=15
+):
"""Download setuptools from a specified location and return its filename
`version` should be a valid setuptools version number that is available
@@ -157,7 +164,7 @@ def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
url = download_base + tgz_name
saveto = os.path.join(to_dir, tgz_name)
src = dst = None
- if not os.path.exists(saveto): # Avoid repeated downloads
+ if not os.path.exists(saveto): # Avoid repeated downloads
try:
log.warn("Downloading %s", url)
src = urlopen(url)
@@ -184,6 +191,7 @@ def _extractall(self, path=".", members=None):
import copy
import operator
from tarfile import ExtractError
+
directories = []
if members is None:
@@ -194,17 +202,19 @@ def _extractall(self, path=".", members=None):
# Extract directories with a safe mode.
directories.append(tarinfo)
tarinfo = copy.copy(tarinfo)
- tarinfo.mode = 448 # decimal for oct 0700
+ tarinfo.mode = 448 # decimal for oct 0700
self.extract(tarinfo, path)
# Reverse sort directories.
if sys.version_info < (2, 4):
+
def sorter(dir1, dir2):
return cmp(dir1.name, dir2.name)
+
directories.sort(sorter)
directories.reverse()
else:
- directories.sort(key=operator.attrgetter('name'), reverse=True)
+ directories.sort(key=operator.attrgetter("name"), reverse=True)
# Set correct owner, mtime and filemode on directories.
for tarinfo in directories:
@@ -230,30 +240,40 @@ def _build_install_args(options):
if sys.version_info < (2, 6):
log.warn("--user requires Python 2.6 or later")
raise SystemExit(1)
- install_args.append('--user')
+ install_args.append("--user")
return install_args
+
def _parse_args():
"""
Parse the command line for options
"""
parser = optparse.OptionParser()
parser.add_option(
- '--user', dest='user_install', action='store_true', default=False,
- help='install in user site package (requires Python 2.6 or later)')
+ "--user",
+ dest="user_install",
+ action="store_true",
+ default=False,
+ help="install in user site package (requires Python 2.6 or later)",
+ )
parser.add_option(
- '--download-base', dest='download_base', metavar="URL",
+ "--download-base",
+ dest="download_base",
+ metavar="URL",
default=DEFAULT_URL,
- help='alternative URL from where to download the setuptools package')
+ help="alternative URL from where to download the setuptools package",
+ )
options, args = parser.parse_args()
# positional arguments are ignored
return options
+
def main(version=DEFAULT_VERSION):
"""Install or upgrade setuptools and EasyInstall"""
options = _parse_args()
tarball = download_setuptools(download_base=options.download_base)
return _install(tarball, _build_install_args(options))
-if __name__ == '__main__':
+
+if __name__ == "__main__":
sys.exit(main())
diff --git a/pypi-readme.rst b/pypi-readme.rst
index cfdd1dd..06c72b0 100644
--- a/pypi-readme.rst
+++ b/pypi-readme.rst
@@ -1,5 +1,5 @@
Easy DNA
-==========
+========
Easy_dna is a Python library implementing useful routines for manipulating DNA
sequences, either as "ATGC" strings or Biopython records. It aims at providing
@@ -12,8 +12,9 @@ design and genbank generation.
**License:** MIT, Copyright Edinburgh Genome Foundry
+
More biology software
------------------------
+---------------------
.. image:: https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Edinburgh-Genome-Foundry.github.io/master/static/imgs/logos/egf-codon-horizontal.png
:target: https://edinburgh-genome-foundry.github.io/
diff --git a/setup.py b/setup.py
index 2af723a..98e30a6 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
# This will try to import setuptools. If not here, it will reach for the embedded
# ez_setup (or the ez_setup package). If none, it fails with a message
try:
- from setuptools import setup
+ from setuptools import setup, find_packages
except ImportError:
try:
import ez_setup
@@ -15,13 +15,13 @@
"([sudo] pip install ez_setup) and try again."
)
-from setuptools import setup, find_packages
-
-exec(open("easy_dna/version.py").read()) # loads __version__
+version = {}
+with open("easy_dna/version.py") as fp:
+ exec(fp.read(), version)
setup(
name="easy_dna",
- version=__version__,
+ version=version["__version__"],
author="Zulko",
description="Methods for DNA sequence reading, writing and editing.",
long_description=open("pypi-readme.rst").read(),
@@ -36,6 +36,6 @@
"snapgene_reader",
"flametree",
"pandas",
- "crazydoc"
- ]
+ "crazydoc",
+ ],
)