mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
various trailing comma (extra-edit)
This commit is contained in:
parent
8ba35b97b5
commit
437c6bfc61
@ -57,11 +57,11 @@ class AdvancedUserRecipe1306061239(BasicNewsRecipe):
|
|||||||
(u'world News', u'http://www.mirror.co.uk/news/world-news/rss.xml'),
|
(u'world News', u'http://www.mirror.co.uk/news/world-news/rss.xml'),
|
||||||
(u'Sports', u'http://www.mirror.co.uk/sport/rss.xml'),
|
(u'Sports', u'http://www.mirror.co.uk/sport/rss.xml'),
|
||||||
(u'3AM', u'http://www.mirror.co.uk/3am/rss.xml'),
|
(u'3AM', u'http://www.mirror.co.uk/3am/rss.xml'),
|
||||||
(u'Lifestyle', u'http://www.mirror.co.uk/lifestyle/rss.xml')
|
(u'Lifestyle', u'http://www.mirror.co.uk/lifestyle/rss.xml'),
|
||||||
|
|
||||||
|
|
||||||
# example of commented out feed not needed
|
# example of commented out feed not needed
|
||||||
# ,(u'Travel','http://www.mirror.co.uk/advice/travel/rss.xml')
|
# (u'Travel','http://www.mirror.co.uk/advice/travel/rss.xml'),
|
||||||
]
|
]
|
||||||
extra_css = '''
|
extra_css = '''
|
||||||
h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
|
h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
|
||||||
|
@ -12,16 +12,16 @@ sections = [
|
|||||||
('의학과학', 'science'),
|
('의학과학', 'science'),
|
||||||
('문화연예', 'culture'),
|
('문화연예', 'culture'),
|
||||||
('스포츠', 'sports'),
|
('스포츠', 'sports'),
|
||||||
('사람속으로', 'inmul')
|
('사람속으로', 'inmul'),
|
||||||
# Following sections are marked as marked optional
|
# Following sections are marked as marked optional
|
||||||
# as default. Uncomment to enable.
|
# as default. Uncomment to enable.
|
||||||
# , (u'건강', 'health')
|
# (u'건강', 'health'),
|
||||||
# , (u'레저', 'leisure')
|
# (u'레저', 'leisure'),
|
||||||
# , (u'도서', 'book')
|
# (u'도서', 'book'),
|
||||||
# , (u'공연', 'show')
|
# (u'공연', 'show'),
|
||||||
# , (u'여성', 'woman')
|
# (u'여성', 'woman'),
|
||||||
# , (u'여행', 'travel')
|
# (u'여행', 'travel'),
|
||||||
# , (u'생활정보', 'lifeinfo')
|
# (u'생활정보', 'lifeinfo'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,11 +40,11 @@ class iProfesional(BasicNewsRecipe):
|
|||||||
}
|
}
|
||||||
|
|
||||||
keep_only_tags = [
|
keep_only_tags = [
|
||||||
dict(name='div', attrs={'class': lambda x: x and 'tituloprincipal' in x.split()})
|
dict(name='div', attrs={'class': lambda x: x and 'tituloprincipal' in x.split()}),
|
||||||
,dict(name='div', attrs={'class': lambda x: x and 'bajadanh' in x.split()})
|
dict(name='div', attrs={'class': lambda x: x and 'bajadanh' in x.split()}),
|
||||||
,dict(name='div', attrs={'class': lambda x: x and 'datosautornh' in x.split()})
|
dict(name='div', attrs={'class': lambda x: x and 'datosautornh' in x.split()}),
|
||||||
,dict(name='div', attrs={'class': lambda x: x and 'fotonotanh' in x.split()})
|
dict(name='div', attrs={'class': lambda x: x and 'fotonotanh' in x.split()}),
|
||||||
,dict(name='div', attrs={'class': lambda x: x and 'contenidonotanh' in x.split()})
|
dict(name='div', attrs={'class': lambda x: x and 'contenidonotanh' in x.split()}),
|
||||||
]
|
]
|
||||||
remove_tags = [
|
remove_tags = [
|
||||||
dict(name=['meta', 'link', 'base', 'embed', 'object', 'iframe'])]
|
dict(name=['meta', 'link', 'base', 'embed', 'object', 'iframe'])]
|
||||||
|
@ -40,15 +40,15 @@ class StraitsTimes(BasicNewsRecipe):
|
|||||||
|
|
||||||
feeds = [
|
feeds = [
|
||||||
(u'World' , u'https://www.straitstimes.com/news/world/rss.xml')
|
(u'World' , u'https://www.straitstimes.com/news/world/rss.xml')
|
||||||
,(u'Business' , u'https://www.straitstimes.com/news/business/rss.xml')
|
(u'Business' , u'https://www.straitstimes.com/news/business/rss.xml'),
|
||||||
,(u'Life' , u'https://www.straitstimes.com/news/life/rss.xml')
|
(u'Life' , u'https://www.straitstimes.com/news/life/rss.xml'),
|
||||||
,(u'Tech' , u'https://www.straitstimes.com/news/tech/rss.xml')
|
(u'Tech' , u'https://www.straitstimes.com/news/tech/rss.xml'),
|
||||||
,(u'Opinion' , u'https://www.straitstimes.com/news/opinion/rss.xml')
|
(u'Opinion' , u'https://www.straitstimes.com/news/opinion/rss.xml'),
|
||||||
,(u'Life' , u'https://www.straitstimes.com/news/life/rss.xml')
|
(u'Life' , u'https://www.straitstimes.com/news/life/rss.xml'),
|
||||||
,(u'Singapore' , u'https://www.straitstimes.com/news/singapore/rss.xml')
|
(u'Singapore' , u'https://www.straitstimes.com/news/singapore/rss.xml'),
|
||||||
,(u'Asia' , u'https://www.straitstimes.com/news/asia/rss.xml')
|
(u'Asia' , u'https://www.straitstimes.com/news/asia/rss.xml'),
|
||||||
,(u'Multimedia' , u'https://www.straitstimes.com/news/multimedia/rss.xml')
|
(u'Multimedia' , u'https://www.straitstimes.com/news/multimedia/rss.xml'),
|
||||||
,(u'Sport' , u'https://www.straitstimes.com/news/sport/rss.xml')
|
(u'Sport' , u'https://www.straitstimes.com/news/sport/rss.xml'),
|
||||||
]
|
]
|
||||||
|
|
||||||
def preprocess_html(self, soup):
|
def preprocess_html(self, soup):
|
||||||
|
@ -29,58 +29,58 @@ class weblogssl(BasicNewsRecipe):
|
|||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
|
|
||||||
# Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
|
# Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
|
||||||
# un caracter # por delante, es decir, # ,(u'Applesfera', u'http://feeds.weblogssl.com/applesfera')
|
# un caracter # por delante, es decir, # (u'Applesfera', u'http://feeds.weblogssl.com/applesfera'),
|
||||||
# haría que no se descargase Applesfera.
|
# haría que no se descargase Applesfera.
|
||||||
|
|
||||||
feeds = [
|
feeds = [
|
||||||
(u'Xataka', u'http://feeds.weblogssl.com/xataka2')
|
(u'Xataka', u'http://feeds.weblogssl.com/xataka2'),
|
||||||
,(u'Xataka M\xf3vil', u'http://feeds.weblogssl.com/xatakamovil')
|
(u'Xataka M\xf3vil', u'http://feeds.weblogssl.com/xatakamovil'),
|
||||||
,(u'Xataka Foto', u'http://feeds.weblogssl.com/xatakafoto')
|
(u'Xataka Foto', u'http://feeds.weblogssl.com/xatakafoto'),
|
||||||
,(u'Xataka Android', u'http://feeds.weblogssl.com/xatakandroid')
|
(u'Xataka Android', u'http://feeds.weblogssl.com/xatakandroid'),
|
||||||
,(u'Xataka Smart Home', u'http://feeds.weblogssl.com/Xatakahome')
|
(u'Xataka Smart Home', u'http://feeds.weblogssl.com/Xatakahome'),
|
||||||
,(u'Xataka Windows', u'http://feeds.weblogssl.com/xatakawindows')
|
(u'Xataka Windows', u'http://feeds.weblogssl.com/xatakawindows'),
|
||||||
,(u'Xataka Ciencia', u'http://feeds.weblogssl.com/xatakaciencia')
|
(u'Xataka Ciencia', u'http://feeds.weblogssl.com/xatakaciencia'),
|
||||||
,(u'Applesfera', u'http://feeds.weblogssl.com/applesfera')
|
(u'Applesfera', u'http://feeds.weblogssl.com/applesfera'),
|
||||||
,(u'Vida Extra', u'http://feeds.weblogssl.com/vidaextra')
|
(u'Vida Extra', u'http://feeds.weblogssl.com/vidaextra'),
|
||||||
,(u'Genbeta', u'http://feeds.weblogssl.com/genbeta')
|
(u'Genbeta', u'http://feeds.weblogssl.com/genbeta'),
|
||||||
,(u'Genbeta Dev', u'http://feeds.weblogssl.com/genbetadev')
|
(u'Genbeta Dev', u'http://feeds.weblogssl.com/genbetadev'),
|
||||||
,(u'Magnet', u'http://feeds.weblogssl.com/xatakamagnet2')
|
(u'Magnet', u'http://feeds.weblogssl.com/xatakamagnet2'),
|
||||||
|
|
||||||
|
|
||||||
,(u'Tendencias', u'http://feeds.weblogssl.com/trendencias')
|
(u'Tendencias', u'http://feeds.weblogssl.com/trendencias'),
|
||||||
,(u'Tendencias Belleza', u'http://feeds.weblogssl.com/trendenciasbelleza')
|
(u'Tendencias Belleza', u'http://feeds.weblogssl.com/trendenciasbelleza'),
|
||||||
,(u'Tendencias Hombre', u'http://feeds.weblogssl.com/trendenciashombre')
|
(u'Tendencias Hombre', u'http://feeds.weblogssl.com/trendenciashombre'),
|
||||||
,(u'Tendencias Lifestyle', u'http://feeds.weblogssl.com/trendenciaslifestyle')
|
(u'Tendencias Lifestyle', u'http://feeds.weblogssl.com/trendenciaslifestyle'),
|
||||||
,(u'Directo al paladar', u'http://feeds.weblogssl.com/directoalpaladar')
|
(u'Directo al paladar', u'http://feeds.weblogssl.com/directoalpaladar'),
|
||||||
,(u'Beb\xe9s y m\xe1s', u'http://feeds.weblogssl.com/bebesymas')
|
(u'Beb\xe9s y m\xe1s', u'http://feeds.weblogssl.com/bebesymas'),
|
||||||
,(u'Vit\xf3nica', u'http://feeds.weblogssl.com/vitonica')
|
(u'Vit\xf3nica', u'http://feeds.weblogssl.com/vitonica'),
|
||||||
,(u'Decoesfera', u'http://feeds.weblogssl.com/decoesfera')
|
(u'Decoesfera', u'http://feeds.weblogssl.com/decoesfera'),
|
||||||
,(u'Embelezzia', u'http://feeds.weblogssl.com/embelezzia')
|
(u'Embelezzia', u'http://feeds.weblogssl.com/embelezzia'),
|
||||||
,(u'Pop rosa', u'http://feeds.weblogssl.com/poprosa')
|
(u'Pop rosa', u'http://feeds.weblogssl.com/poprosa'),
|
||||||
|
|
||||||
,(u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion')
|
(u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion'),
|
||||||
,(u'Motorpasi\xf3n Moto', u'http://feeds.weblogssl.com/motorpasionmoto')
|
(u'Motorpasi\xf3n Moto', u'http://feeds.weblogssl.com/motorpasionmoto'),
|
||||||
,(u'Motorpasi\xf3n Futuro', u'http://feeds.weblogssl.com/motorpasionfuturo')
|
(u'Motorpasi\xf3n Futuro', u'http://feeds.weblogssl.com/motorpasionfuturo'),
|
||||||
|
|
||||||
,(u'Blog de Cine', u'http://feeds.weblogssl.com/blogdecine')
|
(u'Blog de Cine', u'http://feeds.weblogssl.com/blogdecine'),
|
||||||
,(u'Vaya tele', u'http://feeds.weblogssl.com/vayatele2')
|
(u'Vaya tele', u'http://feeds.weblogssl.com/vayatele2'),
|
||||||
,(u'Diario del viajero', u'http://feeds.weblogssl.com/diariodelviajero')
|
(u'Diario del viajero', u'http://feeds.weblogssl.com/diariodelviajero'),
|
||||||
,(u'Papel en blanco', u'http://feeds.weblogssl.com/papelenblanco')
|
(u'Papel en blanco', u'http://feeds.weblogssl.com/papelenblanco'),
|
||||||
|
|
||||||
,(u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2')
|
(u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2'),
|
||||||
,(u'Pymes y aut\xf3nomos', u'http://feeds.weblogssl.com/pymesyautonomos')
|
(u'Pymes y aut\xf3nomos', u'http://feeds.weblogssl.com/pymesyautonomos'),
|
||||||
,(u'Ahorro diario', u'http://feeds.weblogssl.com/ahorrodiario')
|
(u'Ahorro diario', u'http://feeds.weblogssl.com/ahorrodiario'),
|
||||||
|
|
||||||
,(u'Xataka México', u'http://feeds.weblogssl.com/xatakamx')
|
(u'Xataka México', u'http://feeds.weblogssl.com/xatakamx'),
|
||||||
,(u'Xataka Android México', u'http://feeds.weblogssl.com/xatakandroidmx')
|
(u'Xataka Android México', u'http://feeds.weblogssl.com/xatakandroidmx'),
|
||||||
,(u'Vida Extra México', u'http://feeds.weblogssl.com/vidaextramx')
|
(u'Vida Extra México', u'http://feeds.weblogssl.com/vidaextramx'),
|
||||||
,(u'Xataka Colombia', u'http://feeds.weblogssl.com/xatakaco')
|
(u'Xataka Colombia', u'http://feeds.weblogssl.com/xatakaco'),
|
||||||
|
|
||||||
,(u'Directo al paladar México', u'http://feeds.weblogssl.com/directoalpaladarmx')
|
(u'Directo al paladar México', u'http://feeds.weblogssl.com/directoalpaladarmx'),
|
||||||
,(u'Vit\xf3nica México', u'http://feeds.weblogssl.com/vitonicamx')
|
(u'Vit\xf3nica México', u'http://feeds.weblogssl.com/vitonicamx'),
|
||||||
,(u'Tendencias Hombre México', u'http://feeds.weblogssl.com/trendenciashombremx')
|
(u'Tendencias Hombre México', u'http://feeds.weblogssl.com/trendenciashombremx'),
|
||||||
|
|
||||||
,(u'Motorpasi\xf3n México', u'http://feeds.weblogssl.com/motorpasionmx')
|
(u'Motorpasi\xf3n México', u'http://feeds.weblogssl.com/motorpasionmx'),
|
||||||
]
|
]
|
||||||
|
|
||||||
keep_only_tags = [
|
keep_only_tags = [
|
||||||
|
@ -234,9 +234,9 @@ per_language_title_sort_articles = {
|
|||||||
'Della\\s+', 'Dello\\s+', "Dell'", 'Dell´'),
|
'Della\\s+', 'Dello\\s+', "Dell'", 'Dell´'),
|
||||||
# Portuguese
|
# Portuguese
|
||||||
'por': (r'A\s+', r'O\s+', r'Os\s+', r'As\s+', r'Um\s+', r'Uns\s+',
|
'por': (r'A\s+', r'O\s+', r'Os\s+', r'As\s+', r'Um\s+', r'Uns\s+',
|
||||||
r'Uma\s+', r'Umas\s+', ),
|
r'Uma\s+', r'Umas\s+'),
|
||||||
# Romanian
|
# Romanian
|
||||||
'ron': (r'Un\s+', r'O\s+', r'Nişte\s+', ),
|
'ron': (r'Un\s+', r'O\s+', r'Nişte\s+'),
|
||||||
# German
|
# German
|
||||||
'deu': (r'Der\s+', r'Die\s+', r'Das\s+', r'Den\s+', r'Ein\s+',
|
'deu': (r'Der\s+', r'Die\s+', r'Das\s+', r'Den\s+', r'Ein\s+',
|
||||||
r'Eine\s+', r'Einen\s+', r'Dem\s+', r'Des\s+', r'Einem\s+',
|
r'Eine\s+', r'Einen\s+', r'Dem\s+', r'Des\s+', r'Einem\s+',
|
||||||
@ -246,16 +246,16 @@ per_language_title_sort_articles = {
|
|||||||
r'Ener\s+', r'Enes\s+', r'Den\s+', r'Der\s+', r'Des\s+',
|
r'Ener\s+', r'Enes\s+', r'Den\s+', r'Der\s+', r'Des\s+',
|
||||||
r"'t\s+"),
|
r"'t\s+"),
|
||||||
# Swedish
|
# Swedish
|
||||||
'swe': (r'En\s+', r'Ett\s+', r'Det\s+', r'Den\s+', r'De\s+', ),
|
'swe': (r'En\s+', r'Ett\s+', r'Det\s+', r'Den\s+', r'De\s+'),
|
||||||
# Turkish
|
# Turkish
|
||||||
'tur': (r'Bir\s+', ),
|
'tur': (r'Bir\s+',),
|
||||||
# Afrikaans
|
# Afrikaans
|
||||||
'afr': (r"'n\s+", r'Die\s+', ),
|
'afr': (r"'n\s+", r'Die\s+'),
|
||||||
# Greek
|
# Greek
|
||||||
'ell': (r'O\s+', r'I\s+', r'To\s+', r'Ta\s+', r'Tus\s+', r'Tis\s+',
|
'ell': (r'O\s+', r'I\s+', r'To\s+', r'Ta\s+', r'Tus\s+', r'Tis\s+',
|
||||||
r"'Enas\s+", r"'Mia\s+", r"'Ena\s+", r"'Enan\s+", ),
|
r"'Enas\s+", r"'Mia\s+", r"'Ena\s+", r"'Enan\s+"),
|
||||||
# Hungarian
|
# Hungarian
|
||||||
'hun': (r'A\s+', r'Az\s+', r'Egy\s+',),
|
'hun': (r'A\s+', r'Az\s+', r'Egy\s+'),
|
||||||
}
|
}
|
||||||
default_language_for_title_sort = None
|
default_language_for_title_sort = None
|
||||||
title_sort_articles = r'^(A|The|An)\s+'
|
title_sort_articles = r'^(A|The|An)\s+'
|
||||||
|
@ -260,7 +260,7 @@ class HeuristicProcessor:
|
|||||||
[r"[^'\"]?(\d+)\s*([\dA-Z\-\'\"\?!#,]+\s*){0,7}\s*", True, True, True, False,
|
[r"[^'\"]?(\d+)\s*([\dA-Z\-\'\"\?!#,]+\s*){0,7}\s*", True, True, True, False,
|
||||||
'Searching for simple numeric headings', 'plain_number'], # Numeric Chapters, no dot or colon
|
'Searching for simple numeric headings', 'plain_number'], # Numeric Chapters, no dot or colon
|
||||||
[r"\s*[^'\"]?([A-Z#]+(\s|-){0,3}){1,5}\s*", False, True, False, False,
|
[r"\s*[^'\"]?([A-Z#]+(\s|-){0,3}){1,5}\s*", False, True, False, False,
|
||||||
'Searching for chapters with Uppercase Characters', 'uppercase'] # Uppercase Chapters
|
'Searching for chapters with Uppercase Characters', 'uppercase'], # Uppercase Chapters
|
||||||
]
|
]
|
||||||
|
|
||||||
def recurse_patterns(html, analyze):
|
def recurse_patterns(html, analyze):
|
||||||
|
@ -397,12 +397,12 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# Multiple authors and two part title and no general description
|
# Multiple authors and two part title and no general description
|
||||||
({'identifiers':{'edelweiss':'0321180607'}},
|
({'identifiers':{'edelweiss':'0321180607'}},
|
||||||
[title_test(
|
[title_test('XQuery From the Experts: A Guide to the W3C XML Query Language', exact=True),
|
||||||
'XQuery From the Experts: A Guide to the W3C XML Query Language'
|
authors_test([
|
||||||
, exact=True), authors_test([
|
|
||||||
'Howard Katz', 'Don Chamberlin', 'Denise Draper', 'Mary Fernandez',
|
'Howard Katz', 'Don Chamberlin', 'Denise Draper', 'Mary Fernandez',
|
||||||
'Michael Kay', 'Jonathan Robie', 'Michael Rys', 'Jerome Simeon',
|
'Michael Kay', 'Jonathan Robie', 'Michael Rys', 'Jerome Simeon',
|
||||||
'Jim Tivy', 'Philip Wadler']), pubdate_test(2003, 8, 22),
|
'Jim Tivy', 'Philip Wadler']),
|
||||||
|
pubdate_test(2003, 8, 22),
|
||||||
comments_test('Jérôme Siméon'), lambda mi: bool(mi.comments and 'No title summary' not in mi.comments)
|
comments_test('Jérôme Siméon'), lambda mi: bool(mi.comments and 'No title summary' not in mi.comments)
|
||||||
]),
|
]),
|
||||||
]
|
]
|
||||||
|
@ -48,8 +48,8 @@ class AddAction(InterfaceAction):
|
|||||||
|
|
||||||
name = 'Add Books'
|
name = 'Add Books'
|
||||||
action_spec = (_('Add books'), 'add_book.png',
|
action_spec = (_('Add books'), 'add_book.png',
|
||||||
_('Add books to the calibre library/device from files on your computer')
|
_('Add books to the calibre library/device from files on your computer'),
|
||||||
, _('A'))
|
_('A'))
|
||||||
action_type = 'current'
|
action_type = 'current'
|
||||||
action_add_menu = True
|
action_add_menu = True
|
||||||
action_menu_clone_qaction = _('Add books from a single folder')
|
action_menu_clone_qaction = _('Add books from a single folder')
|
||||||
|
@ -337,5 +337,5 @@ empty_elements = (
|
|||||||
(TEXTNS,'user-index-mark'),
|
(TEXTNS,'user-index-mark'),
|
||||||
(TEXTNS,'user-index-mark-end'),
|
(TEXTNS,'user-index-mark-end'),
|
||||||
(TEXTNS,'user-index-mark-start'),
|
(TEXTNS,'user-index-mark-start'),
|
||||||
(TEXTNS,'variable-decl')
|
(TEXTNS,'variable-decl'),
|
||||||
)
|
)
|
||||||
|
@ -1475,7 +1475,7 @@ dl.notes dd:last-of-type { page-break-after: avoid }
|
|||||||
self.opentag('a', {
|
self.opentag('a', {
|
||||||
'href': f'#footnote-{self.currentnote}',
|
'href': f'#footnote-{self.currentnote}',
|
||||||
'class': 'citation',
|
'class': 'citation',
|
||||||
'id':f'citation-{self.currentnote}'
|
'id':f'citation-{self.currentnote}',
|
||||||
})
|
})
|
||||||
# self.writeout( escape(mark) )
|
# self.writeout( escape(mark) )
|
||||||
# Since HTML only knows about endnotes, there is too much risk that the
|
# Since HTML only knows about endnotes, there is too much risk that the
|
||||||
|
@ -29,7 +29,7 @@ module_lists = {
|
|||||||
),
|
),
|
||||||
'dbus': (
|
'dbus': (
|
||||||
'QtDBus',
|
'QtDBus',
|
||||||
)
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ def dynamic_load(name, name_map, already_imported, qt_modules, module_names=()):
|
|||||||
mod_name,
|
mod_name,
|
||||||
'with error:',
|
'with error:',
|
||||||
err,
|
err,
|
||||||
file=sys.stderr
|
file=sys.stderr,
|
||||||
)
|
)
|
||||||
if mod is not False:
|
if mod is not False:
|
||||||
if name in module_names:
|
if name in module_names:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user