Comment by vlade11115
Comment by vlade11115 3 days 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.
Comment by vlade11115 3 days 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.
Should 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)You 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(...)
The 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.
Can you explain why? Genuinely curious as a lover of case/match. My only complaint is that it is not general enough.