Repository: iterative/gto (language: python)

Issue:
change artifact name regex
~Having an issue with tests, but opening this for discussion in the meantime.~

The PR adds support for uppercase letters and `_`. I decided against support for `.` because there are some restrictions around how it can be used in [git refs](https://git-scm.com/docs/git-check-ref-format). 

Related: https://github.com/iterative/dvc/issues/9821

TODO:
- [x] Tests
- [ ] DVC PR
- [ ] DVCLive PR to improve [warning](https://github.com/iterative/dvclive/blob/95000f45638d5126b7d76833050f549167a7449d/src/dvclive/live.py#L462-L466)
- [ ] Docs PR


Discussion / hints:
@aguschin Do you mind reviewing when you have a chance?
## [Codecov](https://app.codecov.io/gh/iterative/gto/pull/398?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=iterative) Report
Patch coverage is **`100.00%`** of modified lines.

| [Files Changed](https://app.codecov.io/gh/iterative/gto/pull/398?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=iterative) | Coverage |
|---|---|
| [gto/constants.py](https://app.codecov.io/gh/iterative/gto/pull/398?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=iterative#diff-Z3RvL2NvbnN0YW50cy5weQ==) | `100.00%` |


:loudspeaker: Thoughts on this report? [Let us know!](https://about.codecov.io/pull-request-comment-report/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=iterative).


Fix patch:
diff --git a/gto/constants.py b/gto/constants.py
index 20a54ee7..8ac794bd 100644
--- a/gto/constants.py
+++ b/gto/constants.py
@@ -42,7 +42,7 @@ def tag_to_name(value):
 
 
 dirname = "[a-z0-9-_./]+"  # improve?
-name = r"[a-z0-9]([a-z0-9-/_]*[A-Za-z0-9])?"
+name = r"[a-z0-9]([a-z0-9-/_]*[a-z0-9])?"
 semver = r"(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?"
 counter = "?P<counter>[0-9]+"
 name_re = re.compile(f"^{name}$")


Test patch:
diff --git a/tests/test_constants.py b/tests/test_constants.py
index 0dd5c83a..87d1c79d 100644
--- a/tests/test_constants.py
+++ b/tests/test_constants.py
@@ -41,6 +41,7 @@ def test_check_name_is_valid(name):
         "model#1",
         "@namespace/model",
         "DVCLive/Model",
+        "model A",
     ],
 )
 def test_check_name_is_invalid(name):