This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Help us improve Python packaging - Donate today!
Project Description
|Build Status| |Coverage Status| |Pypi Package|


Pylint Odoo plugin
==================

Enable custom checks for Odoo modules.

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| Code | Description | Short name |
+=======+====================================================================================================================================================================================================================================================================================================+====================================+
| C7902 | Missing ./README.rst file. Template here: %s | missing-readme |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8101 | Missing author required "%s" in manifest file | manifest-required-author |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8102 | Missing required key "%s" in manifest file | manifest-required-key |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8103 | Deprecated key "%s" in manifest file | manifest-deprecated-key |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8104 | Use ``CamelCase`` "%s" in class name "%s". You can use oca-autopep8 of https://github.com/OCA/maintainer-tools to auto fix it. | class-camelcase |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8105 | License "%s" not allowed in manifest file. | license-allowed |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8106 | Wrong Version Format "%s" in manifest file. Regex to match: "%s" | manifest-version-format |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8107 | String parameter of raise "%s" requires translation. Use _(%s) | translation-required |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8108 | Name of compute method should starts with "_compute_" | method-compute |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8109 | Name of search method should starts with "_search_" | method-search |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8110 | Name of inverse method should starts with "_inverse_" | method-inverse |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8201 | No UTF-8 coding comment found: Use ``# coding: utf-8`` or ``# -*- coding: utf-8 -*-`` | no-utf8-coding-comment |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E7901 | %s %s | rst-syntax-error |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E7902 | %s error: %s | xml-syntax-error |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E8101 | The author key in the manifest file must be a string (with comma separated values) | manifest-author-string |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E8102 | Use of cr.commit() directly - More info https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md#never-commit-the-transaction | invalid-commit |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E8103 | Use of "%" operator in execute database method. Better use parameters instead. - More info https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md#no-sql-injection | sql-injection |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| R7980 | Consider merging classes inherited to "%s" from %s. | consider-merging-classes-inherited |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| R8101 | Import ``Warning`` should be renamed as UserError ``from openerp.exceptions import Warning as UserError`` | openerp-exception-warning |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| R8110 | Method defined with old api version 7 | old-api7-method-defined |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7901 | %s Dangerous filter without explicit ``user_id`` in xml_id %s | dangerous-filter-wo-user |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7902 | %s Duplicate xml record id "%s" in %s | duplicate-xml-record-id |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7903 | %s | javascript-lint |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7904 | %s Deprecated <openerp> xml node | deprecated-openerp-xml-node |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7905 | %s record res.users without context="{'no_reset_password': True}" | create-user-wo-reset-password |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7906 | %s Duplicate id "%s" | duplicate-id-csv |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7907 | %s Duplicate xml field "%s" in lines %s | duplicate-xml-fields |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7908 | %s Missing newline | missing-newline-extrafiles |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7909 | %s Redundant name module reference in xml_ids "%s". | redundant-modulename-xml |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7910 | %s Use wrong tabs indentation instead of four spaces | wrong-tabs-instead-of-spaces |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7930 | %s not used from manifest | file-not-used |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7935 | External dependency "%s" without ImportError. More info: https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md#external-dependencies | missing-import-error |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7936 | Missing external dependency "%s" from manifest. More info: https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md#external-dependencies | missing-manifest-dependency |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7937 | %s The xml attribute is missing the translation="off" tag %s | xml-attribute-translatable |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7938 | pass into block except. If you really need to use the pass consider logging that exception | except-pass |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7940 | %s Dangerous use of "replace" from view with priority %s < %s | dangerous-view-replace-wo-priority |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7950 | Same Odoo module absolute import. You should use relative import with "." instead of "openerp.addons.%s" | odoo-addons-relative-import |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8101 | Detected api.one and api.multi decorators together. | api-one-multi-together |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8102 | Missing api.one or api.multi in copy function. | copy-wo-api-one |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8103 | Translation method _("string") in fields is not necessary. | translation-field |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8104 | api.one deprecated | api-one-deprecated |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8105 | attribute "%s" deprecated | attribute-deprecated |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8106 | Missing ``super`` call in "%s" method. | method-required-super |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8110 | Missing ``return`` (``super`` is used) in method %s. | missing-return |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8111 | Field parameter "%s" is no longer supported. Use "%s" instead. | renamed-field-parameter |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8112 | "eval" referenced detected. | eval-referenced |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8113 | The attribute string is redundant. String parameter equal to name of variable | attribute-string-redundant |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8201 | You have a python file with execution permissions but you don't have a interpreter magic comment. If you really needs a execution permission then add a magic comment ( https://en.wikipedia.org/wiki/Shebang_(Unix) ). If you don't needs a execution permission then remove it with: chmod -x %s | incoherent-interpreter-exec-perm |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8202 | Use of vim comment | use-vim-comment |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+


Install
-------

``# pip install --upgrade git+https://github.com/oca/pylint-odoo.git``

Or

``# pip install --upgrade --pre pylint-odoo``

Usage
-----

``pylint --load-plugins=pylint_odoo -e odoolint ...``

Example to test just odoo-lint case:

``touch {ADDONS-PATH}/__init__.py``

``pylint --load-plugins=pylint_odoo -d all -e odoolint {ADDONS-PATH}``

If you have external files you can add them in ``examples`` folder to skip.

For rst-syntax-error skip unknown directives


.. |Build Status| image:: https://travis-ci.org/OCA/pylint-odoo.svg?branch=master
:target: https://travis-ci.org/OCA/pylint-odoo
.. |Coverage Status| image:: https://coveralls.io/repos/OCA/pylint-odoo/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/OCA/pylint-odoo?branch=master
.. |Pypi Package| image:: https://img.shields.io/pypi/v/pylint-odoo.svg
:target: https://pypi.python.org/pypi/pylint-odoo

CHANGES
=======

1.6.0
-----

* [REF] README: Auto-update Using the following script: 'PYTHONPATH=~/odoo/pylint-odoo python -c "import pylint_odoo;print pylint_odoo.messages2rst()"'
* [REF] .travis.yml: Renamed flake8 error from F999 to F601 (#115)
* [FIX] Check file-not-used: Skip tests folders (#114)
* [FIX] incoherent-interpreter-exec-perm: Skip check for windows (#113)
* [ADD] except-pass: Emit message If a except:pass is used (#107)
* [FIX] attribute-string-redundant: Add "isinstance" validation for nodes
* [ADD] attribute-string-redundant: Check if "string" parameter is equal to variable name (#100)
* [ADD] renamed-field-parameter: Detect deprecated field values (digits_compute, select) (#99)
* [REF] javascript-lint: Use eslint instead of jshint (#97)
* [ADD] xml-attribute-translatable: Check XML attribute without translation parameter (#105)
* [REF] incoherent-interpreter-exec-perm: Better message (#106)
* [IMP] pylint-odoo: Adding support for parameters --ignore and --ignore-patterns (#103)
* [ADD] eval-referenced: Detects if a "eval" is referenced (without call it) (#101)
* [FIX] duplicate-xml-fields: False red using 2 tree sub-views *2M fields (#96)
* [FIX] method-NAME: Fix if value is not a string
* [REF] misc: Remove deprecated method
* [FIX] test: Never use global into test

1.5.0
-----

* [REF] duplicate-xml-record-id: Get xml section from manifest to skip different origin (#89)
* [FIX] method-NAME: Fix case compute=None Fix OCA/pylint-odoo#88

1.4.0
-----

* [REF] attribute-deprecated: Deprecate length class attribute (#86)
* [ADD] missing-return If you use call a `super` method then you will need return the original value. If you want overwrite a original method then you need add documentation of why and add a `pylint: disable=missing-return`
* [FIX] Whitelist `anybox.testing.openerp` * Add `anybox.testing.openerp` - Fixes #81
* [FIX] manifest-version-format: Fix regex to use explicit dot instead of any char
* [FIX] manifest-version-format: Support -e manifest-version-format only
* [FIX] missing-import-error: Updating libraries used from requirements.txt but not imported or nested imported from odoo
* [IMP] manifest-version-format: Add valid_odoo_versions parameter to force a valid version of odoo in the manifest version
* [REF] missing-import-error: Skip test file since these files are loaded only when running tests and in such a case your module and their external dependencies are installed
* [ADD] Support for 10.0 manifest name
* [REF] requirements: Update developer version of pylint and astroid

1.3.5
-----

* Adding isort dependency (#70)

1.3.4
-----

* [REF] README: Update messages list

1.3.3
-----

* [ADD] missing-import-error, missing-manifest-dependency
* [FIX] rst-syntax-error: Skip unknown roles
* [FIX] rst-syntax-error: Skip unknown directives
* [REF] global refactoring: better message output and use real file and line number in non-py files (#62)
* [REF] README: Add examples special folder
* [REF] checkers: Skip example folder to check lints

1.3.2
-----

* [REF] README: Update messages list

1.3.1
-----

* [ADD] file-not-used: Emit message if there are xml, yml, sql or csv files but It isn't referenced from manifest (#53)
* [ADD] dangerous-view-replace-wo-priority: Check dangerous view with replace but defined with low priority (#55)
* [ADD] old-api7-method-defined: Emit message if the method defined have (self, cr, uid) (#52)
* [ADD] odoo-addons-relative-import (#56)
* [REF] tox: Freeze stable sha pylint20
* [FIX] consider-merging-classes-inherited: Skip check if has '_name' and fix when you use '_inherit' name out of class attribute . Add more tests
* [REF] missing-newline-extrafiles: Skip lib folder
* [FIX] consider-merging-classes-inherited: Fix leaving module isn't a good idea. Better close method
* [IMP] consider-merging-classes-inherited: Support disable comment
* [REF] consider-merging-classes-inherited: Use assign node and better message
* [ADD] consider-merging-classes-inherited
* [REF] Increase performance
* [IMP] pylint_odoo: Enable cProfile print stats
* [IMP] deprecated-module: Add exception for the case of valid openerp.osv.expression (#40)
* [IMP] sql-injection: Add compatibility with .format (#44)
* [REF] translation-required: 100% coverage
* [IMP] translation-required: Support % strings
* [IMP] translation-required: Support .format
* [FIX] translation-required: Fix AttributeError 'Getattr' object has no attribute 'name'
* [IMP] translation-required: Just check odoo exceptions
* [FIX] odoolint: Remove unsafe eval and reduce mccabe rate

1.3.0
-----

* [REF] README: Add new checks (#36)
* [FIX] duplicate-xml-fields: Support security xml style (#35)
* [ADD] sql-injection: Add new check to avoid sql injection (#29)
* [FIX] missing-newline-extrafiles: Fix 'IOError: [Errno 22] Invalid argument' by files of size 2 (#37)
* [REF] README: Add new checks
* [ADD] method-param: Check param method starts with "_param_" (#33)
Release History

Release History

1.6.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.5.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.4.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.3.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.3.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.3.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.3.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.3.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.3.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.1.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
pylint-odoo-1.6.0.tar.gz (47.2 kB) Copy SHA256 Checksum SHA256 Source Feb 7, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting