6 ms·
While the article is very entertaining, I'm not a fan of the pattern matching in Python. I wish for some linter rule that can forbid the usage of pattern matchi
by vlade11115 1y ago
While the article is very entertaining, I'm not a fan of the pattern matching in Python.
I wish for some linter rule that can forbid the usage of pattern matching.
- siddboots 1y agoCan you explain why? Genuinely curious as a lover of case/match. My only complaint is that it is not general enough.
- kurtis_reed 1y agoDouble indentation
- maleldil 1y agoSo? Other languages with pattern match similarly have such double indentation. C-style switch with unintended cases is weird.
- smcl 1y agoIf you're experienced enough with Python to say "I want to eliminate pattern matching from my codebase" you can surely construct that as a pre-commit check, no?
- jbmchuck 1y agoShould be easily doable with a semgrep rule, e.g.: ~> cat semgrep.yaml rules: - id: no-pattern-matching pattern: | match ...: message: | I'm not a fan of the pattern matching in Python severity: ERROR languages: - python ... ~> cat test.py #!/usr/bin/env python3 foo = 1 match foo: case 1: print("one") ... ~> semgrep --config semgrep.yaml test.py no-pattern-matching I'm not a fan of the pattern matching in Python 4┆ match foo: 5┆ case 1: 6┆ print("one") (exits non-0)
- PokestarFan 1y agoYou need to make that exclude match = ... since match can also be a variable name. This is because people used to write code like match = re.search(...)
- TheDong 1y agoThe existing pattern suggested above, "match ...:", will not match 'match = ...'. Presumably the reason the parent comment suggested semgrep, not just a grep, is because they're aware that naive substring matching would be wrong. You could use the playground to check your understanding before implying someone is an idiot. https://semgrep.dev/playground/new https://semgrep.dev/playground/new