MCPcopy Index your code
hub / github.com/python/cpython / _get_charset_prefix

Function _get_charset_prefix

Lib/re/_compiler.py:481–523  ·  view source on GitHub ↗
(pattern, flags)

Source from the content-addressed store, hash-verified

479 return prefix, prefix_skip, False
480
481def _get_charset_prefix(pattern, flags):
482 while True:
483 if not pattern.data:
484 return None
485 op, av = pattern.data[0]
486 if op is not SUBPATTERN:
487 break
488 group, add_flags, del_flags, pattern = av
489 flags = _combine_flags(flags, add_flags, del_flags)
490 if flags & SRE_FLAG_IGNORECASE and flags & SRE_FLAG_LOCALE:
491 return None
492
493 iscased = _get_iscased(flags)
494 if op is LITERAL:
495 if iscased and iscased(av):
496 return None
497 return [(op, av)]
498 elif op is BRANCH:
499 charset = []
500 charsetappend = charset.append
501 for p in av[1]:
502 if not p:
503 return None
504 op, av = p[0]
505 if op is LITERAL and not (iscased and iscased(av)):
506 charsetappend((op, av))
507 else:
508 return None
509 return charset
510 elif op is IN:
511 charset = av
512 if iscased:
513 for op, av in charset:
514 if op is LITERAL:
515 if iscased(av):
516 return None
517 elif op is RANGE:
518 if av[1] > 0xffff:
519 return None
520 if any(map(iscased, range(av[0], av[1]+1))):
521 return None
522 return charset
523 return None
524
525def _compile_info(code, pattern, flags):
526 # internal: compile an info block. in the current version,

Callers 1

_compile_infoFunction · 0.85

Calls 3

_combine_flagsFunction · 0.85
_get_iscasedFunction · 0.85
anyFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…