Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to f-strings #209

Closed
StrikerRUS opened this issue May 8, 2020 · 2 comments
Closed

Migrate to f-strings #209

StrikerRUS opened this issue May 8, 2020 · 2 comments
Assignees

Comments

@StrikerRUS
Copy link
Member

StrikerRUS commented May 8, 2020

m2cgen's codebase heavily utilizes string formatting and concatenation mechanisms. f-strings (brief guide) are known to be the fastest method to format string (1, 2) and they increase code readability a lot.

image
Source: https://cito.github.io/blog/f-strings/.

One problem is only that they are supported starting from Python 3.6, but currently m2cgen supports Python 3.5.

"Programming Language :: Python :: 3.5",

My suggestion is the following. Mark the next 0.8.0 release as the latest which supports Python 3.5 and drop the support in 0.9.0 release. It will be approximately in the same time as Python 3.5 reaches its EOL (2020-09-13).

@StrikerRUS
Copy link
Member Author

StrikerRUS commented Jun 12, 2020

OK, as we've agreed to drop Python 3.5 after 0.8.0 release, I'd like to list all files in the project that should be checked for replacing format to f-string. It will be useful because I don't think that one huge PR is a good idea. Instead, a bunch of small PRs is better in terms of review speed and ease.

  • m2cgen\setup.py
  • m2cgen\generated_code_examples\python\classification\decision_tree.py
  • m2cgen\generated_code_examples\python\classification\lightgbm.py
  • m2cgen\generated_code_examples\python\classification\linear.py
  • m2cgen\generated_code_examples\python\classification\random_forest.py
  • m2cgen\generated_code_examples\python\classification\svm.py
  • m2cgen\generated_code_examples\python\classification\xgboost.py
  • m2cgen\generated_code_examples\python\regression\decision_tree.py
  • m2cgen\generated_code_examples\python\regression\lightgbm.py
  • m2cgen\generated_code_examples\python\regression\linear.py
  • m2cgen\generated_code_examples\python\regression\random_forest.py
  • m2cgen\generated_code_examples\python\regression\svm.py
  • m2cgen\generated_code_examples\python\regression\xgboost.py
  • m2cgen\m2cgen\ast.py
  • m2cgen\m2cgen\cli.py
  • m2cgen\m2cgen\exporters.py
  • m2cgen\m2cgen_init_.py
  • m2cgen\m2cgen_main_.py
  • m2cgen\m2cgen\assemblers\base.py
  • m2cgen\m2cgen\assemblers\boosting.py
  • m2cgen\m2cgen\assemblers\ensemble.py
  • m2cgen\m2cgen\assemblers\fallback_expressions.py
  • m2cgen\m2cgen\assemblers\linear.py
  • m2cgen\m2cgen\assemblers\meta.py
  • m2cgen\m2cgen\assemblers\svm.py
  • m2cgen\m2cgen\assemblers\tree.py
  • m2cgen\m2cgen\assemblers\utils.py
  • m2cgen\m2cgen\assemblers_init_.py
  • m2cgen\m2cgen\interpreters\code_generator.py
  • m2cgen\m2cgen\interpreters\interpreter.py
  • m2cgen\m2cgen\interpreters\mixins.py
  • m2cgen\m2cgen\interpreters\utils.py
  • m2cgen\m2cgen\interpreters_init_.py
  • m2cgen\m2cgen\interpreters\c\code_generator.py
  • m2cgen\m2cgen\interpreters\c\interpreter.py
  • m2cgen\m2cgen\interpreters\c_init_.py
  • m2cgen\m2cgen\interpreters\c_sharp\code_generator.py
  • m2cgen\m2cgen\interpreters\c_sharp\interpreter.py
  • m2cgen\m2cgen\interpreters\c_sharp_init_.py
  • m2cgen\m2cgen\interpreters\dart\code_generator.py
  • m2cgen\m2cgen\interpreters\dart\interpreter.py
  • m2cgen\m2cgen\interpreters\dart_init_.py
  • m2cgen\m2cgen\interpreters\go\code_generator.py
  • m2cgen\m2cgen\interpreters\go\interpreter.py
  • m2cgen\m2cgen\interpreters\go_init_.py
  • m2cgen\m2cgen\interpreters\haskell\code_generator.py
  • m2cgen\m2cgen\interpreters\haskell\interpreter.py
  • m2cgen\m2cgen\interpreters\haskell_init_.py
  • m2cgen\m2cgen\interpreters\java\code_generator.py
  • m2cgen\m2cgen\interpreters\java\interpreter.py
  • m2cgen\m2cgen\interpreters\java_init_.py
  • m2cgen\m2cgen\interpreters\javascript\code_generator.py
  • m2cgen\m2cgen\interpreters\javascript\interpreter.py
  • m2cgen\m2cgen\interpreters\javascript_init_.py
  • m2cgen\m2cgen\interpreters\php\code_generator.py
  • m2cgen\m2cgen\interpreters\php\interpreter.py
  • m2cgen\m2cgen\interpreters\php_init_.py
  • m2cgen\m2cgen\interpreters\powershell\code_generator.py
  • m2cgen\m2cgen\interpreters\powershell\interpreter.py
  • m2cgen\m2cgen\interpreters\powershell_init_.py
  • m2cgen\m2cgen\interpreters\python\code_generator.py
  • m2cgen\m2cgen\interpreters\python\interpreter.py
  • m2cgen\m2cgen\interpreters\python\linear_algebra.py
  • m2cgen\m2cgen\interpreters\python_init_.py
  • m2cgen\m2cgen\interpreters\r\code_generator.py
  • m2cgen\m2cgen\interpreters\r\interpreter.py
  • m2cgen\m2cgen\interpreters\r_init_.py
  • m2cgen\m2cgen\interpreters\ruby\code_generator.py
  • m2cgen\m2cgen\interpreters\ruby\interpreter.py
  • m2cgen\m2cgen\interpreters\ruby_init_.py
  • m2cgen\m2cgen\interpreters\visual_basic\code_generator.py
  • m2cgen\m2cgen\interpreters\visual_basic\interpreter.py
  • m2cgen\m2cgen\interpreters\visual_basic_init_.py
  • m2cgen\tests\conftest.py
  • m2cgen\tests\test_ast.py
  • m2cgen\tests\test_cli.py
  • m2cgen\tests\test_fallback_expressions.py
  • m2cgen\tests\utils.py
  • m2cgen\tests_init_.py
  • m2cgen\tests\assemblers\test_ensemble.py
  • m2cgen\tests\assemblers\test_lightgbm.py
  • m2cgen\tests\assemblers\test_linear.py
  • m2cgen\tests\assemblers\test_meta.py
  • m2cgen\tests\assemblers\test_svm.py
  • m2cgen\tests\assemblers\test_tree.py
  • m2cgen\tests\assemblers\test_xgboost.py
  • m2cgen\tests\assemblers_init_.py
  • m2cgen\tests\e2e\test_cli.py
  • m2cgen\tests\e2e\test_e2e.py
  • m2cgen\tests\e2e_init_.py
  • m2cgen\tests\e2e\executors\base.py
  • m2cgen\tests\e2e\executors\c.py
  • m2cgen\tests\e2e\executors\c_sharp.py
  • m2cgen\tests\e2e\executors\dart.py
  • m2cgen\tests\e2e\executors\go.py
  • m2cgen\tests\e2e\executors\haskell.py
  • m2cgen\tests\e2e\executors\java.py
  • m2cgen\tests\e2e\executors\javascript.py
  • m2cgen\tests\e2e\executors\php.py
  • m2cgen\tests\e2e\executors\powershell.py
  • m2cgen\tests\e2e\executors\python.py
  • m2cgen\tests\e2e\executors\r.py
  • m2cgen\tests\e2e\executors\ruby.py
  • m2cgen\tests\e2e\executors\visual_basic.py
  • m2cgen\tests\e2e\executors_init_.py
  • m2cgen\tests\interpreters\test_c.py
  • m2cgen\tests\interpreters\test_c_sharp.py
  • m2cgen\tests\interpreters\test_dart.py
  • m2cgen\tests\interpreters\test_go.py
  • m2cgen\tests\interpreters\test_haskell.py
  • m2cgen\tests\interpreters\test_java.py
  • m2cgen\tests\interpreters\test_javascript.py
  • m2cgen\tests\interpreters\test_php.py
  • m2cgen\tests\interpreters\test_powershell.py
  • m2cgen\tests\interpreters\test_python.py
  • m2cgen\tests\interpreters\test_r.py
  • m2cgen\tests\interpreters\test_ruby.py
  • m2cgen\tests\interpreters\test_visual_basic.py
  • m2cgen\tests\interpreters_init_.py
  • m2cgen\tools\generate_code_examples.py
  • m2cgen\tools_init_.py

@StrikerRUS
Copy link
Member Author

Closed via #248 and #254.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant