Of course, in Python 8 this naming convention will indeed be enforced. https://mail.python.org/pipermail/python-dev/2016-March/143603.html
Op 1 mrt. 2017 15:16 schreef "Alexandre Brault" <abra...@mapgears.com>: > Long story short, it's because there can be good reasons to ignore PEP8 > naming conventions. Linting tools can be taught to skip over an intentional > PEP8 violation. A grammar rule can't > > > Alex > > On 2017-03-01 09:04 AM, Mathieu BEAL wrote: > > I was wondering why the PEP coding style (https://www.python.org/dev/ > peps/pep-0008/) is not natively included in python grammar ? > > For instance, both, *function definition* and *class definition*, are > using the same “NAME” token. ((see, https://docs.python.org/3/ > reference/grammar.html). > > classdef: 'class' NAME ['(' [arglist] ')'] ':' suite > > funcdef: 'def' NAME parameters ['->' test] ':' suite > > > Then, we are using libraries like pyflake, flake8, pylint, to check the > coding style. > > > It seems useful to natively make distinction between NAME of classdef and > NAME of funcdef, with something like: > > classdef: 'class' NAME_CLASS ['(' [arglist] ')'] ':' suite > > funcdef: 'def' NAME_FUNC parameters ['->' test] ':' suite > > > NAME_CLASS: > > · Class name should normally use the CapWord convention; > > NAME_FUNC: > > · Function name should be lowercase, with words separated by > underscore as necessary to improve readability, > > · mixedCase is allowed; > > STYLE_CAP_WORDS = r’([A-Z]{1}[a-z]+(_[A-Z]{1}[a-z]+)*)’ > > STYLE_UNDERSCORE_LOW_WORDS = r’([a-z]+(_[a-z]+)*)’ > > STYLE_MIXED_CASE = r’([a-z]{1,}([A-Z]{1}[a-z]+)*’) > > NAME_FUNC = STYLE_LOW_WORDS > > | STYLE_UNDERSCORE_LOW_WORDS > > | STYLE_MIXED_CASE > > NAME_CLASS = STYLE_CAP_WORDS > > | NAME_FUNC # naming convention for functions may be used > in cases where the interface is documented and used primarily as a callable > (pep8 source). > > > > I didn't find any information about this point in a previous post or > elsewhere. Is there any reason for such a choice ? or is it a dark old > discussion we never talk about ? > > > Mathieu > > > ------------- > > import re > > > > # Testing the first part of the class def, only. > > style_cap_words = r'^class ([A-Z]{1}[a-z]+(_?[A-Z]{1}[a-z]+)*)$' > > compiled_style_cap_words = re.compile(style_cap_words) > > > > status_samples = {True:['class Hello', > > 'class Hel_Lo', # ok if Hel and Lo are 2 words > > 'class HelLo', # same. > > ], > > False:['class HellO', > > 'class _He', > > 'class HEllo', > > 'class HE', > > 'class H', > > 'class h', > > 'class Hell_oo', > > 'class Hell_', > > 'class _hell', > > 'class H_E_L_L_O', > > 'class _H']} > > > > def is_matched(sample, pattern=compiled_style_cap_words): > > matched = pattern.match(sample) > > return matched is not None > > > > for status, samples in status_samples.items(): > > for sample in samples: > > is_correct = status == is_matched(sample) > > assert is_correct, '%s is not correct, required %s' % (sample, > status) > > > _______________________________________________ > Python-ideas mailing > listPython-ideas@python.orghttps://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > > > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/