高效工具¶
API-Tool¶
Formatter-Tool¶
yapf¶
https://github.com/google/yapf
pep8¶
https://www.python.org/dev/peps/pep-0008/
autopep8 --in-place --aggressive <file_path>
Google¶
https://google.github.io/styleguide/pyguide.html
pylint¶
Test-Tool¶
UnitTest¶
Pytest¶
Library¶
Search¶
- jmespath
- glom
- asq
- flupy
Build wheel¶
- smaller size.
- There’s no need for a compiler
Types¶
- pure-Python wheel
- universal wheel
- platform wheel
$ python -m venv env && source ./env/bin/activate
$ python -m pip install -U pip wheel setuptools
# example
$ pip install 'uwsgi==2.0.*'
# Looking in indexes: http://*/pypi/simple/
# Collecting uwsgi==2.0.*
# Downloading http://*/uWSGI-2.0.19.1.tar.gz # gzip
# Building wheels for collected packages: uwsgi
# Building wheel for uwsgi (setup.py) ...
# Created wheel for uwsgi: filename=uWSGI-2.0.19.1-cp38-cp38-linux_x86_64.whl # build wheel
# Stored in directory: /root/.cache/pip/wheels/6f/d1/6c/*
# Successfully built uwsgi
# Installing collected packages: uwsgi # Install
# Successfully installed uwsgi-2.0.19.1
# download
$ pip download --only-binary :all: --dest . --no-cache six
$ unzip -l six*.whl
# Length Date Time Name
# --------- ---------- ----- ----
# 34549 2021-05-05 14:17 six.py
# 1066 2021-05-05 14:18 six-1.16.0.dist-info/LICENSE
# 1795 2021-05-05 14:18 six-1.16.0.dist-info/METADATA
# 110 2021-05-05 14:18 six-1.16.0.dist-info/WHEEL
# 4 2021-05-05 14:18 six-1.16.0.dist-info/top_level.txt
# 435 2021-05-05 14:18 six-1.16.0.dist-info/RECORD
# --------- -------
# pip install wheel
$ python setup.py bdist_wheel # develop
$ python setup.py clean --all bdist_wheel # 发布包
$ python setup.py sdist -d "$tempdir" bdist_wheel -d "$tempdir"
# pushd "$(mktemp -d)"
$ git clone -q git@github.com:jakubroztocil/httpie.git
$ cd httpie
$ python setup.py -q sdist bdist_wheel
$ ls -1 dist/
# popd
# upload
$ python -m pip install -U twine
$ python -m twine upload dist/*
# ex:
python -m venv /mybuildenv/
source /mybuildenv/bin/activate
pip install wheel twine
python setup.py sdist bdist_wheel
twine upload --repository codeartifact dist/*
deactivate
#
Setup.py Example¶
import sys
import codecs
from setuptools import setup, find_packages
import httpie
# Note: keep requirements here to ease distributions packaging
tests_require = [
'docutils',
'pytest',
'pytest-httpbin>=0.0.6',
]
dev_require = [
*tests_require,
'flake8',
'flake8-comprehensions',
'flake8-deprecated',
'flake8-mutable',
'flake8-tuple',
'pytest-cov',
'twine',
'wheel',
]
install_requires = [
'requests[socks]>=2.22.0',
'Pygments>=2.5.2',
'requests-toolbelt>=0.9.1',
'setuptools',
]
install_requires_win_only = [
'colorama>=0.2.4',
]
# Conditional dependencies:
# sdist
if 'bdist_wheel' not in sys.argv:
if 'win32' in str(sys.platform).lower():
# Terminal colors for Windows
install_requires.extend(install_requires_win_only)
# bdist_wheel
extras_require = {
'dev': dev_require,
'test': tests_require,
# https://wheel.readthedocs.io/en/latest/#defining-conditional-dependencies
':sys_platform == "win32"': install_requires_win_only,
}
def long_description():
with codecs.open('README.rst', encoding='utf8') as f:
return f.read()
setup(
name='httpie',
version=httpie.__version__,
description=httpie.__doc__.strip(),
long_description=long_description(),
long_description_content_type='text/x-rst',
url='https://httpie.org/',
download_url=f'https://github.com/httpie/httpie/archive/{httpie.__version__}.tar.gz',
author=httpie.__author__,
author_email='jakub@roztocil.co',
license=httpie.__licence__,
packages=find_packages(include=['httpie', 'httpie.*']),
entry_points={
'console_scripts': [
'http = httpie.__main__:main',
'https = httpie.__main__:main',
],
},
python_requires='>=3.6',
extras_require=extras_require,
install_requires=install_requires,
classifiers=[
'Development Status :: 5 - Production/Stable',
'Programming Language :: Python',
'Programming Language :: Python :: 3 :: Only',
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'License :: OSI Approved :: BSD License',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Software Development',
'Topic :: System :: Networking',
'Topic :: Terminals',
'Topic :: Text Processing',
'Topic :: Utilities'
],
project_urls={
'GitHub': 'https://github.com/httpie/httpie',
'Twitter': 'https://twitter.com/httpie',
'Documentation': 'https://httpie.org/docs',
'Online Demo': 'https://httpie.org/run',
},
)