Hello community,

here is the log from the commit of package python-flake8-debugger for 
openSUSE:Leap:15.2 checked in at 2020-04-20 12:55:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-flake8-debugger (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.python-flake8-debugger.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-flake8-debugger"

Mon Apr 20 12:55:28 2020 rev:2 rq:795490 version:3.2.1

Changes:
--------
--- 
/work/SRC/openSUSE:Leap:15.2/python-flake8-debugger/python-flake8-debugger.changes
  2020-02-21 10:50:55.259113992 +0100
+++ 
/work/SRC/openSUSE:Leap:15.2/.python-flake8-debugger.new.2738/python-flake8-debugger.changes
        2020-04-20 12:55:44.780752741 +0200
@@ -1,0 +2,6 @@
+Thu Apr 16 10:43:35 UTC 2020 - Tomáš Chvátal <[email protected]>
+
+- Update to 3.2.1:
+  * no changelog
+
+-------------------------------------------------------------------

Old:
----
  flake8-debugger-3.1.0.tar.gz

New:
----
  3.2.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-flake8-debugger.spec ++++++
--- /var/tmp/diff_new_pack.RjzsUJ/_old  2020-04-20 12:55:45.212753419 +0200
+++ /var/tmp/diff_new_pack.RjzsUJ/_new  2020-04-20 12:55:45.216753425 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-flake8-debugger
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,25 +18,22 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-flake8-debugger
-Version:        3.1.0
+Version:        3.2.1
 Release:        0
 Summary:        ipdb/pdb statement checker plugin for flake8
 License:        MIT
-Group:          Development/Languages/Python
-Url:            https://github.com/jbkahn/flake8-debugger
-Source:         
https://files.pythonhosted.org/packages/source/f/flake8-debugger/flake8-debugger-%{version}.tar.gz
+URL:            https://github.com/jbkahn/flake8-debugger
+Source:         
https://github.com/JBKahn/flake8-debugger/archive/%{version}.tar.gz
 Source1:        LICENSE
-BuildRequires:  %{python_module pytest-runner}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
+BuildArch:      noarch
 # SECTION test requirements
 BuildRequires:  %{python_module flake8 >= 1.5}
 BuildRequires:  %{python_module pycodestyle}
 BuildRequires:  %{python_module pytest}
 # /SECTION
-BuildRequires:  fdupes
-BuildArch:      noarch
-
 %python_subpackages
 
 %description
@@ -44,7 +41,8 @@
 
 %prep
 %setup -q -n flake8-debugger-%{version}
-cp %{SOURCE1} LICENSE
+cp %{SOURCE1} .
+sed -i -e '/pytest-runner/d' setup.py
 
 %build
 %python_build
@@ -53,8 +51,11 @@
 %python_install
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
+%check
+%pytest
+
 %files %{python_files}
-%doc README.rst
+%doc README.md
 %license LICENSE
 %{python_sitelib}/*
 

++++++ flake8-debugger-3.1.0.tar.gz -> 3.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/.gitignore 
new/flake8-debugger-3.2.1/.gitignore
--- old/flake8-debugger-3.1.0/.gitignore        1970-01-01 01:00:00.000000000 
+0100
+++ new/flake8-debugger-3.2.1/.gitignore        2019-11-01 02:31:48.000000000 
+0100
@@ -0,0 +1,4 @@
+*.egg-info
+*.pyc
+dist
+.mypy_cache
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/.travis.yml 
new/flake8-debugger-3.2.1/.travis.yml
--- old/flake8-debugger-3.1.0/.travis.yml       1970-01-01 01:00:00.000000000 
+0100
+++ new/flake8-debugger-3.2.1/.travis.yml       2019-11-01 02:31:48.000000000 
+0100
@@ -0,0 +1,18 @@
+language: python
+python:
+  - "2.7"
+  - "3.6"
+  - "3.7"
+
+env:
+  matrix:
+    - FLAKE8_VERSION=""
+    - FLAKE8_VERSION="2.1"
+    - FLAKE8_VERSION="3.2.1"
+
+install:
+  - pip install pycodestyle
+  - if [[ -n "$FLAKE8_VERSION" ]]; then pip install flake8=="$FLAKE8_VERSION"; 
fi
+  - python setup.py install
+script:
+  - pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/PKG-INFO 
new/flake8-debugger-3.2.1/PKG-INFO
--- old/flake8-debugger-3.1.0/PKG-INFO  2018-02-11 18:21:27.000000000 +0100
+++ new/flake8-debugger-3.2.1/PKG-INFO  1970-01-01 01:00:00.000000000 +0100
@@ -1,100 +0,0 @@
-Metadata-Version: 1.1
-Name: flake8-debugger
-Version: 3.1.0
-Summary: ipdb/pdb statement checker plugin for flake8
-Home-page: https://github.com/jbkahn/flake8-debugger
-Author: Joseph Kahn
-Author-email: [email protected]
-License: MIT
-Description-Content-Type: UNKNOWN
-Description: Flake8 debugger plugin
-        ==================
-        
-        Check for pdb;idbp imports and set traces, as well as `from 
IPython.terminal.embed import InteractiveShellEmbed` and 
`InteractiveShellEmbed()()`.
-        
-        This module provides a plugin for ``flake8``, the Python code checker.
-        
-        
-        Installation
-        ------------
-        
-        You can install or upgrade ``flake8-debugger`` with these commands::
-        
-          $ pip install flake8-debugger
-          $ pip install --upgrade flake8-debugger
-        
-        
-        Plugin for Flake8
-        -----------------
-        
-        When both ``flake8 2.2`` and ``flake8-debugger`` are installed, the 
plugin is
-        available in ``flake8``::
-        
-            $ flake8 --version
-            2.0 (pep8: 1.4.5, flake8-debugger: 1.0, pyflakes: 0.6.1)
-        
-        
-        Changes
-        -------
-        
-        3.1.0 - 2018-02-11
-        ``````````````````
-        * Add a framework classifier for use in pypi.org
-        * Fix entry_point in setup.py leaving it off by default again
-        * Detect __import__ debugger statements
-        * Add support for `pudb` detection
-        
-        3.0.0 - 2017-05-11
-        ````````````````
-        * fix the refactor of the detector in 2.0.0 that was removed from pypi.
-        * fix a flake8 issue that had it turned off by default.
-        
-        
-        2.0.0 - 2016-09-19
-        ````````````````
-        * refactor detector
-        * drop official support for python 2.6 and 3.3
-        
-        
-        1.4.0 - 2015-05-18
-        ````````````````
-        * refactor detector, run tests in python 2.6, 2.7 and 3.4 as well as 
adding a check for InteractiveShellEmbed.
-        
-        1.3.2 - 2014-11-04
-        ````````````````
-        * more tests, fix edge case and debugger identification.
-        
-        1.3.1 - 2014-11-04
-        ````````````````
-        * more tests, a little refactoring and improvements in catching.
-        
-        1.3 - 2014-11-04
-        ````````````````
-        * using ast instead of regular expressions
-        
-        1.2 - 2014-06-30
-        ````````````````
-        * Added a few simple tests
-        
-        1.1 - 2014-06-30
-        ````````````````
-        * First release
-        
-        1.0 - 2014-06-30
-        ````````````````
-        * Whoops
-        
-Keywords: flake8 debugger ipdb pdb
-Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
-Classifier: Environment :: Console
-Classifier: Framework :: Flake8
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: Software Development :: Quality Assurance
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/README.md 
new/flake8-debugger-3.2.1/README.md
--- old/flake8-debugger-3.1.0/README.md 1970-01-01 01:00:00.000000000 +0100
+++ new/flake8-debugger-3.2.1/README.md 2019-11-01 02:31:48.000000000 +0100
@@ -0,0 +1,81 @@
+Flake8 debugger plugin
+======================
+
+Check for pdb;idbp imports and set traces, as well as `from 
IPython.terminal.embed import InteractiveShellEmbed` and 
`InteractiveShellEmbed()()`.
+
+This module provides a plugin for ``flake8``, the Python code checker.
+
+
+Installation
+------------
+
+You can install or upgrade ``flake8-debugger`` with these commands::
+
+  $ pip install flake8-debugger
+  $ pip install --upgrade flake8-debugger
+
+
+Plugin for Flake8
+-----------------
+
+When both ``flake8 2.2`` and ``flake8-debugger`` are installed, the plugin is
+available in ``flake8``::
+
+    $ flake8 --version
+    2.0 (pep8: 1.4.5, flake8-debugger: 1.0, pyflakes: 0.6.1)
+
+
+Changes
+-------
+
+##### 3.2.1 - 2019-10-31
+
+* Swapped back from poetry to setup.py :(....python ecosystem issues....
+
+##### 3.2.0 - 2019-10-15
+
+* Forgot to add `breakpoint` support to the last changelog entry as well as 
fixing a bug introduced into that version that flagged `import builtins` as 
noteworthy.
+
+
+##### 3.1.1 - 2019-10-12
+
+* Fix reading from stdin when it is closed (requires flake8 > 2.1).
+* Swapped to poetry from setup.py
+* Ran black on the repository
+
+##### 3.1.0 - 2018-02-11
+* Add a framework classifier for use in pypi.org
+* Fix entry_point in setup.py leaving it off by default again
+* Detect __import__ debugger statements
+* Add support for `pudb` detection
+
+##### 3.0.0 - 2017-05-11
+* fix the refactor of the detector in 2.0.0 that was removed from pypi.
+* fix a flake8 issue that had it turned off by default.
+
+
+##### 2.0.0 - 2016-09-19
+* refactor detector
+* drop official support for python 2.6 and 3.3
+
+
+##### 1.4.0 - 2015-05-18
+* refactor detector, run tests in python 2.6, 2.7 and 3.4 as well as adding a 
check for InteractiveShellEmbed.
+
+##### 1.3.2 - 2014-11-04
+* more tests, fix edge case and debugger identification.
+
+##### 1.3.1 - 2014-11-04
+* more tests, a little refactoring and improvements in catching.
+
+##### 1.3 - 2014-11-04
+* using ast instead of regular expressions
+
+##### 1.2 - 2014-06-30
+* Added a few simple tests
+
+##### 1.1 - 2014-06-30
+* First release
+
+##### 1.0 - 2014-06-30
+* Whoops
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/README.rst 
new/flake8-debugger-3.2.1/README.rst
--- old/flake8-debugger-3.1.0/README.rst        2018-02-11 18:21:19.000000000 
+0100
+++ new/flake8-debugger-3.2.1/README.rst        1970-01-01 01:00:00.000000000 
+0100
@@ -1,76 +0,0 @@
-Flake8 debugger plugin
-==================
-
-Check for pdb;idbp imports and set traces, as well as `from 
IPython.terminal.embed import InteractiveShellEmbed` and 
`InteractiveShellEmbed()()`.
-
-This module provides a plugin for ``flake8``, the Python code checker.
-
-
-Installation
-------------
-
-You can install or upgrade ``flake8-debugger`` with these commands::
-
-  $ pip install flake8-debugger
-  $ pip install --upgrade flake8-debugger
-
-
-Plugin for Flake8
------------------
-
-When both ``flake8 2.2`` and ``flake8-debugger`` are installed, the plugin is
-available in ``flake8``::
-
-    $ flake8 --version
-    2.0 (pep8: 1.4.5, flake8-debugger: 1.0, pyflakes: 0.6.1)
-
-
-Changes
--------
-
-3.1.0 - 2018-02-11
-``````````````````
-* Add a framework classifier for use in pypi.org
-* Fix entry_point in setup.py leaving it off by default again
-* Detect __import__ debugger statements
-* Add support for `pudb` detection
-
-3.0.0 - 2017-05-11
-````````````````
-* fix the refactor of the detector in 2.0.0 that was removed from pypi.
-* fix a flake8 issue that had it turned off by default.
-
-
-2.0.0 - 2016-09-19
-````````````````
-* refactor detector
-* drop official support for python 2.6 and 3.3
-
-
-1.4.0 - 2015-05-18
-````````````````
-* refactor detector, run tests in python 2.6, 2.7 and 3.4 as well as adding a 
check for InteractiveShellEmbed.
-
-1.3.2 - 2014-11-04
-````````````````
-* more tests, fix edge case and debugger identification.
-
-1.3.1 - 2014-11-04
-````````````````
-* more tests, a little refactoring and improvements in catching.
-
-1.3 - 2014-11-04
-````````````````
-* using ast instead of regular expressions
-
-1.2 - 2014-06-30
-````````````````
-* Added a few simple tests
-
-1.1 - 2014-06-30
-````````````````
-* First release
-
-1.0 - 2014-06-30
-````````````````
-* Whoops
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/flake8-debugger-3.1.0/flake8_debugger.egg-info/PKG-INFO 
new/flake8-debugger-3.2.1/flake8_debugger.egg-info/PKG-INFO
--- old/flake8-debugger-3.1.0/flake8_debugger.egg-info/PKG-INFO 2018-02-11 
18:21:27.000000000 +0100
+++ new/flake8-debugger-3.2.1/flake8_debugger.egg-info/PKG-INFO 1970-01-01 
01:00:00.000000000 +0100
@@ -1,100 +0,0 @@
-Metadata-Version: 1.1
-Name: flake8-debugger
-Version: 3.1.0
-Summary: ipdb/pdb statement checker plugin for flake8
-Home-page: https://github.com/jbkahn/flake8-debugger
-Author: Joseph Kahn
-Author-email: [email protected]
-License: MIT
-Description-Content-Type: UNKNOWN
-Description: Flake8 debugger plugin
-        ==================
-        
-        Check for pdb;idbp imports and set traces, as well as `from 
IPython.terminal.embed import InteractiveShellEmbed` and 
`InteractiveShellEmbed()()`.
-        
-        This module provides a plugin for ``flake8``, the Python code checker.
-        
-        
-        Installation
-        ------------
-        
-        You can install or upgrade ``flake8-debugger`` with these commands::
-        
-          $ pip install flake8-debugger
-          $ pip install --upgrade flake8-debugger
-        
-        
-        Plugin for Flake8
-        -----------------
-        
-        When both ``flake8 2.2`` and ``flake8-debugger`` are installed, the 
plugin is
-        available in ``flake8``::
-        
-            $ flake8 --version
-            2.0 (pep8: 1.4.5, flake8-debugger: 1.0, pyflakes: 0.6.1)
-        
-        
-        Changes
-        -------
-        
-        3.1.0 - 2018-02-11
-        ``````````````````
-        * Add a framework classifier for use in pypi.org
-        * Fix entry_point in setup.py leaving it off by default again
-        * Detect __import__ debugger statements
-        * Add support for `pudb` detection
-        
-        3.0.0 - 2017-05-11
-        ````````````````
-        * fix the refactor of the detector in 2.0.0 that was removed from pypi.
-        * fix a flake8 issue that had it turned off by default.
-        
-        
-        2.0.0 - 2016-09-19
-        ````````````````
-        * refactor detector
-        * drop official support for python 2.6 and 3.3
-        
-        
-        1.4.0 - 2015-05-18
-        ````````````````
-        * refactor detector, run tests in python 2.6, 2.7 and 3.4 as well as 
adding a check for InteractiveShellEmbed.
-        
-        1.3.2 - 2014-11-04
-        ````````````````
-        * more tests, fix edge case and debugger identification.
-        
-        1.3.1 - 2014-11-04
-        ````````````````
-        * more tests, a little refactoring and improvements in catching.
-        
-        1.3 - 2014-11-04
-        ````````````````
-        * using ast instead of regular expressions
-        
-        1.2 - 2014-06-30
-        ````````````````
-        * Added a few simple tests
-        
-        1.1 - 2014-06-30
-        ````````````````
-        * First release
-        
-        1.0 - 2014-06-30
-        ````````````````
-        * Whoops
-        
-Keywords: flake8 debugger ipdb pdb
-Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
-Classifier: Environment :: Console
-Classifier: Framework :: Flake8
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: Software Development :: Quality Assurance
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/flake8-debugger-3.1.0/flake8_debugger.egg-info/SOURCES.txt 
new/flake8-debugger-3.2.1/flake8_debugger.egg-info/SOURCES.txt
--- old/flake8-debugger-3.1.0/flake8_debugger.egg-info/SOURCES.txt      
2018-02-11 18:21:27.000000000 +0100
+++ new/flake8-debugger-3.2.1/flake8_debugger.egg-info/SOURCES.txt      
1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-README.rst
-flake8_debugger.py
-setup.cfg
-setup.py
-flake8_debugger.egg-info/PKG-INFO
-flake8_debugger.egg-info/SOURCES.txt
-flake8_debugger.egg-info/dependency_links.txt
-flake8_debugger.egg-info/entry_points.txt
-flake8_debugger.egg-info/not-zip-safe
-flake8_debugger.egg-info/requires.txt
-flake8_debugger.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/flake8-debugger-3.1.0/flake8_debugger.egg-info/dependency_links.txt 
new/flake8-debugger-3.2.1/flake8_debugger.egg-info/dependency_links.txt
--- old/flake8-debugger-3.1.0/flake8_debugger.egg-info/dependency_links.txt     
2018-02-11 18:21:27.000000000 +0100
+++ new/flake8-debugger-3.2.1/flake8_debugger.egg-info/dependency_links.txt     
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/flake8-debugger-3.1.0/flake8_debugger.egg-info/entry_points.txt 
new/flake8-debugger-3.2.1/flake8_debugger.egg-info/entry_points.txt
--- old/flake8-debugger-3.1.0/flake8_debugger.egg-info/entry_points.txt 
2018-02-11 18:21:27.000000000 +0100
+++ new/flake8-debugger-3.2.1/flake8_debugger.egg-info/entry_points.txt 
1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-[flake8.extension]
-T100 = flake8_debugger:DebuggerChecker
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/flake8-debugger-3.1.0/flake8_debugger.egg-info/not-zip-safe 
new/flake8-debugger-3.2.1/flake8_debugger.egg-info/not-zip-safe
--- old/flake8-debugger-3.1.0/flake8_debugger.egg-info/not-zip-safe     
2018-02-11 17:41:50.000000000 +0100
+++ new/flake8-debugger-3.2.1/flake8_debugger.egg-info/not-zip-safe     
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/flake8-debugger-3.1.0/flake8_debugger.egg-info/requires.txt 
new/flake8-debugger-3.2.1/flake8_debugger.egg-info/requires.txt
--- old/flake8-debugger-3.1.0/flake8_debugger.egg-info/requires.txt     
2018-02-11 18:21:27.000000000 +0100
+++ new/flake8-debugger-3.2.1/flake8_debugger.egg-info/requires.txt     
1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-flake8>=1.5
-pycodestyle
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/flake8-debugger-3.1.0/flake8_debugger.egg-info/top_level.txt 
new/flake8-debugger-3.2.1/flake8_debugger.egg-info/top_level.txt
--- old/flake8-debugger-3.1.0/flake8_debugger.egg-info/top_level.txt    
2018-02-11 18:21:27.000000000 +0100
+++ new/flake8-debugger-3.2.1/flake8_debugger.egg-info/top_level.txt    
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-flake8_debugger
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/flake8_debugger.py 
new/flake8-debugger-3.2.1/flake8_debugger.py
--- old/flake8-debugger-3.1.0/flake8_debugger.py        2018-02-11 
18:21:19.000000000 +0100
+++ new/flake8-debugger-3.2.1/flake8_debugger.py        2019-11-01 
02:31:48.000000000 +0100
@@ -1,22 +1,30 @@
 """Extension for flake8 that finds usage of the debugger."""
 import ast
+import sys
 from itertools import chain
 
 import pycodestyle
 
+try:
+    from flake8.engine import pep8 as stdin_utils
+except ImportError:
+    from flake8 import utils as stdin_utils
 
-__version__ = '3.1.0'
+__version__ = "3.2.1"
 
-DEBUGGER_ERROR_CODE = 'T100'
+DEBUGGER_ERROR_CODE = "T100"
 
 debuggers = {
-    'pdb': ['set_trace'],
-    'pudb': ['set_trace'],
-    'ipdb': ['set_trace', 'sset_trace'],
-    'IPython.terminal.embed': ['InteractiveShellEmbed'],
-    'IPython.frontend.terminal.embed': ['InteractiveShellEmbed'],
+    "pdb": ["set_trace"],
+    "pudb": ["set_trace"],
+    "ipdb": ["set_trace", "sset_trace"],
+    "IPython.terminal.embed": ["InteractiveShellEmbed"],
+    "IPython.frontend.terminal.embed": ["InteractiveShellEmbed"],
 }
 
+if sys.version_info >= (3, 7):
+    debuggers["builtins"] = ["breakpoint"]
+
 
 class DebuggerFinder(ast.NodeVisitor):
     def __init__(self, *args, **kwargs):
@@ -30,25 +38,33 @@
         self.debuggers_imported = {}
 
     def visit_Call(self, node):
+        if sys.version_info >= (3, 7) and getattr(node.func, "id", None) == 
"breakpoint":
+            entry = self.debuggers_used.setdefault((node.lineno, 
node.col_offset), [])
+            entry.append("{0} trace found: breakpoint 
used".format(DEBUGGER_ERROR_CODE))
+
         debugger_method_names = 
list(chain(self.debuggers_traces_names.values(), *debuggers.values()))
         is_debugger_function = getattr(node.func, "id", None) in 
debugger_method_names
         if is_debugger_function:
             if node.func.id in self.debuggers_traces_names.values():
-                debugger_method = next(item[0] for item in 
self.debuggers_traces_names.items() if item[1] == node.func.id)
+                debugger_method = next(
+                    item[0] for item in self.debuggers_traces_names.items() if 
item[1] == node.func.id
+                )
                 entry = self.debuggers_used.setdefault((node.lineno, 
node.col_offset), [])
                 if debugger_method == node.func.id:
-                    entry.append('{0} trace found: {1} 
used'.format(DEBUGGER_ERROR_CODE, node.func.id))
+                    entry.append("{0} trace found: {1} 
used".format(DEBUGGER_ERROR_CODE, node.func.id))
                 else:
-                    entry.append('{0} trace found: {1} used as 
{2}'.format(DEBUGGER_ERROR_CODE, debugger_method, node.func.id))
+                    entry.append(
+                        "{0} trace found: {1} used as 
{2}".format(DEBUGGER_ERROR_CODE, debugger_method, node.func.id)
+                    )
 
         is_debugger_attribute = getattr(node.func, "attr", None) in 
debugger_method_names
         if is_debugger_attribute:
             caller = getattr(node.func.value, "id", None)
             entry = self.debuggers_used.setdefault((node.lineno, 
node.col_offset), [])
             if caller in self.debuggers_names.values():
-                entry.append('{0} trace found: {1}.{2} 
used'.format(DEBUGGER_ERROR_CODE, caller, node.func.attr))
+                entry.append("{0} trace found: {1}.{2} 
used".format(DEBUGGER_ERROR_CODE, caller, node.func.attr))
             else:
-                entry.append('{0} trace found: {1} 
used'.format(DEBUGGER_ERROR_CODE, node.func.attr))
+                entry.append("{0} trace found: {1} 
used".format(DEBUGGER_ERROR_CODE, node.func.attr))
         self.generic_visit(node)
 
     def visit_Import(self, node):
@@ -57,11 +73,14 @@
                 if name_node.asname is not None:
                     self.debuggers_names[name_node.name] = name_node.asname
                     entry = self.debuggers_redefined.setdefault((node.lineno, 
node.col_offset), [])
-                    entry.append('{0} import for {1} found as 
{2}'.format(DEBUGGER_ERROR_CODE, name_node.name, name_node.asname))
-                else:
+                    entry.append(
+                        "{0} import for {1} found as 
{2}".format(DEBUGGER_ERROR_CODE, name_node.name, name_node.asname)
+                    )
+                # Unlike the other imports, we don't want to consider all 
builtin imports as worthy of flagging.
+                elif name_node.name != "builtins":
                     self.debuggers_names[name_node.name] = name_node.name
                     entry = self.debuggers_imported.setdefault((node.lineno, 
node.col_offset), [])
-                    entry.append('{0} import for {1} 
found'.format(DEBUGGER_ERROR_CODE, name_node.name))
+                    entry.append("{0} import for {1} 
found".format(DEBUGGER_ERROR_CODE, name_node.name))
 
     def visit_ImportFrom(self, node):
         if node.module in list(debuggers.keys()):
@@ -70,16 +89,20 @@
                     if name_node.asname is not None:
                         self.debuggers_traces_names[name_node.name] = 
name_node.asname
                         entry = 
self.debuggers_traces_redefined.setdefault((node.lineno, node.col_offset), [])
-                        entry.append('{0} import for {1} found as 
{2}'.format(DEBUGGER_ERROR_CODE, name_node.name, name_node.asname))
+                        entry.append(
+                            "{0} import for {1} found as {2}".format(
+                                DEBUGGER_ERROR_CODE, name_node.name, 
name_node.asname
+                            )
+                        )
                     else:
                         self.debuggers_traces_names[name_node.name] = 
name_node.name
                         entry = 
self.debugger_traces_imported.setdefault((node.lineno, node.col_offset), [])
-                        entry.append('{0} import for {1} 
found'.format(DEBUGGER_ERROR_CODE, name_node.name))
+                        entry.append("{0} import for {1} 
found".format(DEBUGGER_ERROR_CODE, name_node.name))
 
 
 class DebuggerChecker(object):
     options = None
-    name = 'flake8-debugger'
+    name = "flake8-debugger"
     version = __version__
 
     def __init__(self, tree, filename):
@@ -90,7 +113,7 @@
     def load_file(self):
         if self.filename in ("stdin", "-", None):
             self.filename = "stdin"
-            self.lines = pycodestyle.stdin_get_value().splitlines(True)
+            self.lines = stdin_utils.stdin_get_value().splitlines(True)
         else:
             self.lines = pycodestyle.readlines(self.filename)
 
@@ -110,10 +133,10 @@
                     yield (error[0], error[1], message, DebuggerChecker)
 
         for error, messages in chain(
-                parser.debuggers_traces_redefined.items(),
-                parser.debugger_traces_imported.items(),
-                parser.debuggers_redefined.items(),
-                parser.debuggers_imported.items(),
+            parser.debuggers_traces_redefined.items(),
+            parser.debugger_traces_imported.items(),
+            parser.debuggers_redefined.items(),
+            parser.debuggers_imported.items(),
         ):
             if error not in parser.debuggers_used:
                 if not pycodestyle.noqa(self.lines[error[0] - 1]):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/pyproject.toml.bak 
new/flake8-debugger-3.2.1/pyproject.toml.bak
--- old/flake8-debugger-3.1.0/pyproject.toml.bak        1970-01-01 
01:00:00.000000000 +0100
+++ new/flake8-debugger-3.2.1/pyproject.toml.bak        2019-11-01 
02:31:48.000000000 +0100
@@ -0,0 +1,76 @@
+[build-system]
+requires = ["poetry==0.12.10"]
+build-backend = "poetry.masonry.api"
+
+[tool.poetry]
+name = "flake8-debugger"
+version = "3.2.0"
+description = "ipdb/pdb statement checker plugin for flake8"
+readme = "README.md"
+
+license = "MIT"
+
+authors = [
+    "Joseph Kahn <[email protected]>"
+]
+
+repository = "https://github.com/jbkahn/flake8-debugger";
+homepage = "https://github.com/jbkahn/flake8-debugger";
+keywords = [
+  "flake8",
+  "plugin",
+  "linting",
+  "debugger",
+  "ipdb",
+  "code quality"
+]
+
+classifiers = [
+  'Development Status :: 3 - Alpha',
+  'Environment :: Console',
+  'Framework :: Flake8',
+  'Intended Audience :: Developers',
+  'License :: OSI Approved :: MIT License',
+  'Operating System :: OS Independent',
+  'Programming Language :: Python',
+  'Programming Language :: Python :: 2',
+  'Programming Language :: Python :: 3',
+  'Topic :: Software Development :: Libraries :: Python Modules',
+  'Topic :: Software Development :: Quality Assurance',
+]
+
+
+include = ["pyproject.toml", "flake8_debugger.py"]
+
+[tool.poetry.plugins."flake8.extension"]
+T100 = "flake8_debugger:DebuggerChecker"
+
+[tool.poetry.dependencies]
+python = "^3.6 || ^3.7 || ^2.7"
+"flake8" = ">=2.1"
+six = "*"
+pycodestyle = "*"
+
+[tool.poetry.dev-dependencies]
+black = { version = "^19.3b0", python = "~3.6 || ~3.7" }
+pytest = "*"
+
+[tool.black]
+line-length = 120
+target-version = ['py36', 'py27']
+include = '\.pyi?$'
+exclude = '''
+/(
+    \.git
+  | \.hg
+  | \.mypy_cache
+  | \.tox
+  | \.venv
+  | venv
+  | _build
+  | buck-out
+  | build
+  | dist
+)/
+'''
+skip-numeric-underscore-normalization = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/setup.cfg 
new/flake8-debugger-3.2.1/setup.cfg
--- old/flake8-debugger-3.1.0/setup.cfg 2018-02-11 18:21:27.000000000 +0100
+++ new/flake8-debugger-3.2.1/setup.cfg 2019-11-01 02:31:48.000000000 +0100
@@ -1,7 +1,2 @@
-[aliases]
-test = pytest
-
-[egg_info]
-tag_build = 
-tag_date = 0
-
+[aliases]      
+test=pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/setup.py 
new/flake8-debugger-3.2.1/setup.py
--- old/flake8-debugger-3.1.0/setup.py  2018-02-11 18:21:19.000000000 +0100
+++ new/flake8-debugger-3.2.1/setup.py  2019-11-01 02:31:48.000000000 +0100
@@ -1,61 +1,62 @@
-# coding: utf-8
+# coding: utf-8        
 
-from __future__ import with_statement
-from setuptools import setup
+from __future__ import with_statement  
+from setuptools import setup   
 
 
-def get_version(fname='flake8_debugger.py'):
-    with open(fname) as f:
-        for line in f:
-            if line.startswith('__version__'):
-                return eval(line.split('=')[-1])
-
-
-def get_long_description():
-    descr = []
-    for fname in ('README.rst',):
-        with open(fname) as f:
-            descr.append(f.read())
-    return '\n\n'.join(descr)
-
-
-install_requires = ['flake8>=1.5', 'pycodestyle']
-
-test_requires = ['pytest', 'flake8>=1.5', 'pycodestyle']
-
-setup(
-    name='flake8-debugger',
-    version=get_version(),
-    description="ipdb/pdb statement checker plugin for flake8",
-    long_description=get_long_description(),
-    keywords='flake8 debugger ipdb pdb',
-    author='Joseph Kahn',
-    author_email='[email protected]',
-    url='https://github.com/jbkahn/flake8-debugger',
-    license='MIT',
-    py_modules=['flake8_debugger'],
-    zip_safe=False,
-    entry_points={
-        'flake8.extension': [
-            'T100 = flake8_debugger:DebuggerChecker',
-        ],
-    },
-    install_requires=install_requires,
-    tests_require=test_requires,
-    setup_requires=['pytest-runner'],
-    test_suite="nose.collector",
-    classifiers=[
-        'Development Status :: 4 - Beta',
-        'Environment :: Console',
-        'Framework :: Flake8',
-        'Intended Audience :: Developers',
-        'License :: OSI Approved :: MIT License',
-        'Operating System :: OS Independent',
-        'Programming Language :: Python',
-        'Topic :: Software Development :: Libraries :: Python Modules',
-        'Topic :: Software Development :: Quality Assurance',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3.4',
-        'Programming Language :: Python :: 3.5',
-    ],
-)
+def get_version(fname='flake8_debugger.py'):   
+    with open(fname) as f:     
+        for line in f: 
+            if line.startswith('__version__'): 
+                return eval(line.split('=')[-1])       
+
+
+def get_long_description():    
+    descr = [] 
+    for fname in ('README.md',):       
+        with open(fname) as f: 
+            descr.append(f.read())     
+    return '\n\n'.join(descr)  
+
+
+install_requires = ['flake8>=1.5', 'pycodestyle']      
+
+test_requires = ['pytest', 'flake8>=1.5', 'pycodestyle']       
+
+setup( 
+    name='flake8-debugger',    
+    version=get_version(),     
+    description="ipdb/pdb statement checker plugin for flake8",        
+    long_description=get_long_description(),   
+    long_description_content_type='text/markdown',
+    keywords='flake8 debugger ipdb pdb',       
+    author='Joseph Kahn',      
+    author_email='[email protected]',      
+    url='https://github.com/jbkahn/flake8-debugger',   
+    license='MIT',     
+    py_modules=['flake8_debugger'],    
+    zip_safe=False,    
+    entry_points={     
+        'flake8.extension': [  
+            'T100 = flake8_debugger:DebuggerChecker',  
+        ],     
+    }, 
+    install_requires=install_requires, 
+    tests_require=test_requires,       
+    setup_requires=['pytest-runner'],  
+    test_suite="nose.collector",       
+    classifiers=[      
+        'Development Status :: 4 - Beta',      
+        'Environment :: Console',      
+        'Framework :: Flake8', 
+        'Intended Audience :: Developers',     
+        'License :: OSI Approved :: MIT License',      
+        'Operating System :: OS Independent',  
+        'Programming Language :: Python',      
+        'Topic :: Software Development :: Libraries :: Python Modules',        
+        'Topic :: Software Development :: Quality Assurance',  
+        'Programming Language :: Python :: 2.7',       
+        'Programming Language :: Python :: 3.4',       
+        'Programming Language :: Python :: 3.5',       
+    ], 
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flake8-debugger-3.1.0/test_linter.py 
new/flake8-debugger-3.2.1/test_linter.py
--- old/flake8-debugger-3.1.0/test_linter.py    1970-01-01 01:00:00.000000000 
+0100
+++ new/flake8-debugger-3.2.1/test_linter.py    2019-11-01 02:31:48.000000000 
+0100
@@ -0,0 +1,400 @@
+import pycodestyle
+
+from flake8_debugger import DebuggerChecker
+
+import pytest
+import sys
+
+
+class CaptureReport(pycodestyle.BaseReport):
+    """Collect the results of the checks."""
+
+    def __init__(self, options):
+        self._results = []
+        super(CaptureReport, self).__init__(options)
+
+    def error(self, line_number, offset, text, check):
+        """Store each error."""
+        code = super(CaptureReport, self).error(line_number, offset, text, 
check)
+        if code:
+            record = {"line": line_number, "col": offset, "message": "{0} 
{1}".format(code, text[5:])}
+            self._results.append(record)
+        return code
+
+
+class DebuggerTestStyleGuide(pycodestyle.StyleGuide):
+
+    logical_checks = []
+    physical_checks = []
+    ast_checks = [("debugger_usage", DebuggerChecker, ["tree", "filename", 
"lines"])]
+    max_line_length = None
+    max_doc_length = None
+    hang_closing = False
+    verbose = False
+    benchmark_keys = {"files": 0, "physical lines": 0, "logical lines": 0}
+
+
+_debugger_test_style = DebuggerTestStyleGuide()
+
+
+def check_code_for_debugger_statements(code):
+    """Process code using pycodestyle Checker and return all errors."""
+    from tempfile import NamedTemporaryFile
+
+    test_file = NamedTemporaryFile(delete=False)
+    test_file.write(code.encode())
+    test_file.flush()
+    report = CaptureReport(options=_debugger_test_style)
+    lines = [line + "\n" for line in code.split("\n")]
+    checker = pycodestyle.Checker(filename=test_file.name, lines=lines, 
options=_debugger_test_style, report=report)
+
+    checker.check_all()
+    return report._results
+
+
+class TestQA(object):
+    def test_catches_simple_debugger(self):
+        result = check_code_for_debugger_statements("from ipdb import 
set_trace as r\nr()")
+
+        expected_result = [
+            {"line": 2, "message": "T100 trace found: set_trace used as r", 
"col": 0},
+            {"line": 1, "message": "T100 import for set_trace found as r", 
"col": 0},
+        ]
+
+        assert result == expected_result
+
+    def test_catches_simple_debugger_when_called_off_lib(self):
+        result = check_code_for_debugger_statements("import 
ipdb\nipdb.set_trace()")
+
+        expected_result = [
+            {"line": 2, "message": "T100 trace found: ipdb.set_trace used", 
"col": 0},
+            {"line": 1, "message": "T100 import for ipdb found", "col": 0},
+        ]
+
+        assert result == expected_result
+
+    def test_catches_simple_debugger_when_called_off_global(self):
+        result = 
check_code_for_debugger_statements("__import__('ipdb').set_trace()")
+
+        expected_result = [{"line": 1, "message": "T100 trace found: set_trace 
used", "col": 0}]
+
+        assert result == expected_result
+
+    @pytest.mark.skipif(True, reason="Not supported just yet")
+    def test_catches_simple_debugger_when_called_off_var(self):
+        result = check_code_for_debugger_statements("import ipdb\ntest = 
ipdb.set_trace\ntest()")
+
+        expected_result = [
+            {"line": 1, "message": "T100 import for ipdb found", "col": 0},
+            {"line": 3, "message": "T100 trace found: ipdb.set_trace used", 
"col": 0},
+        ]
+        assert result == expected_result
+
+
+class TestBreakpoint(object):
+    @pytest.mark.skipif(sys.version_info < (3, 7), reason="breakpoint builtin 
introduced in 3.7")
+    def test_catches_breakpoint_call_for_python_3_7_and_above(self):
+        result = check_code_for_debugger_statements("breakpoint()")
+
+        expected_result = [{"line": 1, "message": "T100 trace found: 
breakpoint used", "col": 0}]
+
+        assert result == expected_result
+
+    @pytest.mark.skipif(sys.version_info < (3, 7), reason="breakpoint builtin 
introduced in 3.7")
+    def test_catches_breakpoint_import(self):
+        result = check_code_for_debugger_statements("from builtins import 
breakpoint")
+
+        expected_result = [{"line": 1, "message": "T100 import for breakpoint 
found", "col": 0}]
+
+        assert result == expected_result
+
+    @pytest.mark.skipif(sys.version_info < (3, 7), reason="breakpoint builtin 
introduced in 3.7")
+    def test_allows_builtins_import(self):
+        result = check_code_for_debugger_statements("import builtins")
+
+        expected_result = []
+
+        assert result == expected_result
+
+    @pytest.mark.skipif(sys.version_info < (3, 7), reason="breakpoint builtin 
introduced in 3.7")
+    def test_catches_breakpoint_usage_from_builtins(self):
+        result = check_code_for_debugger_statements("import 
builtins\nbuiltins.breakpoint()")
+
+        expected_result = [{"col": 0, "line": 2, "message": "T100 trace found: 
breakpoint used"}]
+
+        assert result == expected_result
+
+    @pytest.mark.skipif(sys.version_info < (3, 7), reason="breakpoint builtin 
introduced in 3.7")
+    def test_catches_breakpoint_imported_as_other_name(self):
+        result = check_code_for_debugger_statements("from builtins import 
breakpoint as b\nb()")
+
+        expected_result = [
+            {"line": 2, "message": "T100 trace found: breakpoint used as b", 
"col": 0},
+            {"line": 1, "message": "T100 import for breakpoint found as b", 
"col": 0},
+        ]
+
+        assert result == expected_result
+
+    @pytest.mark.skipif(sys.version_info >= (3, 7), reason="breakpoint builtin 
introduced in 3.7")
+    def test_allows_breakpoint_call_for_python_below_3_7(self):
+        result = check_code_for_debugger_statements("breakpoint()")
+
+        expected_result = []
+
+        assert result == expected_result
+
+
+class TestNoQA(object):
+    @pytest.mark.skipif(sys.version_info < (2, 7), reason="Python 2.6 does not 
support noqa")
+    def test_skip_import(self):
+        result = check_code_for_debugger_statements("from ipdb import 
set_trace as r # noqa\nr()")
+
+        expected_result = [{"line": 2, "message": "T100 trace found: set_trace 
used as r", "col": 0}]
+
+        assert result == expected_result
+
+    @pytest.mark.skipif(sys.version_info < (2, 7), reason="Python 2.6 does not 
support noqa")
+    def test_skip_usage(self):
+        result = check_code_for_debugger_statements("from ipdb import 
set_trace as r\nr() # noqa")
+
+        expected_result = [{"line": 1, "message": "T100 import for set_trace 
found as r", "col": 0}]
+
+        assert result == expected_result
+
+    @pytest.mark.skipif(sys.version_info < (2, 7), reason="Python 2.6 does not 
support noqa")
+    def test_skip_import_and_usage(self):
+        result = check_code_for_debugger_statements("from ipdb import 
set_trace as r # noqa\nr() # noqa")
+
+        expected_result = []
+
+        assert result == expected_result
+
+
+class TestImportCases(object):
+    def test_import_multiple(self):
+        result = check_code_for_debugger_statements("import math, ipdb, 
collections")
+        assert result == [{"col": 0, "line": 1, "message": "T100 import for 
ipdb found"}]
+
+    def test_import(self):
+        result = check_code_for_debugger_statements("import pdb")
+        assert result == [{"col": 0, "line": 1, "message": "T100 import for 
pdb found"}]
+
+    def test_import_interactive_shell_embed(self):
+        result = check_code_for_debugger_statements("from 
IPython.terminal.embed import InteractiveShellEmbed")
+        assert result == [{"col": 0, "line": 1, "message": "T100 import for 
InteractiveShellEmbed found"}]
+
+    def test_import_both_same_line(self):
+        result = check_code_for_debugger_statements("import pdb, ipdb")
+        result = sorted(result, key=lambda debugger: debugger["message"])
+        expected_result = [
+            {"col": 0, "line": 1, "message": "T100 import for ipdb found"},
+            {"col": 0, "line": 1, "message": "T100 import for pdb found"},
+        ]
+        assert result == expected_result
+
+    def test_import_math(self):
+        result = check_code_for_debugger_statements("import math")
+        assert result == []
+
+    def test_import_noqa(self):
+        result = check_code_for_debugger_statements("import ipdb # noqa")
+        assert result == []
+
+
+class TestModuleSetTraceCases(object):
+    def test_import_ipython_terminal_embed_use_InteractiveShellEmbed(self):
+        result = check_code_for_debugger_statements(
+            "from IPython.terminal.embed import InteractiveShellEmbed; 
InteractiveShellEmbed()()"
+        )
+
+        expected_result = [
+            {"col": 58, "line": 1, "message": "T100 trace found: 
InteractiveShellEmbed used"},
+            {"col": 0, "line": 1, "message": "T100 import for 
InteractiveShellEmbed found"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_ipdb_use_set_trace(self):
+        result = check_code_for_debugger_statements("import 
ipdb;ipdb.set_trace();")
+
+        expected_result = [
+            {"col": 12, "line": 1, "message": "T100 trace found: 
ipdb.set_trace used"},
+            {"col": 0, "line": 1, "message": "T100 import for ipdb found"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_pdb_use_set_trace(self):
+        result = check_code_for_debugger_statements("import 
pdb;pdb.set_trace();")
+
+        expected_result = [
+            {"col": 11, "line": 1, "message": "T100 trace found: pdb.set_trace 
used"},
+            {"col": 0, "line": 1, "message": "T100 import for pdb found"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_pdb_use_set_trace_twice(self):
+        result = check_code_for_debugger_statements("import 
pdb;pdb.set_trace() and pdb.set_trace();")
+
+        expected_result = [
+            {"col": 11, "line": 1, "message": "T100 trace found: pdb.set_trace 
used"},
+            {"col": 31, "line": 1, "message": "T100 trace found: pdb.set_trace 
used"},
+            {"col": 0, "line": 1, "message": "T100 import for pdb found"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_other_module_as_set_trace_and_use_it(self):
+        result = check_code_for_debugger_statements("from math import Max as 
set_trace\nset_trace()")
+        assert result == []
+
+
+class TestImportAsCases(object):
+    def test_import_ipdb_as(self):
+        result = check_code_for_debugger_statements("import math, ipdb as sif, 
collections")
+        assert result == [{"col": 0, "line": 1, "message": "T100 import for 
ipdb found as sif"}]
+
+
+class TestModuleASSetTraceCases(object):
+    def test_import_ipdb_as_use_set_trace(self):
+        result = check_code_for_debugger_statements("import ipdb as 
sif;sif.set_trace();")
+
+        expected_result = [
+            {"col": 19, "line": 1, "message": "T100 trace found: sif.set_trace 
used"},
+            {"col": 0, "line": 1, "message": "T100 import for ipdb found as 
sif"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+
+class TestImportSetTraceCases(object):
+    def test_import_set_trace_ipdb(self):
+        result = check_code_for_debugger_statements("from ipdb import run, 
set_trace;set_trace();")
+
+        expected_result = [
+            {"col": 32, "line": 1, "message": "T100 trace found: set_trace 
used"},
+            {"col": 0, "line": 1, "message": "T100 import for set_trace 
found"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_set_trace_pdb(self):
+        result = check_code_for_debugger_statements("from pdb import 
set_trace; set_trace();")
+
+        expected_result = [
+            {"col": 27, "line": 1, "message": "T100 trace found: set_trace 
used"},
+            {"col": 0, "line": 1, "message": "T100 import for set_trace 
found"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_set_trace_ipdb_as_and_use(self):
+        result = check_code_for_debugger_statements("from ipdb import run, 
set_trace as sif; sif();")
+
+        expected_result = [
+            {"col": 40, "line": 1, "message": "T100 trace found: set_trace 
used as sif"},
+            {"col": 0, "line": 1, "message": "T100 import for set_trace found 
as sif"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_set_trace_ipdb_as_and_use_with_conjunction_and(self):
+        result = check_code_for_debugger_statements("from ipdb import run, 
set_trace as sif; True and sif();")
+
+        expected_result = [
+            {"col": 49, "line": 1, "message": "T100 trace found: set_trace 
used as sif"},
+            {"col": 0, "line": 1, "message": "T100 import for set_trace found 
as sif"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_set_trace_ipdb_as_and_use_with_conjunction_or(self):
+        result = check_code_for_debugger_statements("from ipdb import run, 
set_trace as sif; True or sif();")
+
+        expected_result = [
+            {"col": 48, "line": 1, "message": "T100 trace found: set_trace 
used as sif"},
+            {"col": 0, "line": 1, "message": "T100 import for set_trace found 
as sif"},
+        ]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result
+
+    def test_import_set_trace_ipdb_as_and_use_with_conjunction_or_noqa(self):
+        result = check_code_for_debugger_statements("from ipdb import run, 
set_trace as sif; True or sif(); # noqa")
+        try:
+            assert result == []
+        except AssertionError:
+            pass
+
+    def 
test_import_set_trace_ipdb_as_and_use_with_conjunction_or_noqa_import_only(self):
+        result = check_code_for_debugger_statements("from ipdb import run, 
set_trace as sif # noqa\nTrue or sif()")
+
+        expected_result = [{"col": 8, "line": 2, "message": "T100 trace found: 
set_trace used as sif"}]
+
+        try:
+            assert result == expected_result
+        except AssertionError:
+            for item in expected_result:
+                item["col"] = 0
+
+            assert result == expected_result


Reply via email to