bpo-45447: Add syntax highlighting for .pyi files in IDLE (GH-28950)

Also add .pyi to the python extensions in the "File-open" and "File-save" dialogues.
Add util.py to contain objects that are used in multiple idlelib modules
and have no dependencies on any of them.

Co-authored-by: E-Paine <63801254+E-Paine@users.noreply.github.com>
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
(cherry picked from commit 50cf4991c4)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
(cherry picked from commit 9fabcfbe68)

Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This commit is contained in:
Miss Islington (bot) 2022-02-12 17:19:25 -08:00 committed by GitHub
parent cc6d8f8828
commit 1d4d44c385
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 77 additions and 3 deletions

View file

@ -0,0 +1,4 @@
#!usr/bin/env python
def example_function(some_argument):
pass

View file

@ -0,0 +1,2 @@
class Example:
def method(self, argument1: str, argument2: list[int]) -> None: ...

View file

@ -1,6 +1,6 @@
"Test , coverage 17%."
from idlelib import iomenu
from idlelib import iomenu, util
import unittest
from test.support import requires
from tkinter import Tk
@ -45,5 +45,27 @@ def test_fixnewlines_end(self):
eq(fix(), 'a'+io.eol_convention)
def _extension_in_filetypes(extension):
return any(
f'*{extension}' in filetype_tuple[1]
for filetype_tuple in iomenu.IOBinding.filetypes
)
class FiletypesTest(unittest.TestCase):
def test_python_source_files(self):
for extension in util.py_extensions:
with self.subTest(extension=extension):
self.assertTrue(
_extension_in_filetypes(extension)
)
def test_text_files(self):
self.assertTrue(_extension_in_filetypes('.txt'))
def test_all_files(self):
self.assertTrue(_extension_in_filetypes(''))
if __name__ == '__main__':
unittest.main(verbosity=2)

View file

@ -0,0 +1,14 @@
"""Test util, coverage 100%"""
import unittest
from idlelib import util
class UtilTest(unittest.TestCase):
def test_extensions(self):
for extension in {'.pyi', '.py', '.pyw'}:
self.assertIn(extension, util.py_extensions)
if __name__ == '__main__':
unittest.main(verbosity=2)