def test_dict_hash(): h1 = dict_hash({"foo": "bar", "bar": "baz"}) h2 = dict_hash({"foo": "bar", "bar": "baz"}) assert h1 == h2 h3 = dict_hash({"egg": "spam"}) assert h3 != h2
def test_dict_hash_nested(): h1 = dict_hash({"foo": "bar", "bar": {"baz": "spam"}}) h2 = dict_hash({"foo": "bar", "bar": {"baz": "spam"}}) assert h1 == h2 h3 = dict_hash({"foo": "bar", "bar": {"baz": "egg"}}) h4 = dict_hash({"foo": "bar", "bar": {"bam": "spam"}}) assert h3 != h2 assert h4 != h2
def test_dict_hash_non_strings(): h1 = dict_hash({ "foo": "bar", "float": 1.1, "int": 2, "bool": False, "seq": ["x", "y", (2, 3.7, { "x": 5, "y": [6, 7] })] }) h2 = dict_hash({"foo": "bar", "float": 1.2, "int": 2, "bool": False}) assert h1 != h2
def splash_request_fingerprint(request, include_headers=None): fp = request_fingerprint(request, include_headers=include_headers) if 'splash' not in request.meta: return fp splash_options = deepcopy(request.meta['splash']) args = splash_options.setdefault('args', {}) if 'url' in args: args['url'] = canonicalize_url(args['url'], keep_fragments=True) return dict_hash(splash_options, fp)
def splash_request_fingerprint(request, include_headers=None): """ Request fingerprint which takes 'splash' meta key into account """ # 生成指纹 fp = request_fingerprint(request, include_headers=include_headers) # 实现了splash的渲染功能代码 if 'splash' not in request.meta: return fp splash_options = deepcopy(request.meta['splash']) args = splash_options.setdefault('args', {}) if 'url' in args: args['url'] = canonicalize_url(args['url'], keep_fragments=True) return dict_hash(splash_options, fp)
def test_dict_hash(val1, val2): assume(val1 != val2) assert dict_hash(val1) == dict_hash(val1) assert dict_hash(val1) != dict_hash(val2)
def test_dict_hash_invalid(): with pytest.raises(ValueError): dict_hash({"foo": scrapy})
def test_dict_hash_non_strings(): h1 = dict_hash({"foo": "bar", "float": 1.1, "int": 2, "bool": False, "seq": ["x", "y", (2, 3.7, {"x": 5, "y": [6, 7]})]}) h2 = dict_hash({"foo": "bar", "float": 1.2, "int": 2, "bool": False}) assert h1 != h2