| 389 | |
| 390 | |
| 391 | def _parse_letter_version(letter, number): |
| 392 | if letter: |
| 393 | # We assume there is an implicit 0 in a pre-release if there is |
| 394 | # no numeral associated with it. |
| 395 | if number is None: |
| 396 | number = 0 |
| 397 | |
| 398 | # We normalize any letters to their lower-case form |
| 399 | letter = letter.lower() |
| 400 | |
| 401 | # We consider some words to be alternate spellings of other words and |
| 402 | # in those cases we want to normalize the spellings to our preferred |
| 403 | # spelling. |
| 404 | if letter == "alpha": |
| 405 | letter = "a" |
| 406 | elif letter == "beta": |
| 407 | letter = "b" |
| 408 | elif letter in ["c", "pre", "preview"]: |
| 409 | letter = "rc" |
| 410 | elif letter in ["rev", "r"]: |
| 411 | letter = "post" |
| 412 | |
| 413 | return letter, int(number) |
| 414 | if not letter and number: |
| 415 | # We assume that if we are given a number but not given a letter, |
| 416 | # then this is using the implicit post release syntax (e.g., 1.0-1) |
| 417 | letter = "post" |
| 418 | |
| 419 | return letter, int(number) |
| 420 | |
| 421 | |
| 422 | _local_version_seperators = re.compile(r"[\._-]") |