1
0
mirror of https://github.com/google/fonts.git synced 2024-12-17 13:41:32 +03:00
fonts/tox.ini

125 lines
4.6 KiB
INI
Raw Normal View History

Initial implementation of the `languages` module. This python module provides an API with data about languages/regions/scripts for use in the language-support categorization of the font families in the Google Fonts collection. You can also directly access the raw **textproto** files on the `Lib/languages/data` directory: * [`languages`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/languages) * [`regions`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/regions) * [`scripts`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/scripts) Most of the code in this project was copied from the `gftools` repository (https://github.com/googlefonts/gftools/) so that language/region/script data can be easily available to all our tools without having to also get the large dependency tree of `gftools`. The most immediate user of this module is `Font Bakery`, which needs to validate language support on font binaries being checked. (see https://github.com/googlefonts/fontbakery/issues/3605) The second obvious user of this `languages` module will be `gftools` itself. I'll be sending a pull request soon. Language/region/script definitions are still being gradualy updated on the `google/fonts` repo, on its **lang/** directory (https://github.com/google/fonts/tree/main/lang) and this `languages` module will try to be kept in sync. Ideally at some point this module would become the main place to update these definitions, avoiding data duplication and guaranteeing uniformity across tools. But that will require coordination with the Google Fonts team, so I hope this module can serve, for now, as a prototype for such proposed integration.
2022-02-16 10:49:46 +03:00
[tox]
envlist = py37, py38, py39, coverage, flake8, pylint
[gh-actions]
python =
3.7: py37, coverage, flake8, pylint
3.8: py38, coverage, flake8, pylint
3.9: py39, coverage, flake8, pylint
[testenv]
deps =
pytest
coverage
-rrequirements.txt
commands = coverage run -m pytest {posargs}
passenv = LD_LIBRARY_PATH LD_PRELOAD
[testenv:coverage]
deps = coverage
skip_install = true
commands =
coverage report
coverage html
# Exclude a lot of tests here without turning them off in setup.cfg, because a
# developer might want to see and fix them. This is more of a regression test.
[testenv:flake8]
deps =
flake8
sphinx
sphinx_rtd_theme
recommonmark
commands = flake8 --count --show-source --statistics
# Same rationale as with flake8.
[testenv:pylint]
deps =
pylint
sphinx
sphinx_rtd_theme
recommonmark
wont_fix = invalid-name,protected-access,too-many-lines
maybe_someday = fixme,missing-docstring,line-too-long
Initial implementation of the `languages` module. This python module provides an API with data about languages/regions/scripts for use in the language-support categorization of the font families in the Google Fonts collection. You can also directly access the raw **textproto** files on the `Lib/languages/data` directory: * [`languages`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/languages) * [`regions`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/regions) * [`scripts`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/scripts) Most of the code in this project was copied from the `gftools` repository (https://github.com/googlefonts/gftools/) so that language/region/script data can be easily available to all our tools without having to also get the large dependency tree of `gftools`. The most immediate user of this module is `Font Bakery`, which needs to validate language support on font binaries being checked. (see https://github.com/googlefonts/fontbakery/issues/3605) The second obvious user of this `languages` module will be `gftools` itself. I'll be sending a pull request soon. Language/region/script definitions are still being gradualy updated on the `google/fonts` repo, on its **lang/** directory (https://github.com/google/fonts/tree/main/lang) and this `languages` module will try to be kept in sync. Ideally at some point this module would become the main place to update these definitions, avoiding data duplication and guaranteeing uniformity across tools. But that will require coordination with the Google Fonts team, so I hope this module can serve, for now, as a prototype for such proposed integration.
2022-02-16 10:49:46 +03:00
commands = pylint --disable={[testenv:pylint]wont_fix},{[testenv:pylint]maybe_someday} Lib/languages
[flake8]
select = E,F,W
exclude =
# Exclude the entire build directory:
build
# Exclude these auto-generated files that should not be hand-edited:
Lib/languages/fonts_public_pb2.py,
# No need to traverse hidden directories such as .git, .tox
.*,
# Exclude virtual environment directory:
venv*,
# There's no value in checking cache directories
__pycache__,
# The Sphinx configuration file is mostly autogenerated, ignore it
docs/source/conf.py,
# The ignore-list below comes from FontBakery linting setup.
# The `languages` module has a much simples codebase, so we may be in much better shape in here.
# So, perhaps, we could safely enable many of these lint-checks.
max-line-length=100
Initial implementation of the `languages` module. This python module provides an API with data about languages/regions/scripts for use in the language-support categorization of the font families in the Google Fonts collection. You can also directly access the raw **textproto** files on the `Lib/languages/data` directory: * [`languages`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/languages) * [`regions`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/regions) * [`scripts`](https://github.com/felipesanches/languages/tree/main/Lib/languages/data/scripts) Most of the code in this project was copied from the `gftools` repository (https://github.com/googlefonts/gftools/) so that language/region/script data can be easily available to all our tools without having to also get the large dependency tree of `gftools`. The most immediate user of this module is `Font Bakery`, which needs to validate language support on font binaries being checked. (see https://github.com/googlefonts/fontbakery/issues/3605) The second obvious user of this `languages` module will be `gftools` itself. I'll be sending a pull request soon. Language/region/script definitions are still being gradualy updated on the `google/fonts` repo, on its **lang/** directory (https://github.com/google/fonts/tree/main/lang) and this `languages` module will try to be kept in sync. Ideally at some point this module would become the main place to update these definitions, avoiding data duplication and guaranteeing uniformity across tools. But that will require coordination with the Google Fonts team, so I hope this module can serve, for now, as a prototype for such proposed integration.
2022-02-16 10:49:46 +03:00
ignore =
# ITEMS BELOW ARE MEDIUM PRIORITY TO FIX AND REMOVE FROM IGNORE LIST
E402, # module level import not at top of file
E711, # comparison to None should be 'if cond is None
E712, # comparison to True should be 'if cond is True:' or 'if cond:'
E713, # test for membership should be 'not in'
E722, # do not use bare 'except'
E741, # ambiguous variable name
F401, # '<module>' imported but unused
F403, # 'from <module> import *' used; unable to detect undefined names
F405, # '<name>' may be undefined, or defined from star imports
# ITEMS BELOW ARE LOWER PRIORITY TO FIX AND REMOVE FROM IGNORE LIST
E111, # indentation is not a multiple of four
E114, # indentation is not a multiple of four (comment)
E116, # unexpected indentation (comment)
E117, # over-indented (comment)
E122, # continuation line missing indentation or outdented
E123, # closing bracket does not match indentation of opening bracket's line
E124, # closing bracket does not match visual indentation
E125, # continuation line with same indent as next logical line
E126, # continuation line over-indented for hanging indent
E127, # continuation line over-indented for visual indent
E128, # continuation line under-indented for visual indent
E129, # visually indented line with same indent as next logical line
E131, # continuation line unaligned for hanging indent
E201, # whitespace after '{'
E202, # whitespace before ')'
E203, # whitespace before ','
E211, # whitespace before '('
E221, # multiple spaces before operator
E222, # multiple spaces after operator
E225, # missing whitespace around operator
E226, # missing whitespace around arithmetic operator
E231, # missing whitespace after ','
E241, # multiple spaces after ':'
E251, # unexpected spaces around keyword / parameter equals
E261, # at least two spaces before inline comment
E262, # inline comment should start with '# '
E265, # block comment should start with '# '
E266, # too many leading '#' for block comment
E272, # multiple spaces before keyword
E302, # expected <n> blank lines, found <m>
E303, # too many blank lines (<n>)
E305, # expected 2 blank lines after class or function definition, found <n>
E306, # expected 1 blank line before a nested definition, found <n>
E502, # the backslash is redundant between brackets
E701, # multiple statements on one line (colon)
E704, # multiple statements on one line (def)
E731, # do not assign a lambda expression, use a def
F541, # f-string is missing placeholders
W191, # indentation contains tabs
W291, # trailing whitespace
W293, # blank line contains whitespace
W391, # blank line at end of file
W503, # line break before binary operator
W504, # line break after binary operator