This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

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
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
W8201 Incoherent interpreter comment and executable permission. Interpreter: [%s] Exec perm: %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

CHANGES

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)
  • [FIX] join_node_args_kwargs: AttributeError (#30)
  • [REF] duplicate-id-csv: Better message of error - Message before: Duplicate id id_example1 in ir.model.access.csv file - Message now: security/ir.model.access.csv duplicated id id_example1
  • [REF] javascript-lint: Ignore /lib/ subfolder
  • [ADD] invalid-commit: Add new check invalid-commit - Verify the guideline https://github.com/oca/maintainer-tools/blob/master/CONTRIBUTING.md#never-commit-the-transaction

1.2.0

  • [REF] README.rst: Updating new checks
  • [IMP] test: Add tox for multi-environment and add compatiblity with latest version
  • [ADD] translation-required: Add check to required even a translation (#23)
  • [IMP] Add pylint check missing newline in extra extension files
  • [IMP] test: Add tox for multi-environment and add compatiblity with latest version
  • [IMP] Add Check tabs identation instead of four spaces
  • better_msg
  • merge
  • [REF] test: better way to identify check error expected
  • [IMP] Add check Duplicate field in xml record (#20)
  • [IMP] Add pylint check Redundant module name reference in xml_id
  • [IMP] pylint_odoo: Add check duplicate ids in ir.model.access.csv files
  • [IMP] pylint_odoo: Add check for manifest-version-format
  • [FIX] OCA/MQT#302: Use of astroid version 1.3.8

1.1.0

  • [FIX] setup: Build ChangeLog file
  • [ADD] Add check ‘deprecated-openerp-xml-node’
  • [ADD] ChangeLog: Empty file to support auto build
  • [FIX] Change _fields by _columns
  • [REF] Fix typo
  • [IMP] Add check ‘create-user-without-reset-password’
  • [IMP] Support odoo tag in xml file
  • [REF] Support of ‘noupdate’ in check ‘duplicate-xml-record-id’
  • [REF] setup.cfg: Enable ChangeLog
  • [REF] README: Add new message manifest-author-string

1.0.2

  • check that author is a string

1.0.1

  • [REF] Migrate md to rst

1.0.0

  • [IMP] .travis.yml: Enable auto deploy of pypi package from travis
  • [ADD] pylint_odoo: Add main package
  • [ADD] .gitignore: Add file gitignore for first commit
Release History

Release History

1.4.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.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

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
pylint-odoo-1.4.0.tar.gz (37.3 kB) Copy SHA256 Checksum SHA256 Source Dec 2, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development 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