Skip to content

Instantly share code, notes, and snippets.

@diyan
Last active September 3, 2020 10:32
Show Gist options
  • Star 15 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save diyan/8256139 to your computer and use it in GitHub Desktop.
Save diyan/8256139 to your computer and use it in GitHub Desktop.
Tools and libraries which I prefer to use in Python stack

Tools and libraries which I prefer to use in Python stack

Development Environment

  • Ubuntu Linux for both development and production
  • Git version control system
  • Jenkins CI build server (but recently I'm moving to git server-side hooks with ssh from git server to dev/stage/prod servers)
  • Redmine bug tracking system
  • JetBrains PyCharm IDE

Production Environment

  • Amazon EC2 instance with Ubuntu Linux
  • Amazon RDS with MySQL backend

Infrastructure. Tools

  • Python 2.7 (waiting for Gevent on Python 3)
  • IPython / ipdb for debugging
  • uWSGI web server
  • Nginx frontend server
  • Sentry error aggregator
  • nxlog / Logstash / Kibana for centalized logging

Infrastructure. Libraries

  • toolz (in addition to itertools)
  • requests
  • pytest, pytest-cov for testing (high-level integration tests but fast test run)
  • mock, freezegun, httpretty, factory_boy for mocking
  • structlog and logging into console, text file, Logstash

Data access

  • MySQL (due to popularity but also like PostgreSQL)
  • SQLAlchemy ORM (must have for legacy databases but not sure about greenfield projects)
  • pymysql (evaluation in progress)
  • Redis as buffer storage, session storage, queue and cache
  • RabbitMQ if queue must be durable
  • Riak (evaluation in progress)

Communication / Messaging

  • celery for async task processing, task scheduling
  • apns_client (best, Gevent-incompatible) or apns (good, Gevent-compatible) for Apple Push Notifications

Web apps

  • Flask to develop Web Apps and REST APIs (easy to learn, very flexible)
  • Flask Principal
  • Flask Cache (evaluation in progress)
  • mimerender (evaluation in progress)
  • jQuery
  • AngularJS
  • TODO

Desktop apps

  • PySide

Utilities

  • lxml for fast XML processing, HTML normalization
  • pycrypto (evaluation in progress)
  • gevent (evaluation in progress)
  • passlib (evaluation in progress)
  • httpagentparser for parsing HTTP User Agent string
  • twilio, phonenumbers for VoIP
  • xmltodict for easy work with XML
  • jsonschema for validation (evaluation in progress)
  • times for handling time zones
  • pygeoip, for reading MaxMind GeoIP databases (evaluation in progress)
  • metrology for in-process metrics (evaluation in progress)

Tried but they did not worked for me

  • xmlbuilder, xmlwitch (xmltodict has better support, works with Python 3)
  • circus/chaussette (uWSGI much faster, has more features)
  • nose (py.test can handle "assert" keyword, has fixture injection)
  • logstash_formatter (structlog has better approach in general)
  • scales (metrology has better API)
  • TODO Flask-RESTful, Flask-Markdown

Not interested in using

  • Django (very powerful but not flexible)
  • TODO

TODO

  • TODO

Note this list was written on 2014-03-02 and could/should/must be changed in time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment