Changeset View
Changeset View
Standalone View
Standalone View
swh/search/utils.py
# Copyright (C) 2021 The Software Heritage developers | |||||
# See the AUTHORS file at the top-level directory of this distribution | |||||
# License: GNU General Public License version 3, or any later version | |||||
# See top-level LICENSE file for more information | |||||
import codecs | |||||
from datetime import datetime | from datetime import datetime | ||||
import iso8601 # type: ignore | import iso8601 # type: ignore | ||||
def get_expansion(field, sep=None): | def get_expansion(field, sep=None): | ||||
METADATA_FIELDS = { | METADATA_FIELDS = { | ||||
"licenses": ["intrinsic_metadata", "http://schema.org/license", "@id"], | "licenses": ["intrinsic_metadata", "http://schema.org/license", "@id"], | ||||
▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Lines | def unescape(string): | ||||
>>> unescape(r'''foo \" bar''') == r'''foo " bar''' | >>> unescape(r'''foo \" bar''') == r'''foo " bar''' | ||||
True | True | ||||
>>> unescape(r'''foo \\" bar''') == r'''foo \" bar''' | >>> unescape(r'''foo \\" bar''') == r'''foo \" bar''' | ||||
True | True | ||||
>>> unescape(r'''foo \\\" bar''') == r'''foo \" bar''' | >>> unescape(r'''foo \\\" bar''') == r'''foo \" bar''' | ||||
True | True | ||||
>>> unescape(r'''foo \\\\" bar''') == r'''foo \\" bar''' | >>> unescape(r'''foo \\\\" bar''') == r'''foo \\" bar''' | ||||
True | True | ||||
>>> unescape(r'''café \" foo''') == r'''café " foo''' | |||||
True | |||||
""" | """ | ||||
return codecs.escape_decode(string.encode())[0].decode() | |||||
return bytes(string, "utf-8").decode("unicode_escape") |