Pylint Documentation Release 2.6.2

Total Page:16

File Type:pdf, Size:1020Kb

Pylint Documentation Release 2.6.2 Pylint Documentation Release 2.6.2 Logilab, PyCQA and contributors Feb 16, 2021 Contents 1 Introduction 3 1.1 What is Pylint?..............................................3 1.2 What Pylint is not?............................................3 2 Tutorial 5 2.1 Intro...................................................5 2.2 Getting Started..............................................5 2.3 Your First Pylint’ing...........................................6 2.4 The Next Step..............................................8 3 User Guide 11 3.1 Installation................................................ 11 3.2 Running Pylint.............................................. 11 3.3 Pylint output............................................... 14 3.4 Messages control............................................. 16 3.5 Configuration............................................... 19 3.6 Editor and IDE integration........................................ 21 4 How To Guides 27 4.1 How to Write a Checker......................................... 27 4.2 How To Write a Pylint Plugin...................................... 31 4.3 Transform plugins............................................ 32 5 Technical Reference 35 5.1 Startup and the Linter Class....................................... 35 5.2 Checkers................................................. 35 5.3 Optional Pylint checkers in the extensions module........................... 35 5.4 Pylint features.............................................. 43 5.5 Pylint and C extensions......................................... 73 6 Development 75 6.1 Contributing............................................... 75 7 Frequently Asked Questions 79 7.1 1. About Pylint.............................................. 79 7.2 2. Installation............................................... 79 7.3 3. Running Pylint............................................. 80 i 7.4 4. Message Control............................................ 81 7.5 5. Classes and Inheritance........................................ 82 7.6 6. Troubleshooting............................................ 82 8 Some projects using Pylint 85 9 Support 87 10 What’s New in Pylint 89 10.1 What’s New in Pylint 2.6......................................... 89 10.2 What’s New in Pylint 2.5......................................... 90 10.3 What’s New in Pylint 2.4......................................... 91 10.4 What’s New in Pylint 2.3......................................... 95 10.5 What’s New in Pylint 2.2......................................... 96 10.6 What’s New in Pylint 2.1......................................... 97 10.7 What’s New in Pylint 2.0......................................... 98 10.8 What’s New In Pylint 1.9........................................ 103 10.9 What’s New In Pylint 1.8........................................ 104 10.10 What’s New In Pylint 1.7........................................ 109 10.11 What’s New In Pylint 1.6........................................ 122 10.12 Pylint’s ChangeLog........................................... 125 Index 191 ii Pylint Documentation, Release 2.6.2 Pylint is a tool that checks for errors in Python code, tries to enforce a coding standard and looks for code smells. It can also look for certain type errors, it can recommend suggestions about how particular blocks can be refactored and can offer you details about the code’s complexity. Contents 1 Pylint Documentation, Release 2.6.2 2 Contents CHAPTER 1 Introduction 1.1 What is Pylint? Pylint is a tool that checks for errors in Python code, tries to enforce a coding standard and looks for code smells. It can also look for certain type errors, it can recommend suggestions about how particular blocks can be refactored and can offer you details about the code’s complexity. Other similar projects would include pychecker (now defunct), pyflakes, flake8, and mypy. The default coding style used by Pylint is close to PEP 8. Pylint will display a number of messages as it analyzes the code and it can also be used for displaying some statistics about the number of warnings and errors found in different files. The messages are classified under various categories such as errors and warnings. Last but not least, the code is given an overall mark, based on the number and severity of the warnings and errors. 1.2 What Pylint is not? What Pylint says is not to be taken as gospel and Pylint isn’t smarter than you are: it may warn you about things that you have conscientiously done. Pylint tries hard to report as few false positives as possible for errors, but it may be too verbose with warnings. That’s for example because it tries to detect things that may be dangerous in a context, but are not in others, or because it checks for some things that you don’t care about. Generally, you shouldn’t expect Pylint to be totally quiet about your code, so don’t necessarily be alarmed if it gives you a hell lot of messages for your project! The best way to tackle pylint’s verboseness is to: • enable or disable the messages or message categories that you want to be activated or not for when pylint is analyzing your code. This can be done easily through a command line flag. For instance, disabling all convention messages is simple as a --disable=C option added to pylint command. • create a custom configuration file, tailored to your needs. You can generate one using pylint’s command --generate-rcfile. 3 Pylint Documentation, Release 2.6.2 4 Chapter 1. Introduction CHAPTER 2 Tutorial Author Robert Kirkpatrick 2.1 Intro Beginner to coding standards? Pylint can be your guide to reveal what’s really going on behind the scenes and help you to become a more aware programmer. Sharing code is a rewarding endeavor. Putting your code out there can be either an act of philanthropy, coming of age, or a basic extension of belief in open source. Whatever the motivation, your good intentions may not have the desired outcome if people find your code hard to use or understand. The Python community has formalized some recommended programming styles to help everyone write code in a common, agreed-upon style that makes the most sense for shared code. This style is captured in PEP 8, the "Style Guide for Python Code". Pylint can be a quick and easy way of seeing if your code has captured the essence of PEP 8 and is therefore friendly to other potential users. Perhaps you’re not ready to share your code but you’d like to learn a bit more about writing better code and don’t know where to start. Pylint can tell you where you may have run astray and point you in the direction to figure out what you have done and how to do better. This tutorial is all about approaching coding standards with little or no knowledge of in-depth programming or the code standards themselves. It’s the equivalent of skipping the manual and jumping right in. My command line prompt for these examples is: robertk01 Desktop$ 2.2 Getting Started Running Pylint with no arguments will invoke the help dialogue and give you an idea of the arguments available to you. Do that now, i.e.: 5 Pylint Documentation, Release 2.6.2 robertk01 Desktop$ pylint ... a bunch of stuff ... A couple of the options that we’ll focus on here are: Commands: --help-msg=<msg-id> --generate-rcfile Messages control: --disable=<msg-ids> Reports: --reports=<y_or_n> --output-format=<format> If you need more detail, you can also ask for an even longer help message, like so: robertk01 Desktop$ pylint --long-help ... Even more stuff ... Pay attention to the last bit of this longer help output. This gives you a hint of what Pylint is going to pick on: Output: Using the default text output, the message format is : MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE There are5 kind of message types : * (C) convention, for programming standard violation * (R) refactor, for bad code smell * (W) warning, for python specific problems * (E) error, for probable bugs in the code * (F) fatal, if an error occurred which prevented pylint from doing further processing. When Pylint is first run on a fresh piece of code, a common complaint is that it is too noisy. The current default configuration is set to enforce all possible warnings. We’ll use some of the options I noted above to make it suit your preferences a bit better (and thus make it emit messages only when needed). 2.3 Your First Pylint’ing We’ll use a basic Python script as fodder for our tutorial. The starting code we will use is called simplecaesar.py and is here in its entirety: 1 #!/usr/bin/env python3 2 3 import string 4 5 shift=3 6 choice= input("would you like to encode or decode?") 7 word= input("Please enter text") 8 letters= string.ascii_letters+ string.punctuation+ string.digits 9 encoded='' 10 if choice =="encode": (continues on next page) 6 Chapter 2. Tutorial Pylint Documentation, Release 2.6.2 (continued from previous page) 11 for letter in word: 12 if letter =='': 13 encoded= encoded+'' 14 else: 15x= letters.index(letter)+ shift 16 encoded=encoded+ letters[x] 17 if choice =="decode": 18 for letter in word: 19 if letter =='': 20 encoded= encoded+'' 21 else: 22x= letters.index(letter)- shift 23 encoded= encoded+ letters[x] 24 25 print(encoded) Let’s get started. If we run this: robertk01 Desktop$ pylint simplecaesar.py ************* Module simplecaesar simplecaesar.py:16:19: C0326: Exactly one space required around assignment encoded=encoded + letters[x] ^ (bad-whitespace) simplecaesar.py:1:0: C0111: Missing module docstring (missing-docstring) simplecaesar.py:5:0: C0103: Constant name "shift" doesn't conform to UPPER_CASE ,!naming style
Recommended publications
  • Python for Bioinformatics, Second Edition
    PYTHON FOR BIOINFORMATICS SECOND EDITION CHAPMAN & HALL/CRC Mathematical and Computational Biology Series Aims and scope: This series aims to capture new developments and summarize what is known over the entire spectrum of mathematical and computational biology and medicine. It seeks to encourage the integration of mathematical, statistical, and computational methods into biology by publishing a broad range of textbooks, reference works, and handbooks. The titles included in the series are meant to appeal to students, researchers, and professionals in the mathematical, statistical and computational sciences, fundamental biology and bioengineering, as well as interdisciplinary researchers involved in the field. The inclusion of concrete examples and applications, and programming techniques and examples, is highly encouraged. Series Editors N. F. Britton Department of Mathematical Sciences University of Bath Xihong Lin Department of Biostatistics Harvard University Nicola Mulder University of Cape Town South Africa Maria Victoria Schneider European Bioinformatics Institute Mona Singh Department of Computer Science Princeton University Anna Tramontano Department of Physics University of Rome La Sapienza Proposals for the series should be submitted to one of the series editors above or directly to: CRC Press, Taylor & Francis Group 3 Park Square, Milton Park Abingdon, Oxfordshire OX14 4RN UK Published Titles An Introduction to Systems Biology: Statistical Methods for QTL Mapping Design Principles of Biological Circuits Zehua Chen Uri Alon
    [Show full text]
  • Python Guide Documentation 0.0.1
    Python Guide Documentation 0.0.1 Kenneth Reitz 2015 11 07 Contents 1 3 1.1......................................................3 1.2 Python..................................................5 1.3 Mac OS XPython.............................................5 1.4 WindowsPython.............................................6 1.5 LinuxPython...............................................8 2 9 2.1......................................................9 2.2...................................................... 15 2.3...................................................... 24 2.4...................................................... 25 2.5...................................................... 27 2.6 Logging.................................................. 31 2.7...................................................... 34 2.8...................................................... 37 3 / 39 3.1...................................................... 39 3.2 Web................................................... 40 3.3 HTML.................................................. 47 3.4...................................................... 48 3.5 GUI.................................................... 49 3.6...................................................... 51 3.7...................................................... 52 3.8...................................................... 53 3.9...................................................... 58 3.10...................................................... 59 3.11...................................................... 62
    [Show full text]
  • Python Guide Documentation Publicación 0.0.1
    Python Guide Documentation Publicación 0.0.1 Kenneth Reitz 17 de May de 2018 Índice general 1. Empezando con Python 3 1.1. Eligiendo un Interprete Python (3 vs. 2).................................3 1.2. Instalando Python Correctamente....................................5 1.3. Instalando Python 3 en Mac OS X....................................6 1.4. Instalando Python 3 en Windows....................................8 1.5. Instalando Python 3 en Linux......................................9 1.6. Installing Python 2 on Mac OS X.................................... 10 1.7. Instalando Python 2 en Windows.................................... 12 1.8. Installing Python 2 on Linux....................................... 13 1.9. Pipenv & Ambientes Virtuales...................................... 14 1.10. Un nivel más bajo: virtualenv...................................... 17 2. Ambientes de Desarrollo de Python 21 2.1. Your Development Environment..................................... 21 2.2. Further Configuration of Pip and Virtualenv............................... 26 3. Escribiendo Buen Código Python 29 3.1. Estructurando tu Proyecto........................................ 29 3.2. Code Style................................................ 40 3.3. Reading Great Code........................................... 49 3.4. Documentation.............................................. 50 3.5. Testing Your Code............................................ 53 3.6. Logging.................................................. 57 3.7. Common Gotchas...........................................
    [Show full text]
  • Python Guide Documentation 0.0.1
    Python Guide Documentation 0.0.1 Kenneth Reitz 2015 09 13 Contents 1 Getting Started 3 1.1 Picking an Interpreter..........................................3 1.2 Installing Python on Mac OS X.....................................5 1.3 Installing Python on Windows......................................6 1.4 Installing Python on Linux........................................7 2 Writing Great Code 9 2.1 Structuring Your Project.........................................9 2.2 Code Style................................................ 15 2.3 Reading Great Code........................................... 24 2.4 Documentation.............................................. 24 2.5 Testing Your Code............................................ 26 2.6 Common Gotchas............................................ 30 2.7 Choosing a License............................................ 33 3 Scenario Guide 35 3.1 Network Applications.......................................... 35 3.2 Web Applications............................................ 36 3.3 HTML Scraping............................................. 41 3.4 Command Line Applications....................................... 42 3.5 GUI Applications............................................. 43 3.6 Databases................................................. 45 3.7 Networking................................................ 45 3.8 Systems Administration......................................... 46 3.9 Continuous Integration.......................................... 49 3.10 Speed..................................................
    [Show full text]
  • Python Frequently Asked Questions Release 3.9.7
    Python Frequently Asked Questions Release 3.9.7 Guido van Rossum and the Python development team August 30, 2021 Python Software Foundation Email: [email protected] CONTENTS 1 General Python FAQ 1 1.1 General Information ......................................... 1 1.1.1 What is Python? ....................................... 1 1.1.2 What is the Python Software Foundation? ......................... 1 1.1.3 Are there copyright restrictions on the use of Python? ................... 1 1.1.4 Why was Python created in the first place? ......................... 2 1.1.5 What is Python good for? .................................. 2 1.1.6 How does the Python version numbering scheme work? .................. 2 1.1.7 How do I obtain a copy of the Python source? ....................... 3 1.1.8 How do I get documentation on Python? .......................... 3 1.1.9 I’ve never programmed before. Is there a Python tutorial? ................. 3 1.1.10 Is there a newsgroup or mailing list devoted to Python? ................... 3 1.1.11 How do I get a beta test version of Python? ......................... 3 1.1.12 How do I submit bug reports and patches for Python? ................... 4 1.1.13 Are there any published articles about Python that I can reference? ............. 4 1.1.14 Are there any books on Python? ............................... 4 1.1.15 Where in the world is www.python.org located? ...................... 4 1.1.16 Why is it called Python? ................................... 4 1.1.17 Do I have to like “Monty Python’s Flying Circus”? ..................... 4 1.2 Python in the real world ....................................... 4 1.2.1 How stable is Python? .................................... 4 1.2.2 How many people are using Python? ...........................
    [Show full text]
  • Flycheck Release 32-Cvs
    Flycheck Release 32-cvs Aug 25, 2021 Contents 1 Try out 3 2 The User Guide 5 2.1 Installation................................................5 2.2 Quickstart................................................7 2.3 Troubleshooting.............................................8 2.4 Check buffers............................................... 12 2.5 Syntax checkers............................................. 14 2.6 See errors in buffers........................................... 18 2.7 List all errors............................................... 22 2.8 Interact with errors............................................ 24 2.9 Flycheck versus Flymake........................................ 27 3 The Community Guide 33 3.1 Flycheck Code of Conduct........................................ 33 3.2 Recommended extensions........................................ 34 3.3 Get help................................................. 37 3.4 People.................................................. 37 4 The Developer Guide 45 4.1 Developer’s Guide............................................ 45 5 The Contributor Guide 51 5.1 Contributor’s Guide........................................... 51 5.2 Style Guide................................................ 54 5.3 Maintainer’s Guide............................................ 57 6 Indices and Tables 63 6.1 Supported Languages.......................................... 63 6.2 Glossary................................................. 85 6.3 Changes................................................. 85 7 Licensing 93 7.1 Flycheck
    [Show full text]
  • Pylint Documentation Release 2.7.3
    Pylint Documentation Release 2.7.3 Logilab, PyCQA and contributors Mar 29, 2021 Contents 1 Introduction 3 1.1 What is Pylint?..............................................3 1.2 What Pylint is not?............................................3 2 Tutorial 5 2.1 Intro...................................................5 2.2 Getting Started..............................................5 2.3 Your First Pylint’ing...........................................6 2.4 The Next Step..............................................8 3 User Guide 11 3.1 Installation................................................ 11 3.2 Running Pylint.............................................. 11 3.3 Pylint output............................................... 14 3.4 Messages control............................................. 16 3.5 Configuration............................................... 19 3.6 Editor and IDE integration........................................ 21 4 How To Guides 27 4.1 How to Write a Checker......................................... 27 4.2 How To Write a Pylint Plugin...................................... 31 4.3 Transform plugins............................................ 32 5 Technical Reference 35 5.1 Startup and the Linter Class....................................... 35 5.2 Checkers................................................. 35 5.3 Optional Pylint checkers in the extensions module........................... 35 5.4 Pylint features.............................................. 43 5.5 Pylint and C extensions........................................
    [Show full text]
  • Python: Getting Started Ben Ramseth [email protected] @Esrimapninja E M E R a L D
    Python: Getting Started Ben Ramseth [email protected] @esriMapNinja E M E R A L D SAPPHIRE THANK YOU TO OUR SPONSORS Topics covered • What’s is python? • Why use python? • Basics of python • ArcPy • Geoprocessing tools • Other python options What is Python? What is Python? • Python is an interpreted, object-oriented, high-level programming . • Python's simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance. • Python supports modules and packages, which encourages program modularity and code reuse. • Scripting language of ArcGIS • Free, cross-platform, easy to learn, widely useful, great community Why use Python? Why use Python with ArcGIS • Automate repetitive tasks • Develop custom tools • Add geoprocessing to web applications • Customize Desktop apps • Extend the capabilities of ArcGIS Basics of Python Where do I write Python scripts? • Python file is text with .py extension • Python window in ArcGIS • Best to use IDE - Integrated Development Environment Python in an IDE GIS from the comfort of your development environment • Integrated Development Environments - Debuggers - Test Frameworks - Coverage - PyLint/pycodestyle - Version Control Integration - Refactoring Tools - Virtual Environment Support - AutoComplete Python in an IDE GIS from the comfort of your development environment • Recommended IDEs - PyCharm - Python Tools for Visual Studio - Spyder - Eclipse with PyDev - Wingware Python basics • Variable - A name that stores a value; assigned using = • Logic for testing conditions
    [Show full text]
  • Python Frequently Asked Questions Release 2.7.6
    Python Frequently Asked Questions Release 2.7.6 Guido van Rossum Fred L. Drake, Jr., editor November 10, 2013 Python Software Foundation Email: [email protected] CONTENTS 1 General Python FAQ 1 1.1 General Information.........................................1 1.2 Python in the real world.......................................4 1.3 Upgrading Python..........................................6 2 Programming FAQ 9 2.1 General Questions..........................................9 2.2 Core Language............................................ 12 2.3 Numbers and strings......................................... 19 2.4 Sequences (Tuples/Lists)....................................... 23 2.5 Dictionaries.............................................. 26 2.6 Objects................................................ 28 2.7 Modules............................................... 32 3 Design and History FAQ 35 3.1 Why does Python use indentation for grouping of statements?................... 35 3.2 Why am I getting strange results with simple arithmetic operations?................ 35 3.3 Why are floating point calculations so inaccurate?......................... 35 3.4 Why are Python strings immutable?................................. 36 3.5 Why must ‘self’ be used explicitly in method definitions and calls?................ 36 3.6 Why can’t I use an assignment in an expression?.......................... 37 3.7 Why does Python use methods for some functionality (e.g. list.index()) but functions for other (e.g. len(list))?...........................................
    [Show full text]
  • Evaluating Static Source Code Analysis Tools Thomas Hofer
    Evaluating Static Source Code Analysis Tools by Thomas Hofer B.S., Ecole´ Polytechnique F´ed´eralede Lausanne (2007) Submitted to the School of Computer and Communications Science in partial fulfillment of the requirements for the degree of Master of Science in Computer Science at the Ecole´ Polytechnique Fed´ erale´ de Lausanne April 2010 c Thomas Hofer, MMX. All rights reserved. The author hereby grants to EPFL and CERN permission to reproduce and distribute publicly paper and electronic copies of this thesis document in whole or in part. Author............................................................................ School of Computer and Communications Science March 12, 2010 Evaluating Static Source Code Analysis Tools by Thomas Hofer Submitted to the School of Computer and Communications Science on March 12, 2010, in partial fulfillment of the requirements for the degree of Master of Science in Computer Science Abstract This thesis presents the results of an evaluation of source code analyzers. Such tools constitute an inexpensive, efficient and fast way of removing the most common vulnerabilities in a software project, even though not all security flaws can be detected. This evaluation was conducted at CERN, the European Organization for Nuclear Research, in the intent of providing its programmers with a list of dedicated software verification/static source code analysis tools. Particular focus of these tools should be on efficiently finding security flaws. The evaluation covered close to thirty different tools for five major programming languages. Thesis Supervisor: Philippe Oechslin Title: Lecturer Thesis Supervisor: Sebastian Lopienski Title: Deputy Computer Security Officer at CERN Thesis Supervisor: Stefan Lueders Title: Computer Security Officer at CERN Acknowledgments I feel particularly grateful to the supervisor with whom I shared offices, Sebastian Lopienski, for his many insightful comments over the months, for his friendly guidance and for his enthusiasm.
    [Show full text]
  • Guide to Developing Software for the EELT
    European Organisation for Astronomical Research in the Southern Hemisphere Programme: E-ELT Project/WP: E-ELT Telescope Control Guide to Developing Software for the EELT Document Number: ESO-288431 Document Version: 3 Document Type: Manual (MAN) Released On: 2019-05-22 Document Classification: ESO Internal [Confidential for Non-ESO Staff] Owner: Pellegrin, Federico Validated by PA/QA: Kurlandczyk, Hervé Validated by WPM: Kornweibel, Nick Approved by PM: Kornweibel, Nick Name European Southern Observatory Karl-Schwarzschild-Straße 2 www.eso.org Headquarters Garching 85748 Garching bei München Doc. Number: ESO-288431 Doc. Version: 3 Guide to Developing Software for the EELT Released on: 2019-05-22 Page: 2 of 32 Authors Name Affiliation F. Pellegrin ESO S. Feyrin ESO Change Record from previous Version Affected Changes / Reason / Remarks Section(s) All Updates for new release of ELT DEV 3.1 New directory structure based on RootAreas.docx 03/04/2018 3.8 Added wtools documentation 3.2-3.3 Added lmod documentation Document Classification: ESO Internal [Confidential for Non-ESO Staff] Doc. Number: ESO-288431 Doc. Version: 3 Guide to Developing Software for the EELT Released on: 2019-05-22 Page: 3 of 32 Contents 1. Introduction ....................................................................................................................... 5 1.1 Scope ......................................................................................................................... 5 1.2 Definitions and Conventions .....................................................................................
    [Show full text]
  • Pylint-2.1.0
    Pylint Documentation Release 2.1.0 Logilab, PyCQA and contributors Mar 05, 2019 Contents 1 Introduction 1 1.1 What is Pylint?..............................................1 1.2 What Pylint is not?............................................1 2 Tutorial 3 2.1 Intro...................................................3 2.2 Getting Started..............................................3 2.3 Your First Pylint’ing...........................................4 2.4 The Next Step..............................................7 3 User Guide 11 3.1 Installation................................................ 11 3.2 Running Pylint.............................................. 11 3.3 Pylint output............................................... 14 3.4 Messages control............................................. 16 3.5 Configuration............................................... 17 3.6 Editor and IDE integration........................................ 20 4 How To Guides 25 4.1 How to Write a Checker......................................... 25 4.2 How To Write a Pylint Plugin...................................... 29 4.3 Transform plugins............................................ 30 5 Technical Reference 33 5.1 Startup and the Linter Class....................................... 33 5.2 Checkers................................................. 33 5.3 Optional Pylint checkers in the extensions module........................... 33 5.4 Pylint features.............................................. 40 5.5 Pylint and C extensions........................................
    [Show full text]