From 4ae684acdb490e8c0ec08a515d5eb6be504541e8 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Tue, 14 Sep 2021 21:10:41 +0300 Subject: [PATCH] Added web UI --- .../Eel-0.14.0-py3.9.egg-info/PKG-INFO | 716 +-- .../INSTALLER | 0 .../MarkupSafe-2.0.1.dist-info/LICENSE.rst | 28 + .../MarkupSafe-2.0.1.dist-info/METADATA | 100 + .../MarkupSafe-2.0.1.dist-info/RECORD | 13 + .../MarkupSafe-2.0.1.dist-info/WHEEL | 5 + .../MarkupSafe-2.0.1.dist-info/top_level.txt | 1 + .../__pycache__/bottle.cpython-39.pyc | Bin 145404 -> 145408 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 240382 -> 240386 bytes .../__pycache__/whichcraft.cpython-39.pyc | Bin 1928 -> 1932 bytes .../site-packages/_distutils_hack/__init__.py | 2 +- .../__pycache__/__init__.cpython-39.pyc | Bin 5094 -> 5099 bytes .../__pycache__/override.cpython-39.pyc | Bin 226 -> 230 bytes .../PKG-INFO | 6 +- .../__pycache__/__init__.cpython-39.pyc | Bin 323 -> 327 bytes .../__pycache__/plugin.cpython-39.pyc | Bin 527 -> 531 bytes .../__pycache__/server.cpython-39.pyc | Bin 951 -> 955 bytes .../bs4-0.0.1-py3.9.egg-info/PKG-INFO | 6 +- .../bs4/__pycache__/__init__.cpython-39.pyc | Bin 23177 -> 23181 bytes .../bs4/__pycache__/dammit.cpython-39.pyc | Bin 71363 -> 71367 bytes .../bs4/__pycache__/diagnose.cpython-39.pyc | Bin 8454 -> 8458 bytes .../bs4/__pycache__/element.cpython-39.pyc | Bin 65425 -> 65429 bytes .../bs4/__pycache__/formatter.cpython-39.pyc | Bin 6167 -> 6171 bytes .../bs4/__pycache__/testing.cpython-39.pyc | Bin 44332 -> 44336 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 15399 -> 15403 bytes .../__pycache__/_html5lib.cpython-39.pyc | Bin 12489 -> 12493 bytes .../__pycache__/_htmlparser.cpython-39.pyc | Bin 13062 -> 13066 bytes .../builder/__pycache__/_lxml.cpython-39.pyc | Bin 9494 -> 9498 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 251 -> 255 bytes .../__pycache__/__main__.cpython-39.pyc | Bin 416 -> 420 bytes .../certifi/__pycache__/core.cpython-39.pyc | Bin 1142 -> 1146 bytes .../cffi/__pycache__/__init__.cpython-39.pyc | Bin 505 -> 509 bytes .../cffi/__pycache__/api.cpython-39.pyc | Bin 34348 -> 34352 bytes .../__pycache__/backend_ctypes.cpython-39.pyc | Bin 39945 -> 39949 bytes .../__pycache__/cffi_opcode.cpython-39.pyc | Bin 4741 -> 4745 bytes .../__pycache__/commontypes.cpython-39.pyc | Bin 1886 -> 1890 bytes .../cffi/__pycache__/cparser.cpython-39.pyc | Bin 23709 -> 23713 bytes .../cffi/__pycache__/error.cpython-39.pyc | Bin 1506 -> 1510 bytes .../__pycache__/ffiplatform.cpython-39.pyc | Bin 3563 -> 3567 bytes .../cffi/__pycache__/lock.cpython-39.pyc | Bin 403 -> 407 bytes .../cffi/__pycache__/model.cpython-39.pyc | Bin 19745 -> 19749 bytes .../cffi/__pycache__/pkgconfig.cpython-39.pyc | Bin 5141 -> 5145 bytes .../__pycache__/recompiler.cpython-39.pyc | Bin 46940 -> 46944 bytes .../__pycache__/setuptools_ext.cpython-39.pyc | Bin 7280 -> 7284 bytes .../__pycache__/vengine_cpy.cpython-39.pyc | Bin 35466 -> 35470 bytes .../__pycache__/vengine_gen.cpython-39.pyc | Bin 21003 -> 21007 bytes .../cffi/__pycache__/verifier.cpython-39.pyc | Bin 9309 -> 9313 bytes .../charset_normalizer-2.0.4.dist-info/RECORD | 2 +- .../__pycache__/__init__.cpython-39.pyc | Bin 1879 -> 1883 bytes .../__pycache__/api.cpython-39.pyc | Bin 9649 -> 9653 bytes .../__pycache__/cd.cpython-39.pyc | Bin 7142 -> 7146 bytes .../__pycache__/constant.cpython-39.pyc | Bin 12949 -> 12953 bytes .../__pycache__/legacy.cpython-39.pyc | Bin 1443 -> 1447 bytes .../__pycache__/md.cpython-39.pyc | Bin 14072 -> 14076 bytes .../__pycache__/models.cpython-39.pyc | Bin 12459 -> 12463 bytes .../__pycache__/utils.cpython-39.pyc | Bin 7216 -> 7220 bytes .../__pycache__/version.cpython-39.pyc | Bin 262 -> 266 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 7271 -> 7275 bytes .../cli/__pycache__/__init__.cpython-39.pyc | Bin 182 -> 186 bytes .../cli/__pycache__/normalizer.cpython-39.pyc | Bin 5852 -> 5856 bytes .../eel/__pycache__/__init__.cpython-39.pyc | Bin 10158 -> 10162 bytes .../eel/__pycache__/__main__.cpython-39.pyc | Bin 1205 -> 1209 bytes .../eel/__pycache__/browsers.cpython-39.pyc | Bin 1904 -> 1908 bytes .../eel/__pycache__/chrome.cpython-39.pyc | Bin 2660 -> 2664 bytes .../eel/__pycache__/edge.cpython-39.pyc | Bin 655 -> 659 bytes .../eel/__pycache__/electron.cpython-39.pyc | Bin 841 -> 845 bytes .../future-0.18.2-py3.9.egg-info/PKG-INFO | 169 +- .../__pycache__/__init__.cpython-39.pyc | Bin 3136 -> 3140 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 633 -> 637 bytes .../__pycache__/_markupbase.cpython-39.pyc | Bin 9460 -> 9464 bytes .../__pycache__/datetime.cpython-39.pyc | Bin 49339 -> 49343 bytes .../backports/__pycache__/misc.cpython-39.pyc | Bin 28769 -> 28773 bytes .../__pycache__/socket.cpython-39.pyc | Bin 14276 -> 14280 bytes .../__pycache__/socketserver.cpython-39.pyc | Bin 22285 -> 22289 bytes .../__pycache__/total_ordering.cpython-39.pyc | Bin 2266 -> 2270 bytes .../email/__pycache__/__init__.cpython-39.pyc | Bin 2039 -> 2043 bytes .../__pycache__/_encoded_words.cpython-39.pyc | Bin 6160 -> 6164 bytes .../_header_value_parser.cpython-39.pyc | Bin 80102 -> 80106 bytes .../__pycache__/_parseaddr.cpython-39.pyc | Bin 12577 -> 12581 bytes .../__pycache__/_policybase.cpython-39.pyc | Bin 14639 -> 14643 bytes .../__pycache__/base64mime.cpython-39.pyc | Bin 3481 -> 3485 bytes .../email/__pycache__/charset.cpython-39.pyc | Bin 11882 -> 11886 bytes .../email/__pycache__/encoders.cpython-39.pyc | Bin 2172 -> 2176 bytes .../email/__pycache__/errors.cpython-39.pyc | Bin 5933 -> 5937 bytes .../__pycache__/feedparser.cpython-39.pyc | Bin 10683 -> 10687 bytes .../__pycache__/generator.cpython-39.pyc | Bin 11769 -> 11773 bytes .../email/__pycache__/header.cpython-39.pyc | Bin 17016 -> 17020 bytes .../__pycache__/headerregistry.cpython-39.pyc | Bin 21194 -> 21198 bytes .../__pycache__/iterators.cpython-39.pyc | Bin 2175 -> 2179 bytes .../email/__pycache__/message.cpython-39.pyc | Bin 28630 -> 28634 bytes .../email/__pycache__/parser.cpython-39.pyc | Bin 6082 -> 6086 bytes .../email/__pycache__/policy.cpython-39.pyc | Bin 8357 -> 8361 bytes .../__pycache__/quoprimime.cpython-39.pyc | Bin 9312 -> 9316 bytes .../email/__pycache__/utils.cpython-39.pyc | Bin 10378 -> 10382 bytes .../mime/__pycache__/__init__.cpython-39.pyc | Bin 187 -> 191 bytes .../__pycache__/application.cpython-39.pyc | Bin 1630 -> 1634 bytes .../mime/__pycache__/audio.cpython-39.pyc | Bin 2795 -> 2799 bytes .../mime/__pycache__/base.cpython-39.pyc | Bin 1119 -> 1123 bytes .../mime/__pycache__/image.cpython-39.pyc | Bin 2075 -> 2079 bytes .../mime/__pycache__/message.cpython-39.pyc | Bin 1461 -> 1465 bytes .../mime/__pycache__/multipart.cpython-39.pyc | Bin 1660 -> 1664 bytes .../__pycache__/nonmultipart.cpython-39.pyc | Bin 971 -> 975 bytes .../mime/__pycache__/text.cpython-39.pyc | Bin 1487 -> 1491 bytes .../html/__pycache__/__init__.cpython-39.pyc | Bin 1039 -> 1043 bytes .../html/__pycache__/entities.cpython-39.pyc | Bin 50746 -> 50750 bytes .../html/__pycache__/parser.cpython-39.pyc | Bin 13628 -> 13632 bytes .../http/__pycache__/__init__.cpython-39.pyc | Bin 181 -> 185 bytes .../http/__pycache__/client.cpython-39.pyc | Bin 30748 -> 30752 bytes .../http/__pycache__/cookiejar.cpython-39.pyc | Bin 53851 -> 53855 bytes .../http/__pycache__/cookies.cpython-39.pyc | Bin 16326 -> 16330 bytes .../http/__pycache__/server.cpython-39.pyc | Bin 34444 -> 34448 bytes .../test/__pycache__/__init__.cpython-39.pyc | Bin 453 -> 457 bytes .../test/__pycache__/pystone.cpython-39.pyc | Bin 6757 -> 6761 bytes .../__pycache__/ssl_servers.cpython-39.pyc | Bin 7089 -> 7093 bytes .../test/__pycache__/support.cpython-39.pyc | Bin 55871 -> 55875 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 183 -> 187 bytes .../urllib/__pycache__/error.cpython-39.pyc | Bin 2679 -> 2683 bytes .../urllib/__pycache__/parse.cpython-39.pyc | Bin 28866 -> 28870 bytes .../urllib/__pycache__/request.cpython-39.pyc | Bin 69749 -> 69753 bytes .../__pycache__/response.cpython-39.pyc | Bin 3922 -> 3926 bytes .../__pycache__/robotparser.cpython-39.pyc | Bin 6123 -> 6127 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 183 -> 187 bytes .../xmlrpc/__pycache__/client.cpython-39.pyc | Bin 33746 -> 33750 bytes .../xmlrpc/__pycache__/server.cpython-39.pyc | Bin 29881 -> 29885 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 1243 -> 1247 bytes .../__pycache__/disabled.cpython-39.pyc | Bin 2339 -> 2343 bytes .../__pycache__/iterators.cpython-39.pyc | Bin 1516 -> 1520 bytes .../builtins/__pycache__/misc.cpython-39.pyc | Bin 3067 -> 3071 bytes .../__pycache__/new_min_max.cpython-39.pyc | Bin 1580 -> 1584 bytes .../__pycache__/newnext.cpython-39.pyc | Bin 2034 -> 2038 bytes .../__pycache__/newround.cpython-39.pyc | Bin 2817 -> 2821 bytes .../__pycache__/newsuper.cpython-39.pyc | Bin 2851 -> 2855 bytes .../moves/__pycache__/__init__.cpython-39.pyc | Bin 378 -> 382 bytes .../__pycache__/_dummy_thread.cpython-39.pyc | Bin 355 -> 359 bytes .../__pycache__/_markupbase.cpython-39.pyc | Bin 349 -> 353 bytes .../moves/__pycache__/_thread.cpython-39.pyc | Bin 337 -> 341 bytes .../moves/__pycache__/builtins.cpython-39.pyc | Bin 371 -> 375 bytes .../__pycache__/collections.cpython-39.pyc | Bin 626 -> 630 bytes .../__pycache__/configparser.cpython-39.pyc | Bin 327 -> 331 bytes .../moves/__pycache__/copyreg.cpython-39.pyc | Bin 395 -> 399 bytes .../__pycache__/itertools.cpython-39.pyc | Bin 356 -> 360 bytes .../moves/__pycache__/pickle.cpython-39.pyc | Bin 387 -> 391 bytes .../moves/__pycache__/queue.cpython-39.pyc | Bin 332 -> 336 bytes .../moves/__pycache__/reprlib.cpython-39.pyc | Bin 335 -> 339 bytes .../__pycache__/socketserver.cpython-39.pyc | Bin 353 -> 357 bytes .../__pycache__/subprocess.cpython-39.pyc | Bin 470 -> 474 bytes .../moves/__pycache__/sys.cpython-39.pyc | Bin 325 -> 329 bytes .../moves/__pycache__/winreg.cpython-39.pyc | Bin 336 -> 340 bytes .../dbm/__pycache__/__init__.cpython-39.pyc | Bin 471 -> 475 bytes .../moves/dbm/__pycache__/dumb.cpython-39.pyc | Bin 340 -> 344 bytes .../moves/dbm/__pycache__/gnu.cpython-39.pyc | Bin 335 -> 339 bytes .../moves/dbm/__pycache__/ndbm.cpython-39.pyc | Bin 336 -> 340 bytes .../html/__pycache__/__init__.cpython-39.pyc | Bin 853 -> 857 bytes .../html/__pycache__/entities.cpython-39.pyc | Bin 357 -> 361 bytes .../html/__pycache__/parser.cpython-39.pyc | Bin 349 -> 353 bytes .../http/__pycache__/__init__.cpython-39.pyc | Bin 249 -> 253 bytes .../http/__pycache__/client.cpython-39.pyc | Bin 330 -> 334 bytes .../http/__pycache__/cookiejar.cpython-39.pyc | Bin 354 -> 358 bytes .../http/__pycache__/cookies.cpython-39.pyc | Bin 376 -> 380 bytes .../http/__pycache__/server.cpython-39.pyc | Bin 565 -> 569 bytes .../test/__pycache__/__init__.cpython-39.pyc | Bin 299 -> 303 bytes .../test/__pycache__/support.cpython-39.pyc | Bin 459 -> 463 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 703 -> 707 bytes .../__pycache__/colorchooser.cpython-39.pyc | Bin 479 -> 483 bytes .../__pycache__/commondialog.cpython-39.pyc | Bin 479 -> 483 bytes .../__pycache__/constants.cpython-39.pyc | Bin 467 -> 471 bytes .../tkinter/__pycache__/dialog.cpython-39.pyc | Bin 451 -> 455 bytes .../tkinter/__pycache__/dnd.cpython-39.pyc | Bin 443 -> 447 bytes .../__pycache__/filedialog.cpython-39.pyc | Bin 467 -> 471 bytes .../tkinter/__pycache__/font.cpython-39.pyc | Bin 447 -> 451 bytes .../__pycache__/messagebox.cpython-39.pyc | Bin 471 -> 475 bytes .../__pycache__/scrolledtext.cpython-39.pyc | Bin 475 -> 479 bytes .../__pycache__/simpledialog.cpython-39.pyc | Bin 475 -> 479 bytes .../tkinter/__pycache__/tix.cpython-39.pyc | Bin 439 -> 443 bytes .../tkinter/__pycache__/ttk.cpython-39.pyc | Bin 439 -> 443 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 301 -> 305 bytes .../urllib/__pycache__/error.cpython-39.pyc | Bin 541 -> 545 bytes .../urllib/__pycache__/parse.cpython-39.pyc | Bin 782 -> 786 bytes .../urllib/__pycache__/request.cpython-39.pyc | Bin 1078 -> 1082 bytes .../__pycache__/response.cpython-39.pyc | Bin 489 -> 493 bytes .../__pycache__/robotparser.cpython-39.pyc | Bin 364 -> 368 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 179 -> 183 bytes .../xmlrpc/__pycache__/client.cpython-39.pyc | Bin 326 -> 330 bytes .../xmlrpc/__pycache__/server.cpython-39.pyc | Bin 326 -> 330 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 18407 -> 18411 bytes .../tests/__pycache__/__init__.cpython-39.pyc | Bin 172 -> 176 bytes .../tests/__pycache__/base.cpython-39.pyc | Bin 16676 -> 16680 bytes .../types/__pycache__/__init__.cpython-39.pyc | Bin 6000 -> 6004 bytes .../types/__pycache__/newbytes.cpython-39.pyc | Bin 14333 -> 14337 bytes .../types/__pycache__/newdict.cpython-39.pyc | Bin 3606 -> 3610 bytes .../types/__pycache__/newint.cpython-39.pyc | Bin 12561 -> 12565 bytes .../types/__pycache__/newlist.cpython-39.pyc | Bin 3086 -> 3090 bytes .../__pycache__/newmemoryview.cpython-39.pyc | Bin 991 -> 995 bytes .../__pycache__/newobject.cpython-39.pyc | Bin 2658 -> 2662 bytes .../types/__pycache__/newopen.cpython-39.pyc | Bin 1595 -> 1599 bytes .../types/__pycache__/newrange.cpython-39.pyc | Bin 6123 -> 6127 bytes .../types/__pycache__/newstr.cpython-39.pyc | Bin 14552 -> 14556 bytes .../utils/__pycache__/__init__.cpython-39.pyc | Bin 20278 -> 20282 bytes .../surrogateescape.cpython-39.pyc | Bin 3834 -> 3838 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 2453 -> 2457 bytes .../_abstract_linkable.cpython-39.pyc | Bin 10346 -> 10350 bytes .../gevent/__pycache__/_compat.cpython-39.pyc | Bin 5303 -> 5307 bytes .../gevent/__pycache__/_config.cpython-39.pyc | Bin 20420 -> 20424 bytes .../_fileobjectcommon.cpython-39.pyc | Bin 18941 -> 18945 bytes .../_fileobjectposix.cpython-39.pyc | Bin 10447 -> 10451 bytes .../_greenlet_primitives.cpython-39.pyc | Bin 2891 -> 2895 bytes .../__pycache__/_hub_local.cpython-39.pyc | Bin 2805 -> 2809 bytes .../_hub_primitives.cpython-39.pyc | Bin 12042 -> 12046 bytes .../gevent/__pycache__/_ident.cpython-39.pyc | Bin 2107 -> 2111 bytes .../gevent/__pycache__/_imap.cpython-39.pyc | Bin 6245 -> 6249 bytes .../__pycache__/_interfaces.cpython-39.pyc | Bin 11652 -> 11656 bytes .../__pycache__/_monitor.cpython-39.pyc | Bin 8066 -> 8070 bytes .../__pycache__/_patcher.cpython-39.pyc | Bin 7184 -> 7188 bytes .../__pycache__/_semaphore.cpython-39.pyc | Bin 13051 -> 13055 bytes .../__pycache__/_socket2.cpython-39.pyc | Bin 8036 -> 8040 bytes .../__pycache__/_socket3.cpython-39.pyc | Bin 16258 -> 16262 bytes .../__pycache__/_socketcommon.cpython-39.pyc | Bin 16982 -> 16986 bytes .../gevent/__pycache__/_ssl2.cpython-39.pyc | Bin 11352 -> 11356 bytes .../gevent/__pycache__/_ssl3.cpython-39.pyc | Bin 20365 -> 20369 bytes .../__pycache__/_sslgte279.cpython-39.pyc | Bin 18692 -> 18696 bytes .../gevent/__pycache__/_tblib.cpython-39.pyc | Bin 10053 -> 10057 bytes .../__pycache__/_threading.cpython-39.pyc | Bin 4933 -> 4937 bytes .../gevent/__pycache__/_tracer.cpython-39.pyc | Bin 4837 -> 4841 bytes .../gevent/__pycache__/_util.cpython-39.pyc | Bin 9156 -> 9160 bytes .../__pycache__/_util_py2.cpython-39.pyc | Bin 641 -> 645 bytes .../gevent/__pycache__/_waiter.cpython-39.pyc | Bin 6950 -> 6954 bytes .../gevent/__pycache__/ares.cpython-39.pyc | Bin 404 -> 408 bytes .../__pycache__/backdoor.cpython-39.pyc | Bin 7820 -> 7824 bytes .../__pycache__/baseserver.cpython-39.pyc | Bin 13071 -> 13075 bytes .../__pycache__/builtins.cpython-39.pyc | Bin 2738 -> 2742 bytes .../__pycache__/contextvars.cpython-39.pyc | Bin 9752 -> 9756 bytes .../gevent/__pycache__/core.cpython-39.pyc | Bin 557 -> 561 bytes .../gevent/__pycache__/event.cpython-39.pyc | Bin 15251 -> 15255 bytes .../gevent/__pycache__/events.cpython-39.pyc | Bin 15299 -> 15303 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 4671 -> 4675 bytes .../__pycache__/fileobject.cpython-39.pyc | Bin 2880 -> 2884 bytes .../__pycache__/greenlet.cpython-39.pyc | Bin 33208 -> 33212 bytes .../gevent/__pycache__/hub.cpython-39.pyc | Bin 22987 -> 22991 bytes .../gevent/__pycache__/local.cpython-39.pyc | Bin 12980 -> 12984 bytes .../gevent/__pycache__/lock.cpython-39.pyc | Bin 11091 -> 11095 bytes .../gevent/__pycache__/monkey.cpython-39.pyc | Bin 35275 -> 35279 bytes .../gevent/__pycache__/os.cpython-39.pyc | Bin 13949 -> 13953 bytes .../gevent/__pycache__/pool.cpython-39.pyc | Bin 24106 -> 24110 bytes .../gevent/__pycache__/pywsgi.cpython-39.pyc | Bin 39479 -> 39483 bytes .../gevent/__pycache__/queue.cpython-39.pyc | Bin 21178 -> 21182 bytes .../__pycache__/resolver_ares.cpython-39.pyc | Bin 601 -> 605 bytes .../resolver_thread.cpython-39.pyc | Bin 617 -> 621 bytes .../gevent/__pycache__/select.cpython-39.pyc | Bin 7661 -> 7665 bytes .../__pycache__/selectors.cpython-39.pyc | Bin 5615 -> 5619 bytes .../gevent/__pycache__/server.cpython-39.pyc | Bin 8606 -> 8610 bytes .../gevent/__pycache__/signal.cpython-39.pyc | Bin 4071 -> 4075 bytes .../gevent/__pycache__/socket.cpython-39.pyc | Bin 3205 -> 3209 bytes .../gevent/__pycache__/ssl.cpython-39.pyc | Bin 913 -> 917 bytes .../__pycache__/subprocess.cpython-39.pyc | Bin 43431 -> 43435 bytes .../gevent/__pycache__/thread.cpython-39.pyc | Bin 3174 -> 3178 bytes .../__pycache__/threading.cpython-39.pyc | Bin 5657 -> 5661 bytes .../__pycache__/threadpool.cpython-39.pyc | Bin 23161 -> 23165 bytes .../gevent/__pycache__/time.cpython-39.pyc | Bin 561 -> 565 bytes .../gevent/__pycache__/timeout.cpython-39.pyc | Bin 11226 -> 11230 bytes .../gevent/__pycache__/util.cpython-39.pyc | Bin 19513 -> 19517 bytes .../__pycache__/win32util.cpython-39.pyc | Bin 2673 -> 2677 bytes .../_ffi/__pycache__/__init__.cpython-39.pyc | Bin 797 -> 801 bytes .../_ffi/__pycache__/callback.cpython-39.pyc | Bin 1627 -> 1631 bytes .../_ffi/__pycache__/loop.cpython-39.pyc | Bin 19145 -> 19149 bytes .../_ffi/__pycache__/watcher.cpython-39.pyc | Bin 19394 -> 19398 bytes .../libev/__pycache__/__init__.cpython-39.pyc | Bin 305 -> 309 bytes .../_corecffi_build.cpython-39.pyc | Bin 1958 -> 1962 bytes .../libev/__pycache__/corecffi.cpython-39.pyc | Bin 13569 -> 13573 bytes .../libev/__pycache__/watcher.cpython-39.pyc | Bin 9058 -> 9062 bytes .../libuv/__pycache__/__init__.cpython-39.pyc | Bin 305 -> 309 bytes .../_corecffi_build.cpython-39.pyc | Bin 5671 -> 5675 bytes .../libuv/__pycache__/loop.cpython-39.pyc | Bin 12866 -> 12870 bytes .../libuv/__pycache__/watcher.cpython-39.pyc | Bin 19320 -> 19324 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 7105 -> 7109 bytes .../__pycache__/_addresses.cpython-39.pyc | Bin 2984 -> 2988 bytes .../__pycache__/_hostsfile.cpython-39.pyc | Bin 2869 -> 2873 bytes .../resolver/__pycache__/ares.cpython-39.pyc | Bin 9422 -> 9426 bytes .../__pycache__/blocking.cpython-39.pyc | Bin 1540 -> 1544 bytes .../__pycache__/dnspython.cpython-39.pyc | Bin 11414 -> 11418 bytes .../__pycache__/thread.cpython-39.pyc | Bin 2822 -> 2826 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 4160 -> 4164 bytes .../__pycache__/errorhandler.cpython-39.pyc | Bin 1351 -> 1355 bytes .../__pycache__/exception.cpython-39.pyc | Bin 518 -> 522 bytes .../testing/__pycache__/flaky.cpython-39.pyc | Bin 2976 -> 2980 bytes .../testing/__pycache__/hub.cpython-39.pyc | Bin 1936 -> 1940 bytes .../__pycache__/leakcheck.cpython-39.pyc | Bin 5357 -> 5361 bytes .../__pycache__/modules.cpython-39.pyc | Bin 2552 -> 2556 bytes .../__pycache__/monkey_test.cpython-39.pyc | Bin 2146 -> 2150 bytes .../__pycache__/openfiles.cpython-39.pyc | Bin 4966 -> 4970 bytes .../testing/__pycache__/params.cpython-39.pyc | Bin 807 -> 811 bytes .../patched_tests_setup.cpython-39.pyc | Bin 27132 -> 27136 bytes .../__pycache__/resources.cpython-39.pyc | Bin 3182 -> 3186 bytes .../testing/__pycache__/six.cpython-39.pyc | Bin 1035 -> 1039 bytes .../__pycache__/skipping.cpython-39.pyc | Bin 3696 -> 3700 bytes .../__pycache__/sockets.cpython-39.pyc | Bin 1322 -> 1326 bytes .../__pycache__/support.cpython-39.pyc | Bin 3665 -> 3669 bytes .../__pycache__/switching.cpython-39.pyc | Bin 1566 -> 1570 bytes .../__pycache__/sysinfo.cpython-39.pyc | Bin 3709 -> 3713 bytes .../__pycache__/testcase.cpython-39.pyc | Bin 14091 -> 14095 bytes .../__pycache__/testrunner.cpython-39.pyc | Bin 22991 -> 22995 bytes .../testing/__pycache__/timing.cpython-39.pyc | Bin 3966 -> 3970 bytes .../testing/__pycache__/travis.cpython-39.pyc | Bin 1239 -> 1243 bytes .../testing/__pycache__/util.cpython-39.pyc | Bin 16287 -> 16291 bytes .../__pycache__/sitecustomize.cpython-39.pyc | Bin 492 -> 496 bytes .../tests/__pycache__/__init__.cpython-39.pyc | Bin 172 -> 176 bytes .../tests/__pycache__/__main__.cpython-39.pyc | Bin 361 -> 365 bytes .../_blocks_at_top_level.cpython-39.pyc | Bin 254 -> 258 bytes .../_import_import_patch.cpython-39.pyc | Bin 216 -> 220 bytes .../__pycache__/_import_patch.cpython-39.pyc | Bin 241 -> 245 bytes .../__pycache__/_import_wait.cpython-39.pyc | Bin 723 -> 727 bytes .../_imports_at_top_level.cpython-39.pyc | Bin 209 -> 213 bytes ...mports_imports_at_top_level.cpython-39.pyc | Bin 384 -> 388 bytes .../getaddrinfo_module.cpython-39.pyc | Bin 296 -> 300 bytes .../__pycache__/known_failures.cpython-39.pyc | Bin 15202 -> 15206 bytes .../__pycache__/lock_tests.cpython-39.pyc | Bin 23521 -> 23525 bytes .../test__GreenletExit.cpython-39.pyc | Bin 295 -> 299 bytes .../__pycache__/test___config.cpython-39.pyc | Bin 6047 -> 6051 bytes .../__pycache__/test___ident.cpython-39.pyc | Bin 2345 -> 2349 bytes .../__pycache__/test___monitor.cpython-39.pyc | Bin 12628 -> 12632 bytes .../test___monkey_patching.cpython-39.pyc | Bin 2993 -> 2997 bytes .../__pycache__/test__all__.cpython-39.pyc | Bin 7385 -> 7389 bytes .../__pycache__/test__api.cpython-39.pyc | Bin 4091 -> 4095 bytes .../test__api_timeout.cpython-39.pyc | Bin 5721 -> 5725 bytes .../test__ares_host_result.cpython-39.pyc | Bin 1281 -> 1285 bytes .../test__ares_timeout.cpython-39.pyc | Bin 1455 -> 1459 bytes .../__pycache__/test__backdoor.cpython-39.pyc | Bin 6888 -> 6892 bytes .../test__close_backend_fd.cpython-39.pyc | Bin 2674 -> 2678 bytes .../__pycache__/test__compat.cpython-39.pyc | Bin 2633 -> 2637 bytes .../test__contextvars.cpython-39.pyc | Bin 10921 -> 10925 bytes .../__pycache__/test__core.cpython-39.pyc | Bin 5894 -> 5898 bytes .../test__core_async.cpython-39.pyc | Bin 1066 -> 1070 bytes .../test__core_callback.cpython-39.pyc | Bin 992 -> 996 bytes .../test__core_fork.cpython-39.pyc | Bin 1722 -> 1726 bytes .../test__core_loop_run.cpython-39.pyc | Bin 753 -> 757 bytes .../test__core_stat.cpython-39.pyc | Bin 3418 -> 3422 bytes .../test__core_timer.cpython-39.pyc | Bin 4082 -> 4086 bytes .../test__core_watcher.cpython-39.pyc | Bin 3550 -> 3554 bytes .../__pycache__/test__destroy.cpython-39.pyc | Bin 1063 -> 1067 bytes .../test__destroy_default_loop.cpython-39.pyc | Bin 1728 -> 1732 bytes .../__pycache__/test__doctests.cpython-39.pyc | Bin 3744 -> 3748 bytes .../__pycache__/test__environ.cpython-39.pyc | Bin 588 -> 592 bytes .../__pycache__/test__event.cpython-39.pyc | Bin 16065 -> 16069 bytes .../__pycache__/test__events.cpython-39.pyc | Bin 1931 -> 1935 bytes .../test__example_echoserver.cpython-39.pyc | Bin 1485 -> 1489 bytes ...test__example_portforwarder.cpython-39.pyc | Bin 2045 -> 2049 bytes .../test__example_udp_client.cpython-39.pyc | Bin 1168 -> 1172 bytes .../test__example_udp_server.cpython-39.pyc | Bin 882 -> 886 bytes .../test__example_webproxy.cpython-39.pyc | Bin 1237 -> 1241 bytes .../test__example_wsgiserver.cpython-39.pyc | Bin 2646 -> 2650 bytes ...est__example_wsgiserver_ssl.cpython-39.pyc | Bin 854 -> 858 bytes .../__pycache__/test__examples.cpython-39.pyc | Bin 3385 -> 3389 bytes .../__pycache__/test__exc_info.cpython-39.pyc | Bin 1787 -> 1791 bytes .../test__execmodules.cpython-39.pyc | Bin 1575 -> 1579 bytes .../test__fileobject.cpython-39.pyc | Bin 17216 -> 17220 bytes .../test__getaddrinfo_import.cpython-39.pyc | Bin 222 -> 226 bytes .../__pycache__/test__greenio.cpython-39.pyc | Bin 3360 -> 3364 bytes .../__pycache__/test__greenlet.cpython-39.pyc | Bin 36309 -> 36313 bytes .../test__greenletset.cpython-39.pyc | Bin 6333 -> 6337 bytes .../test__greenness.cpython-39.pyc | Bin 2334 -> 2338 bytes .../__pycache__/test__hub.cpython-39.pyc | Bin 12319 -> 12323 bytes .../__pycache__/test__hub_join.cpython-39.pyc | Bin 3774 -> 3778 bytes .../test__hub_join_timeout.cpython-39.pyc | Bin 3974 -> 3978 bytes ...import_blocking_in_greenlet.cpython-39.pyc | Bin 746 -> 750 bytes .../test__import_wait.cpython-39.pyc | Bin 278 -> 282 bytes .../__pycache__/test__issue112.cpython-39.pyc | Bin 747 -> 751 bytes .../test__issue1686.cpython-39.pyc | Bin 1897 -> 1901 bytes .../__pycache__/test__issue230.cpython-39.pyc | Bin 891 -> 895 bytes .../__pycache__/test__issue330.cpython-39.pyc | Bin 2501 -> 2505 bytes .../__pycache__/test__issue467.cpython-39.pyc | Bin 1177 -> 1181 bytes .../__pycache__/test__issue6.cpython-39.pyc | Bin 1140 -> 1144 bytes .../__pycache__/test__issue600.cpython-39.pyc | Bin 1411 -> 1415 bytes .../__pycache__/test__issue607.cpython-39.pyc | Bin 1899 -> 1903 bytes .../__pycache__/test__issue639.cpython-39.pyc | Bin 582 -> 586 bytes .../test__issue_728.cpython-39.pyc | Bin 317 -> 321 bytes .../test__issues461_471.cpython-39.pyc | Bin 2301 -> 2305 bytes .../__pycache__/test__iwait.cpython-39.pyc | Bin 1431 -> 1435 bytes .../__pycache__/test__joinall.cpython-39.pyc | Bin 731 -> 735 bytes .../__pycache__/test__local.cpython-39.pyc | Bin 14153 -> 14157 bytes .../__pycache__/test__lock.cpython-39.pyc | Bin 1004 -> 1008 bytes .../test__loop_callback.cpython-39.pyc | Bin 836 -> 840 bytes .../test__makefile_ref.cpython-39.pyc | Bin 14140 -> 14144 bytes .../__pycache__/test__memleak.cpython-39.pyc | Bin 1223 -> 1227 bytes .../__pycache__/test__monkey.cpython-39.pyc | Bin 5475 -> 5479 bytes ...est__monkey_builtins_future.cpython-39.pyc | Bin 548 -> 552 bytes ...test__monkey_futures_thread.cpython-39.pyc | Bin 1323 -> 1327 bytes .../test__monkey_hub_in_thread.cpython-39.pyc | Bin 708 -> 712 bytes .../test__monkey_logging.cpython-39.pyc | Bin 1375 -> 1379 bytes .../test__monkey_module_run.cpython-39.pyc | Bin 4048 -> 4052 bytes ...st__monkey_multiple_imports.cpython-39.pyc | Bin 232 -> 236 bytes .../test__monkey_queue.cpython-39.pyc | Bin 8876 -> 8880 bytes .../test__monkey_select.cpython-39.pyc | Bin 996 -> 1000 bytes .../test__monkey_selectors.cpython-39.pyc | Bin 2310 -> 2314 bytes .../test__monkey_sigchld.cpython-39.pyc | Bin 1729 -> 1733 bytes .../test__monkey_sigchld_2.cpython-39.pyc | Bin 957 -> 961 bytes .../test__monkey_sigchld_3.cpython-39.pyc | Bin 1161 -> 1165 bytes .../test__monkey_ssl_warning.cpython-39.pyc | Bin 1234 -> 1238 bytes .../test__monkey_ssl_warning2.cpython-39.pyc | Bin 1548 -> 1552 bytes .../test__monkey_ssl_warning3.cpython-39.pyc | Bin 1571 -> 1575 bytes .../test__nondefaultloop.cpython-39.pyc | Bin 399 -> 403 bytes .../__pycache__/test__order.cpython-39.pyc | Bin 2235 -> 2239 bytes .../tests/__pycache__/test__os.cpython-39.pyc | Bin 10354 -> 10358 bytes .../__pycache__/test__pool.cpython-39.pyc | Bin 22131 -> 22135 bytes .../__pycache__/test__pywsgi.cpython-39.pyc | Bin 64534 -> 64538 bytes .../__pycache__/test__queue.cpython-39.pyc | Bin 16577 -> 16581 bytes .../test__real_greenlet.cpython-39.pyc | Bin 1158 -> 1162 bytes .../__pycache__/test__refcount.cpython-39.pyc | Bin 4381 -> 4385 bytes .../test__refcount_core.cpython-39.pyc | Bin 1144 -> 1148 bytes .../test__resolver_dnspython.cpython-39.pyc | Bin 1651 -> 1655 bytes .../__pycache__/test__select.cpython-39.pyc | Bin 4042 -> 4046 bytes .../test__selectors.cpython-39.pyc | Bin 3170 -> 3174 bytes .../test__semaphore.cpython-39.pyc | Bin 11919 -> 11923 bytes .../__pycache__/test__server.cpython-39.pyc | Bin 19479 -> 19483 bytes .../test__server_pywsgi.cpython-39.pyc | Bin 3723 -> 3727 bytes .../__pycache__/test__signal.cpython-39.pyc | Bin 2658 -> 2662 bytes .../__pycache__/test__sleep0.cpython-39.pyc | Bin 344 -> 348 bytes .../__pycache__/test__socket.cpython-39.pyc | Bin 18774 -> 18778 bytes .../test__socket_close.cpython-39.pyc | Bin 2036 -> 2040 bytes .../test__socket_dns.cpython-39.pyc | Bin 26503 -> 26507 bytes .../test__socket_dns6.cpython-39.pyc | Bin 3040 -> 3044 bytes .../test__socket_errors.cpython-39.pyc | Bin 1191 -> 1195 bytes .../test__socket_ex.cpython-39.pyc | Bin 1337 -> 1341 bytes ...est__socket_send_memoryview.cpython-39.pyc | Bin 1577 -> 1581 bytes .../test__socket_ssl.cpython-39.pyc | Bin 1309 -> 1313 bytes .../test__socket_timeout.cpython-39.pyc | Bin 1790 -> 1794 bytes .../test__socketpair.cpython-39.pyc | Bin 1342 -> 1346 bytes .../__pycache__/test__ssl.cpython-39.pyc | Bin 3302 -> 3306 bytes .../test__subprocess.cpython-39.pyc | Bin 15774 -> 15778 bytes ...est__subprocess_interrupted.cpython-39.pyc | Bin 804 -> 808 bytes .../test__subprocess_poll.cpython-39.pyc | Bin 474 -> 478 bytes .../test__systemerror.cpython-39.pyc | Bin 3653 -> 3657 bytes .../__pycache__/test__thread.cpython-39.pyc | Bin 1100 -> 1104 bytes .../test__threading.cpython-39.pyc | Bin 2782 -> 2786 bytes .../test__threading_2.cpython-39.pyc | Bin 19360 -> 19364 bytes ...st__threading_before_monkey.cpython-39.pyc | Bin 838 -> 842 bytes ...g_holding_lock_while_monkey.cpython-39.pyc | Bin 333 -> 337 bytes ..._threading_monkey_in_thread.cpython-39.pyc | Bin 1990 -> 1994 bytes ...eading_native_before_monkey.cpython-39.pyc | Bin 2046 -> 2050 bytes .../test__threading_no_monkey.cpython-39.pyc | Bin 1039 -> 1043 bytes ...st__threading_patched_local.cpython-39.pyc | Bin 757 -> 761 bytes ...test__threading_vs_settrace.cpython-39.pyc | Bin 4134 -> 4138 bytes .../test__threadpool.cpython-39.pyc | Bin 26443 -> 26447 bytes ...threadpool_executor_patched.cpython-39.pyc | Bin 703 -> 707 bytes .../__pycache__/test__timeout.cpython-39.pyc | Bin 5291 -> 5295 bytes .../__pycache__/test__util.cpython-39.pyc | Bin 9561 -> 9565 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 511 -> 515 bytes .../__pycache__/__main__.cpython-39.pyc | Bin 329 -> 333 bytes .../issue1526_no_monkey.cpython-39.pyc | Bin 648 -> 652 bytes .../issue1526_with_monkey.cpython-39.pyc | Bin 786 -> 790 bytes .../__pycache__/issue302monkey.cpython-39.pyc | Bin 596 -> 600 bytes .../__pycache__/script.cpython-39.pyc | Bin 653 -> 657 bytes .../threadpool_monkey_patches.cpython-39.pyc | Bin 1129 -> 1133 bytes .../threadpool_no_monkey.cpython-39.pyc | Bin 1031 -> 1035 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 642 -> 646 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 723 -> 727 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 864 -> 868 bytes .../__pycache__/handler.cpython-39.pyc | Bin 7597 -> 7601 bytes .../__pycache__/logging.cpython-39.pyc | Bin 1449 -> 1453 bytes .../__pycache__/resource.cpython-39.pyc | Bin 3281 -> 3285 bytes .../__pycache__/server.cpython-39.pyc | Bin 1446 -> 1450 bytes .../__pycache__/utf8validator.cpython-39.pyc | Bin 6111 -> 6115 bytes .../__pycache__/utils.cpython-39.pyc | Bin 1220 -> 1224 bytes .../__pycache__/websocket.cpython-39.pyc | Bin 12950 -> 12954 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 184 -> 188 bytes .../__pycache__/workers.cpython-39.pyc | Bin 507 -> 511 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 185 -> 189 bytes .../protocols/__pycache__/base.cpython-39.pyc | Bin 1497 -> 1501 bytes .../protocols/__pycache__/wamp.cpython-39.pyc | Bin 7389 -> 7393 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 831 -> 835 bytes .../tests/__pycache__/__init__.cpython-39.pyc | Bin 174 -> 178 bytes .../test_contextvars.cpython-39.pyc | Bin 7355 -> 7359 bytes .../tests/__pycache__/test_cpp.cpython-39.pyc | Bin 840 -> 844 bytes .../test_extension_interface.cpython-39.pyc | Bin 3543 -> 3547 bytes .../tests/__pycache__/test_gc.cpython-39.pyc | Bin 2896 -> 2900 bytes .../__pycache__/test_generator.cpython-39.pyc | Bin 2216 -> 2220 bytes .../test_generator_nested.cpython-39.pyc | Bin 5323 -> 5327 bytes .../__pycache__/test_greenlet.cpython-39.pyc | Bin 24918 -> 24922 bytes .../__pycache__/test_leaks.cpython-39.pyc | Bin 3170 -> 3174 bytes .../test_stack_saved.cpython-39.pyc | Bin 852 -> 856 bytes .../__pycache__/test_throw.cpython-39.pyc | Bin 2944 -> 2948 bytes .../__pycache__/test_tracing.cpython-39.pyc | Bin 2229 -> 2233 bytes .../__pycache__/test_version.cpython-39.pyc | Bin 1524 -> 1528 bytes .../__pycache__/test_weakref.cpython-39.pyc | Bin 1843 -> 1847 bytes .../idna/__pycache__/__init__.cpython-39.pyc | Bin 823 -> 827 bytes .../idna/__pycache__/codec.cpython-39.pyc | Bin 2854 -> 2858 bytes .../idna/__pycache__/compat.cpython-39.pyc | Bin 660 -> 664 bytes .../idna/__pycache__/core.cpython-39.pyc | Bin 9128 -> 9132 bytes .../idna/__pycache__/idnadata.cpython-39.pyc | Bin 22114 -> 22118 bytes .../idna/__pycache__/intranges.cpython-39.pyc | Bin 1836 -> 1840 bytes .../__pycache__/package_data.cpython-39.pyc | Bin 187 -> 191 bytes .../idna/__pycache__/uts46data.cpython-39.pyc | Bin 146147 -> 146151 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 171 -> 175 bytes .../__pycache__/fixer_util.cpython-39.pyc | Bin 11958 -> 11962 bytes .../__pycache__/main.cpython-39.pyc | Bin 9549 -> 9553 bytes .../fixes/__pycache__/__init__.cpython-39.pyc | Bin 1979 -> 1983 bytes .../__pycache__/fix_UserDict.cpython-39.pyc | Bin 2220 -> 2224 bytes .../fix_absolute_import.cpython-39.pyc | Bin 2490 -> 2494 bytes ...rts_except_unicode_literals.cpython-39.pyc | Bin 1083 -> 1087 bytes .../__pycache__/fix_basestring.cpython-39.pyc | Bin 808 -> 812 bytes .../__pycache__/fix_bytes.cpython-39.pyc | Bin 1048 -> 1052 bytes .../fixes/__pycache__/fix_cmp.cpython-39.pyc | Bin 1093 -> 1097 bytes .../__pycache__/fix_division.cpython-39.pyc | Bin 429 -> 433 bytes .../fix_division_safe.cpython-39.pyc | Bin 3044 -> 3048 bytes .../__pycache__/fix_execfile.cpython-39.pyc | Bin 1326 -> 1330 bytes .../fix_future_builtins.cpython-39.pyc | Bin 1740 -> 1744 bytes ...fix_future_standard_library.cpython-39.pyc | Bin 1082 -> 1086 bytes ...ure_standard_library_urllib.cpython-39.pyc | Bin 1148 -> 1152 bytes .../__pycache__/fix_input.cpython-39.pyc | Bin 1086 -> 1090 bytes .../__pycache__/fix_metaclass.cpython-39.pyc | Bin 5801 -> 5805 bytes .../__pycache__/fix_next_call.cpython-39.pyc | Bin 3041 -> 3045 bytes .../__pycache__/fix_object.cpython-39.pyc | Bin 815 -> 819 bytes .../fix_oldstr_wrap.cpython-39.pyc | Bin 1396 -> 1400 bytes ...fix_order___future__imports.cpython-39.pyc | Bin 1043 -> 1047 bytes .../__pycache__/fix_print.cpython-39.pyc | Bin 2409 -> 2413 bytes .../fix_print_with_import.cpython-39.pyc | Bin 962 -> 966 bytes .../__pycache__/fix_raise.cpython-39.pyc | Bin 2502 -> 2506 bytes ...remove_old__future__imports.cpython-39.pyc | Bin 1248 -> 1252 bytes .../fix_unicode_keep_u.cpython-39.pyc | Bin 1171 -> 1175 bytes ...fix_unicode_literals_import.cpython-39.pyc | Bin 814 -> 818 bytes .../fix_xrange_with_import.cpython-39.pyc | Bin 893 -> 897 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 173 -> 177 bytes .../__pycache__/main.cpython-39.pyc | Bin 5900 -> 5904 bytes .../fixes/__pycache__/__init__.cpython-39.pyc | Bin 842 -> 846 bytes .../__pycache__/feature_base.cpython-39.pyc | Bin 2642 -> 2646 bytes ...ix_add_all__future__imports.cpython-39.pyc | Bin 1068 -> 1072 bytes ...fix_add_all_future_builtins.cpython-39.pyc | Bin 1196 -> 1200 bytes ...ure_standard_library_import.cpython-39.pyc | Bin 997 -> 1001 bytes .../fix_annotations.cpython-39.pyc | Bin 1689 -> 1693 bytes .../__pycache__/fix_division.cpython-39.pyc | Bin 1355 -> 1359 bytes .../__pycache__/fix_features.cpython-39.pyc | Bin 2262 -> 2266 bytes .../fix_fullargspec.cpython-39.pyc | Bin 860 -> 864 bytes .../fix_future_builtins.cpython-39.pyc | Bin 1537 -> 1541 bytes .../__pycache__/fix_getcwd.cpython-39.pyc | Bin 1122 -> 1126 bytes .../__pycache__/fix_imports.cpython-39.pyc | Bin 3607 -> 3611 bytes .../__pycache__/fix_imports2.cpython-39.pyc | Bin 6019 -> 6023 bytes .../__pycache__/fix_kwargs.cpython-39.pyc | Bin 3767 -> 3771 bytes .../__pycache__/fix_memoryview.cpython-39.pyc | Bin 929 -> 933 bytes .../__pycache__/fix_metaclass.cpython-39.pyc | Bin 2021 -> 2025 bytes .../__pycache__/fix_newstyle.cpython-39.pyc | Bin 1214 -> 1218 bytes .../fixes/__pycache__/fix_next.cpython-39.pyc | Bin 1543 -> 1547 bytes .../fix_printfunction.cpython-39.pyc | Bin 802 -> 806 bytes .../__pycache__/fix_raise.cpython-39.pyc | Bin 1344 -> 1348 bytes .../__pycache__/fix_raise_.cpython-39.pyc | Bin 1470 -> 1474 bytes .../__pycache__/fix_throw.cpython-39.pyc | Bin 1203 -> 1207 bytes .../__pycache__/fix_unpacking.cpython-39.pyc | Bin 5663 -> 5667 bytes .../Lib/site-packages/markupsafe/__init__.py | 288 ++ .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 10679 bytes .../__pycache__/_native.cpython-39.pyc | Bin 0 -> 2326 bytes .../Lib/site-packages/markupsafe/_native.py | 75 + .../markupsafe/_speedups.cp39-win_amd64.pyd | Bin 0 -> 16384 bytes .../site-packages/markupsafe/_speedups.pyi | 9 + .../REQUESTED => markupsafe/py.typed} | 0 .../past/__pycache__/__init__.cpython-39.pyc | Bin 3107 -> 3111 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 1622 -> 1626 bytes .../builtins/__pycache__/misc.cpython-39.pyc | Bin 2364 -> 2368 bytes .../__pycache__/noniterators.cpython-39.pyc | Bin 3271 -> 3275 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 11153 -> 11157 bytes .../types/__pycache__/__init__.cpython-39.pyc | Bin 885 -> 889 bytes .../__pycache__/basestring.cpython-39.pyc | Bin 1314 -> 1318 bytes .../types/__pycache__/olddict.cpython-39.pyc | Bin 2371 -> 2375 bytes .../types/__pycache__/oldstr.cpython-39.pyc | Bin 2914 -> 2918 bytes .../utils/__pycache__/__init__.cpython-39.pyc | Bin 3052 -> 3056 bytes .../site-packages/pip-21.2.4.dist-info/RECORD | 6 +- .../pip/__pycache__/__init__.cpython-39.pyc | Bin 619 -> 623 bytes .../pip/__pycache__/__main__.cpython-39.pyc | Bin 575 -> 579 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 740 -> 744 bytes .../__pycache__/build_env.cpython-39.pyc | Bin 9079 -> 9083 bytes .../__pycache__/cache.cpython-39.pyc | Bin 7830 -> 7834 bytes .../__pycache__/configuration.cpython-39.pyc | Bin 10682 -> 10686 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 15631 -> 15635 bytes .../_internal/__pycache__/main.cpython-39.pyc | Bin 564 -> 568 bytes .../__pycache__/pyproject.cpython-39.pyc | Bin 3443 -> 3447 bytes .../self_outdated_check.cpython-39.pyc | Bin 4327 -> 4331 bytes .../__pycache__/wheel_builder.cpython-39.pyc | Bin 8265 -> 8269 bytes .../cli/__pycache__/__init__.cpython-39.pyc | Bin 260 -> 264 bytes .../__pycache__/autocompletion.cpython-39.pyc | Bin 5117 -> 5121 bytes .../__pycache__/base_command.cpython-39.pyc | Bin 6021 -> 6025 bytes .../cli/__pycache__/cmdoptions.cpython-39.pyc | Bin 22477 -> 22481 bytes .../command_context.cpython-39.pyc | Bin 1275 -> 1279 bytes .../cli/__pycache__/main.cpython-39.pyc | Bin 1350 -> 1354 bytes .../__pycache__/main_parser.cpython-39.pyc | Bin 2147 -> 2151 bytes .../cli/__pycache__/parser.cpython-39.pyc | Bin 9931 -> 9935 bytes .../__pycache__/progress_bars.cpython-39.pyc | Bin 7607 -> 7611 bytes .../__pycache__/req_command.cpython-39.pyc | Bin 12042 -> 12046 bytes .../cli/__pycache__/spinners.cpython-39.pyc | Bin 4930 -> 4934 bytes .../__pycache__/status_codes.cpython-39.pyc | Bin 339 -> 343 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 3093 -> 3097 bytes .../commands/__pycache__/cache.cpython-39.pyc | Bin 6026 -> 6030 bytes .../commands/__pycache__/check.cpython-39.pyc | Bin 1555 -> 1559 bytes .../__pycache__/completion.cpython-39.pyc | Bin 3124 -> 3128 bytes .../__pycache__/configuration.cpython-39.pyc | Bin 8331 -> 8335 bytes .../commands/__pycache__/debug.cpython-39.pyc | Bin 6652 -> 6656 bytes .../__pycache__/download.cpython-39.pyc | Bin 3975 -> 3979 bytes .../__pycache__/freeze.cpython-39.pyc | Bin 2619 -> 2623 bytes .../commands/__pycache__/hash.cpython-39.pyc | Bin 2117 -> 2121 bytes .../commands/__pycache__/help.cpython-39.pyc | Bin 1291 -> 1295 bytes .../commands/__pycache__/index.cpython-39.pyc | Bin 4510 -> 4514 bytes .../__pycache__/install.cpython-39.pyc | Bin 17644 -> 17648 bytes .../commands/__pycache__/list.cpython-39.pyc | Bin 9946 -> 9950 bytes .../__pycache__/search.cpython-39.pyc | Bin 5303 -> 5307 bytes .../commands/__pycache__/show.cpython-39.pyc | Bin 8366 -> 8370 bytes .../__pycache__/uninstall.cpython-39.pyc | Bin 3085 -> 3089 bytes .../commands/__pycache__/wheel.cpython-39.pyc | Bin 4848 -> 4852 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 783 -> 787 bytes .../__pycache__/base.cpython-39.pyc | Bin 1910 -> 1914 bytes .../__pycache__/installed.cpython-39.pyc | Bin 1229 -> 1233 bytes .../__pycache__/sdist.cpython-39.pyc | Bin 3563 -> 3567 bytes .../__pycache__/wheel.cpython-39.pyc | Bin 1564 -> 1568 bytes .../index/__pycache__/__init__.cpython-39.pyc | Bin 214 -> 218 bytes .../__pycache__/collector.cpython-39.pyc | Bin 15938 -> 15942 bytes .../__pycache__/package_finder.cpython-39.pyc | Bin 28092 -> 28096 bytes .../index/__pycache__/sources.cpython-39.pyc | Bin 7179 -> 7183 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 10040 -> 10044 bytes .../__pycache__/_distutils.cpython-39.pyc | Bin 4653 -> 4657 bytes .../__pycache__/_sysconfig.cpython-39.pyc | Bin 6244 -> 6248 bytes .../locations/__pycache__/base.cpython-39.pyc | Bin 1522 -> 1526 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 1835 -> 1839 bytes .../metadata/__pycache__/base.cpython-39.pyc | Bin 9448 -> 9452 bytes .../__pycache__/pkg_resources.cpython-39.pyc | Bin 6149 -> 6153 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 248 -> 252 bytes .../__pycache__/candidate.cpython-39.pyc | Bin 1428 -> 1432 bytes .../__pycache__/direct_url.cpython-39.pyc | Bin 7043 -> 7047 bytes .../__pycache__/format_control.cpython-39.pyc | Bin 2715 -> 2719 bytes .../models/__pycache__/index.cpython-39.pyc | Bin 1227 -> 1231 bytes .../models/__pycache__/link.cpython-39.pyc | Bin 10247 -> 10251 bytes .../models/__pycache__/scheme.cpython-39.pyc | Bin 994 -> 998 bytes .../__pycache__/search_scope.cpython-39.pyc | Bin 3467 -> 3471 bytes .../selection_prefs.cpython-39.pyc | Bin 1650 -> 1654 bytes .../__pycache__/target_python.cpython-39.pyc | Bin 3400 -> 3404 bytes .../models/__pycache__/wheel.cpython-39.pyc | Bin 4328 -> 4332 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 236 -> 240 bytes .../network/__pycache__/auth.cpython-39.pyc | Bin 7433 -> 7437 bytes .../network/__pycache__/cache.cpython-39.pyc | Bin 2878 -> 2882 bytes .../__pycache__/download.cpython-39.pyc | Bin 5467 -> 5471 bytes .../__pycache__/lazy_wheel.cpython-39.pyc | Bin 8333 -> 8337 bytes .../__pycache__/session.cpython-39.pyc | Bin 10532 -> 10536 bytes .../network/__pycache__/utils.cpython-39.pyc | Bin 1414 -> 1418 bytes .../network/__pycache__/xmlrpc.cpython-39.pyc | Bin 2035 -> 2039 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 184 -> 188 bytes .../__pycache__/check.cpython-39.pyc | Bin 3929 -> 3933 bytes .../__pycache__/freeze.cpython-39.pyc | Bin 6270 -> 6274 bytes .../__pycache__/prepare.cpython-39.pyc | Bin 14210 -> 14214 bytes .../build/__pycache__/__init__.cpython-39.pyc | Bin 190 -> 194 bytes .../build/__pycache__/metadata.cpython-39.pyc | Bin 1136 -> 1140 bytes .../metadata_legacy.cpython-39.pyc | Bin 1910 -> 1914 bytes .../build/__pycache__/wheel.cpython-39.pyc | Bin 1115 -> 1119 bytes .../__pycache__/wheel_legacy.cpython-39.pyc | Bin 2509 -> 2513 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 248 -> 252 bytes .../editable_legacy.cpython-39.pyc | Bin 1291 -> 1295 bytes .../install/__pycache__/legacy.cpython-39.pyc | Bin 3452 -> 3456 bytes .../install/__pycache__/wheel.cpython-39.pyc | Bin 20291 -> 20295 bytes .../req/__pycache__/__init__.cpython-39.pyc | Bin 2547 -> 2551 bytes .../__pycache__/constructors.cpython-39.pyc | Bin 11663 -> 11667 bytes .../req/__pycache__/req_file.cpython-39.pyc | Bin 13357 -> 13361 bytes .../__pycache__/req_install.cpython-39.pyc | Bin 21358 -> 21362 bytes .../req/__pycache__/req_set.cpython-39.pyc | Bin 5884 -> 5888 bytes .../__pycache__/req_tracker.cpython-39.pyc | Bin 4267 -> 4271 bytes .../__pycache__/req_uninstall.cpython-39.pyc | Bin 18750 -> 18754 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 184 -> 188 bytes .../__pycache__/base.cpython-39.pyc | Bin 1014 -> 1018 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 191 -> 195 bytes .../__pycache__/resolver.cpython-39.pyc | Bin 11982 -> 11986 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 195 -> 199 bytes .../__pycache__/base.cpython-39.pyc | Bin 6731 -> 6735 bytes .../__pycache__/candidates.cpython-39.pyc | Bin 19022 -> 19026 bytes .../__pycache__/factory.cpython-39.pyc | Bin 18439 -> 18443 bytes .../found_candidates.cpython-39.pyc | Bin 4784 -> 4788 bytes .../__pycache__/provider.cpython-39.pyc | Bin 6741 -> 6745 bytes .../__pycache__/reporter.cpython-39.pyc | Bin 3314 -> 3318 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 7565 -> 7569 bytes .../__pycache__/resolver.cpython-39.pyc | Bin 7760 -> 7764 bytes .../utils/__pycache__/__init__.cpython-39.pyc | Bin 179 -> 183 bytes .../utils/__pycache__/_log.cpython-39.pyc | Bin 1504 -> 1508 bytes .../utils/__pycache__/appdirs.cpython-39.pyc | Bin 1317 -> 1321 bytes .../utils/__pycache__/compat.cpython-39.pyc | Bin 1498 -> 1502 bytes .../compatibility_tags.cpython-39.pyc | Bin 4097 -> 4101 bytes .../utils/__pycache__/datetime.cpython-39.pyc | Bin 498 -> 502 bytes .../__pycache__/deprecation.cpython-39.pyc | Bin 2961 -> 2965 bytes .../direct_url_helpers.cpython-39.pyc | Bin 1808 -> 1812 bytes .../__pycache__/distutils_args.cpython-39.pyc | Bin 1084 -> 1088 bytes .../utils/__pycache__/encoding.cpython-39.pyc | Bin 1288 -> 1292 bytes .../__pycache__/entrypoints.cpython-39.pyc | Bin 1289 -> 1293 bytes .../__pycache__/filesystem.cpython-39.pyc | Bin 5125 -> 5129 bytes .../__pycache__/filetypes.cpython-39.pyc | Bin 791 -> 795 bytes .../utils/__pycache__/glibc.cpython-39.pyc | Bin 1601 -> 1605 bytes .../utils/__pycache__/hashes.cpython-39.pyc | Bin 4983 -> 4987 bytes .../inject_securetransport.cpython-39.pyc | Bin 952 -> 956 bytes .../utils/__pycache__/logging.cpython-39.pyc | Bin 9032 -> 9036 bytes .../utils/__pycache__/misc.cpython-39.pyc | Bin 21652 -> 21656 bytes .../utils/__pycache__/models.cpython-39.pyc | Bin 1883 -> 1887 bytes .../__pycache__/packaging.cpython-39.pyc | Bin 2507 -> 2511 bytes .../utils/__pycache__/parallel.cpython-39.pyc | Bin 3024 -> 3028 bytes .../__pycache__/pkg_resources.cpython-39.pyc | Bin 1705 -> 1709 bytes .../setuptools_build.cpython-39.pyc | Bin 2949 -> 2953 bytes .../__pycache__/subprocess.cpython-39.pyc | Bin 5686 -> 5690 bytes .../utils/__pycache__/temp_dir.cpython-39.pyc | Bin 6823 -> 6827 bytes .../__pycache__/unpacking.cpython-39.pyc | Bin 6467 -> 6471 bytes .../utils/__pycache__/urls.cpython-39.pyc | Bin 1523 -> 1527 bytes .../__pycache__/virtualenv.cpython-39.pyc | Bin 3202 -> 3206 bytes .../utils/__pycache__/wheel.cpython-39.pyc | Bin 5953 -> 5957 bytes .../vcs/__pycache__/__init__.cpython-39.pyc | Bin 502 -> 506 bytes .../vcs/__pycache__/bazaar.cpython-39.pyc | Bin 2988 -> 2992 bytes .../vcs/__pycache__/git.cpython-39.pyc | Bin 11703 -> 11707 bytes .../vcs/__pycache__/mercurial.cpython-39.pyc | Bin 4635 -> 4639 bytes .../vcs/__pycache__/subversion.cpython-39.pyc | Bin 7949 -> 7953 bytes .../__pycache__/versioncontrol.cpython-39.pyc | Bin 19472 -> 19476 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 2887 -> 2891 bytes .../__pycache__/appdirs.cpython-39.pyc | Bin 21387 -> 21391 bytes .../_vendor/__pycache__/distro.cpython-39.pyc | Bin 36866 -> 36870 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 240423 -> 240427 bytes .../_vendor/__pycache__/six.cpython-39.pyc | Bin 27496 -> 27500 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 537 -> 541 bytes .../__pycache__/_cmd.cpython-39.pyc | Bin 1558 -> 1562 bytes .../__pycache__/adapter.cpython-39.pyc | Bin 3063 -> 3067 bytes .../__pycache__/cache.cpython-39.pyc | Bin 1810 -> 1814 bytes .../__pycache__/compat.cpython-39.pyc | Bin 734 -> 738 bytes .../__pycache__/controller.cpython-39.pyc | Bin 7751 -> 7755 bytes .../__pycache__/filewrapper.cpython-39.pyc | Bin 2159 -> 2163 bytes .../__pycache__/heuristics.cpython-39.pyc | Bin 4691 -> 4695 bytes .../__pycache__/serialize.cpython-39.pyc | Bin 4210 -> 4214 bytes .../__pycache__/wrapper.cpython-39.pyc | Bin 661 -> 665 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 281 -> 285 bytes .../__pycache__/file_cache.cpython-39.pyc | Bin 3297 -> 3301 bytes .../__pycache__/redis_cache.cpython-39.pyc | Bin 1553 -> 1557 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 263 -> 267 bytes .../__pycache__/__main__.cpython-39.pyc | Bin 440 -> 444 bytes .../certifi/__pycache__/core.cpython-39.pyc | Bin 1531 -> 1535 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 1887 -> 1891 bytes .../__pycache__/big5freq.cpython-39.pyc | Bin 27166 -> 27170 bytes .../__pycache__/big5prober.cpython-39.pyc | Bin 1121 -> 1125 bytes .../chardistribution.cpython-39.pyc | Bin 6207 -> 6211 bytes .../charsetgroupprober.cpython-39.pyc | Bin 2248 -> 2252 bytes .../__pycache__/charsetprober.cpython-39.pyc | Bin 3470 -> 3474 bytes .../codingstatemachine.cpython-39.pyc | Bin 2897 -> 2901 bytes .../chardet/__pycache__/compat.cpython-39.pyc | Bin 386 -> 390 bytes .../__pycache__/cp949prober.cpython-39.pyc | Bin 1128 -> 1132 bytes .../chardet/__pycache__/enums.cpython-39.pyc | Bin 2635 -> 2639 bytes .../__pycache__/escprober.cpython-39.pyc | Bin 2620 -> 2624 bytes .../chardet/__pycache__/escsm.cpython-39.pyc | Bin 7069 -> 7073 bytes .../__pycache__/eucjpprober.cpython-39.pyc | Bin 2434 -> 2438 bytes .../__pycache__/euckrfreq.cpython-39.pyc | Bin 12050 -> 12054 bytes .../__pycache__/euckrprober.cpython-39.pyc | Bin 1129 -> 1133 bytes .../__pycache__/euctwfreq.cpython-39.pyc | Bin 27170 -> 27174 bytes .../__pycache__/euctwprober.cpython-39.pyc | Bin 1129 -> 1133 bytes .../__pycache__/gb2312freq.cpython-39.pyc | Bin 19094 -> 19098 bytes .../__pycache__/gb2312prober.cpython-39.pyc | Bin 1137 -> 1141 bytes .../__pycache__/hebrewprober.cpython-39.pyc | Bin 3006 -> 3010 bytes .../__pycache__/jisfreq.cpython-39.pyc | Bin 22122 -> 22126 bytes .../chardet/__pycache__/jpcntx.cpython-39.pyc | Bin 37595 -> 37599 bytes .../langbulgarianmodel.cpython-39.pyc | Bin 21797 -> 21801 bytes .../__pycache__/langgreekmodel.cpython-39.pyc | Bin 20473 -> 20477 bytes .../langhebrewmodel.cpython-39.pyc | Bin 20541 -> 20545 bytes .../langhungarianmodel.cpython-39.pyc | Bin 21742 -> 21746 bytes .../langrussianmodel.cpython-39.pyc | Bin 26345 -> 26349 bytes .../__pycache__/langthaimodel.cpython-39.pyc | Bin 20717 -> 20721 bytes .../langturkishmodel.cpython-39.pyc | Bin 20557 -> 20561 bytes .../__pycache__/latin1prober.cpython-39.pyc | Bin 2942 -> 2946 bytes .../mbcharsetprober.cpython-39.pyc | Bin 2249 -> 2253 bytes .../mbcsgroupprober.cpython-39.pyc | Bin 1118 -> 1122 bytes .../chardet/__pycache__/mbcssm.cpython-39.pyc | Bin 15705 -> 15709 bytes .../sbcharsetprober.cpython-39.pyc | Bin 3102 -> 3106 bytes .../sbcsgroupprober.cpython-39.pyc | Bin 1687 -> 1691 bytes .../__pycache__/sjisprober.cpython-39.pyc | Bin 2470 -> 2474 bytes .../universaldetector.cpython-39.pyc | Bin 5818 -> 5822 bytes .../__pycache__/utf8prober.cpython-39.pyc | Bin 1979 -> 1983 bytes .../__pycache__/version.cpython-39.pyc | Bin 426 -> 430 bytes .../cli/__pycache__/__init__.cpython-39.pyc | Bin 183 -> 187 bytes .../cli/__pycache__/chardetect.cpython-39.pyc | Bin 2677 -> 2681 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 188 -> 192 bytes .../__pycache__/languages.cpython-39.pyc | Bin 7919 -> 7923 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 431 -> 435 bytes .../colorama/__pycache__/ansi.cpython-39.pyc | Bin 3216 -> 3220 bytes .../__pycache__/ansitowin32.cpython-39.pyc | Bin 7682 -> 7686 bytes .../__pycache__/initialise.cpython-39.pyc | Bin 1698 -> 1702 bytes .../colorama/__pycache__/win32.cpython-39.pyc | Bin 3930 -> 3934 bytes .../__pycache__/winterm.cpython-39.pyc | Bin 4652 -> 4656 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 1044 -> 1048 bytes .../distlib/__pycache__/compat.cpython-39.pyc | Bin 32146 -> 32150 bytes .../__pycache__/database.cpython-39.pyc | Bin 42468 -> 42472 bytes .../distlib/__pycache__/index.cpython-39.pyc | Bin 17277 -> 17281 bytes .../__pycache__/locators.cpython-39.pyc | Bin 38241 -> 38245 bytes .../__pycache__/manifest.cpython-39.pyc | Bin 10180 -> 10184 bytes .../__pycache__/markers.cpython-39.pyc | Bin 4424 -> 4428 bytes .../__pycache__/metadata.cpython-39.pyc | Bin 26575 -> 26579 bytes .../__pycache__/resources.cpython-39.pyc | Bin 10998 -> 11002 bytes .../__pycache__/scripts.cpython-39.pyc | Bin 11081 -> 11085 bytes .../distlib/__pycache__/util.cpython-39.pyc | Bin 52583 -> 52587 bytes .../__pycache__/version.cpython-39.pyc | Bin 20335 -> 20339 bytes .../distlib/__pycache__/wheel.cpython-39.pyc | Bin 27208 -> 27212 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 471 -> 475 bytes .../_backport/__pycache__/misc.cpython-39.pyc | Bin 1091 -> 1095 bytes .../__pycache__/shutil.cpython-39.pyc | Bin 21665 -> 21669 bytes .../__pycache__/sysconfig.cpython-39.pyc | Bin 15955 -> 15959 bytes .../__pycache__/tarfile.cpython-39.pyc | Bin 62719 -> 62723 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 1290 -> 1294 bytes .../__pycache__/_ihatexml.cpython-39.pyc | Bin 13759 -> 13763 bytes .../__pycache__/_inputstream.cpython-39.pyc | Bin 21618 -> 21622 bytes .../__pycache__/_tokenizer.cpython-39.pyc | Bin 39713 -> 39717 bytes .../__pycache__/_utils.cpython-39.pyc | Bin 4790 -> 4794 bytes .../__pycache__/constants.cpython-39.pyc | Bin 66328 -> 66332 bytes .../__pycache__/html5parser.cpython-39.pyc | Bin 90999 -> 91003 bytes .../__pycache__/serializer.cpython-39.pyc | Bin 10801 -> 10805 bytes .../_trie/__pycache__/__init__.cpython-39.pyc | Bin 340 -> 344 bytes .../_trie/__pycache__/_base.cpython-39.pyc | Bin 1584 -> 1588 bytes .../_trie/__pycache__/py.cpython-39.pyc | Bin 2245 -> 2249 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 188 -> 192 bytes .../alphabeticalattributes.cpython-39.pyc | Bin 1310 -> 1314 bytes .../filters/__pycache__/base.cpython-39.pyc | Bin 858 -> 862 bytes .../inject_meta_charset.cpython-39.pyc | Bin 1864 -> 1868 bytes .../filters/__pycache__/lint.cpython-39.pyc | Bin 2606 -> 2610 bytes .../__pycache__/optionaltags.cpython-39.pyc | Bin 2751 -> 2755 bytes .../__pycache__/sanitizer.cpython-39.pyc | Bin 16874 -> 16878 bytes .../__pycache__/whitespace.cpython-39.pyc | Bin 1356 -> 1360 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 925 -> 929 bytes .../__pycache__/genshi.cpython-39.pyc | Bin 1533 -> 1537 bytes .../__pycache__/sax.cpython-39.pyc | Bin 1452 -> 1456 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 3320 -> 3324 bytes .../__pycache__/base.cpython-39.pyc | Bin 11304 -> 11308 bytes .../__pycache__/dom.cpython-39.pyc | Bin 9441 -> 9445 bytes .../__pycache__/etree.cpython-39.pyc | Bin 11809 -> 11813 bytes .../__pycache__/etree_lxml.cpython-39.pyc | Bin 12992 -> 12996 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 3986 -> 3990 bytes .../__pycache__/base.cpython-39.pyc | Bin 6985 -> 6989 bytes .../__pycache__/dom.cpython-39.pyc | Bin 1720 -> 1724 bytes .../__pycache__/etree.cpython-39.pyc | Bin 3482 -> 3486 bytes .../__pycache__/etree_lxml.cpython-39.pyc | Bin 6619 -> 6623 bytes .../__pycache__/genshi.cpython-39.pyc | Bin 1876 -> 1880 bytes .../idna/__pycache__/__init__.cpython-39.pyc | Bin 835 -> 839 bytes .../idna/__pycache__/codec.cpython-39.pyc | Bin 2866 -> 2870 bytes .../idna/__pycache__/compat.cpython-39.pyc | Bin 672 -> 676 bytes .../idna/__pycache__/core.cpython-39.pyc | Bin 9140 -> 9144 bytes .../idna/__pycache__/idnadata.cpython-39.pyc | Bin 22126 -> 22130 bytes .../idna/__pycache__/intranges.cpython-39.pyc | Bin 1848 -> 1852 bytes .../__pycache__/package_data.cpython-39.pyc | Bin 199 -> 203 bytes .../idna/__pycache__/uts46data.cpython-39.pyc | Bin 146159 -> 146163 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 1402 -> 1406 bytes .../__pycache__/_version.cpython-39.pyc | Bin 206 -> 210 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 1840 -> 1844 bytes .../msgpack/__pycache__/ext.cpython-39.pyc | Bin 6268 -> 6272 bytes .../__pycache__/fallback.cpython-39.pyc | Bin 26714 -> 26718 bytes .../__pycache__/__about__.cpython-39.pyc | Bin 578 -> 582 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 434 -> 438 bytes .../__pycache__/_manylinux.cpython-39.pyc | Bin 7282 -> 7286 bytes .../__pycache__/_musllinux.cpython-39.pyc | Bin 4597 -> 4601 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 3070 -> 3074 bytes .../__pycache__/markers.cpython-39.pyc | Bin 9441 -> 9445 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 3962 -> 3966 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 22198 -> 22202 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 12277 -> 12281 bytes .../__pycache__/utils.cpython-39.pyc | Bin 3599 -> 3603 bytes .../__pycache__/version.cpython-39.pyc | Bin 13140 -> 13144 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 301 -> 305 bytes .../pep517/__pycache__/build.cpython-39.pyc | Bin 3566 -> 3570 bytes .../pep517/__pycache__/check.cpython-39.pyc | Bin 5113 -> 5117 bytes .../__pycache__/colorlog.cpython-39.pyc | Bin 2926 -> 2930 bytes .../pep517/__pycache__/compat.cpython-39.pyc | Bin 1281 -> 1285 bytes .../__pycache__/dirtools.cpython-39.pyc | Bin 1335 -> 1339 bytes .../__pycache__/envbuild.cpython-39.pyc | Bin 4512 -> 4516 bytes .../pep517/__pycache__/meta.cpython-39.pyc | Bin 2908 -> 2912 bytes .../__pycache__/wrappers.cpython-39.pyc | Bin 12258 -> 12262 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 903 -> 907 bytes .../__pycache__/_in_process.cpython-39.pyc | Bin 9919 -> 9923 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 100319 -> 100323 bytes .../__pycache__/py31compat.cpython-39.pyc | Bin 638 -> 642 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 5645 -> 5649 bytes .../progress/__pycache__/bar.cpython-39.pyc | Bin 2627 -> 2631 bytes .../__pycache__/counter.cpython-39.pyc | Bin 1461 -> 1465 bytes .../__pycache__/spinner.cpython-39.pyc | Bin 1378 -> 1382 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 3990 -> 3994 bytes .../__pycache__/__version__.cpython-39.pyc | Bin 543 -> 547 bytes .../_internal_utils.cpython-39.pyc | Bin 1290 -> 1294 bytes .../__pycache__/adapters.cpython-39.pyc | Bin 16961 -> 16965 bytes .../requests/__pycache__/api.cpython-39.pyc | Bin 6707 -> 6711 bytes .../requests/__pycache__/auth.cpython-39.pyc | Bin 8319 -> 8323 bytes .../requests/__pycache__/certs.cpython-39.pyc | Bin 621 -> 625 bytes .../__pycache__/compat.cpython-39.pyc | Bin 1600 -> 1604 bytes .../__pycache__/cookies.cpython-39.pyc | Bin 18810 -> 18814 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 5393 -> 5397 bytes .../requests/__pycache__/help.cpython-39.pyc | Bin 2881 -> 2885 bytes .../requests/__pycache__/hooks.cpython-39.pyc | Bin 978 -> 982 bytes .../__pycache__/models.cpython-39.pyc | Bin 24458 -> 24462 bytes .../__pycache__/packages.cpython-39.pyc | Bin 490 -> 494 bytes .../__pycache__/sessions.cpython-39.pyc | Bin 19845 -> 19849 bytes .../__pycache__/status_codes.cpython-39.pyc | Bin 4227 -> 4231 bytes .../__pycache__/structures.cpython-39.pyc | Bin 4448 -> 4452 bytes .../requests/__pycache__/utils.cpython-39.pyc | Bin 23312 -> 23316 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 594 -> 598 bytes .../__pycache__/providers.cpython-39.pyc | Bin 6514 -> 6518 bytes .../__pycache__/reporters.cpython-39.pyc | Bin 2290 -> 2294 bytes .../__pycache__/resolvers.cpython-39.pyc | Bin 15141 -> 15145 bytes .../__pycache__/structs.cpython-39.pyc | Bin 7267 -> 7271 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 189 -> 193 bytes .../collections_abc.cpython-39.pyc | Bin 363 -> 367 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 16267 -> 16271 bytes .../__pycache__/_asyncio.cpython-39.pyc | Bin 2582 -> 2586 bytes .../__pycache__/_utils.cpython-39.pyc | Bin 1219 -> 1223 bytes .../tenacity/__pycache__/after.cpython-39.pyc | Bin 1198 -> 1202 bytes .../__pycache__/before.cpython-39.pyc | Bin 1086 -> 1090 bytes .../__pycache__/before_sleep.cpython-39.pyc | Bin 1378 -> 1382 bytes .../tenacity/__pycache__/nap.cpython-39.pyc | Bin 1180 -> 1184 bytes .../tenacity/__pycache__/retry.cpython-39.pyc | Bin 8768 -> 8772 bytes .../tenacity/__pycache__/stop.cpython-39.pyc | Bin 4232 -> 4236 bytes .../__pycache__/tornadoweb.cpython-39.pyc | Bin 1732 -> 1736 bytes .../tenacity/__pycache__/wait.cpython-39.pyc | Bin 7944 -> 7948 bytes .../tomli/__pycache__/__init__.cpython-39.pyc | Bin 367 -> 371 bytes .../tomli/__pycache__/_parser.cpython-39.pyc | Bin 16342 -> 16346 bytes .../tomli/__pycache__/_re.cpython-39.pyc | Bin 2417 -> 2421 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 2177 -> 2181 bytes .../__pycache__/_collections.cpython-39.pyc | Bin 10772 -> 10776 bytes .../__pycache__/_version.cpython-39.pyc | Bin 201 -> 205 bytes .../__pycache__/connection.cpython-39.pyc | Bin 13358 -> 13362 bytes .../__pycache__/connectionpool.cpython-39.pyc | Bin 24454 -> 24458 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 11634 -> 11638 bytes .../urllib3/__pycache__/fields.cpython-39.pyc | Bin 8149 -> 8153 bytes .../__pycache__/filepost.cpython-39.pyc | Bin 2750 -> 2754 bytes .../__pycache__/poolmanager.cpython-39.pyc | Bin 15152 -> 15156 bytes .../__pycache__/request.cpython-39.pyc | Bin 5613 -> 5617 bytes .../__pycache__/response.cpython-39.pyc | Bin 20824 -> 20828 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 187 -> 191 bytes .../_appengine_environ.cpython-39.pyc | Bin 1407 -> 1411 bytes .../__pycache__/appengine.cpython-39.pyc | Bin 8260 -> 8264 bytes .../__pycache__/ntlmpool.cpython-39.pyc | Bin 3614 -> 3618 bytes .../__pycache__/pyopenssl.cpython-39.pyc | Bin 15582 -> 15586 bytes .../securetransport.cpython-39.pyc | Bin 21898 -> 21902 bytes .../contrib/__pycache__/socks.cpython-39.pyc | Bin 5623 -> 5627 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 204 -> 208 bytes .../__pycache__/bindings.cpython-39.pyc | Bin 10711 -> 10715 bytes .../__pycache__/low_level.cpython-39.pyc | Bin 9160 -> 9164 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 301 -> 305 bytes .../packages/__pycache__/six.cpython-39.pyc | Bin 27571 -> 27575 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 198 -> 202 bytes .../__pycache__/makefile.cpython-39.pyc | Bin 1296 -> 1300 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 560 -> 564 bytes .../_implementation.cpython-39.pyc | Bin 3291 -> 3295 bytes .../util/__pycache__/__init__.cpython-39.pyc | Bin 1097 -> 1101 bytes .../__pycache__/connection.cpython-39.pyc | Bin 3449 -> 3453 bytes .../util/__pycache__/proxy.cpython-39.pyc | Bin 1333 -> 1337 bytes .../util/__pycache__/queue.cpython-39.pyc | Bin 1052 -> 1056 bytes .../util/__pycache__/request.cpython-39.pyc | Bin 3440 -> 3444 bytes .../util/__pycache__/response.cpython-39.pyc | Bin 2337 -> 2341 bytes .../util/__pycache__/retry.cpython-39.pyc | Bin 15824 -> 15828 bytes .../util/__pycache__/ssl_.cpython-39.pyc | Bin 11321 -> 11325 bytes .../__pycache__/ssltransport.cpython-39.pyc | Bin 7502 -> 7506 bytes .../util/__pycache__/timeout.cpython-39.pyc | Bin 8935 -> 8939 bytes .../util/__pycache__/url.cpython-39.pyc | Bin 10660 -> 10664 bytes .../util/__pycache__/wait.cpython-39.pyc | Bin 3120 -> 3124 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 9711 -> 9715 bytes .../__pycache__/labels.cpython-39.pyc | Bin 3825 -> 3829 bytes .../__pycache__/mklabels.cpython-39.pyc | Bin 1895 -> 1899 bytes .../__pycache__/tests.cpython-39.pyc | Bin 5059 -> 5063 bytes .../__pycache__/x_user_defined.cpython-39.pyc | Bin 2655 -> 2659 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 100427 -> 100431 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 181 -> 185 bytes .../__pycache__/appdirs.cpython-39.pyc | Bin 20498 -> 20502 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 201334 -> 201339 bytes .../__pycache__/__about__.cpython-39.pyc | Bin 697 -> 701 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 543 -> 547 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 1141 -> 1145 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 2895 -> 2899 bytes .../__pycache__/_typing.cpython-39.pyc | Bin 1486 -> 1490 bytes .../__pycache__/markers.cpython-39.pyc | Bin 9302 -> 9306 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 4079 -> 4083 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 20578 -> 20582 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 17257 -> 17261 bytes .../__pycache__/utils.cpython-39.pyc | Bin 1648 -> 1652 bytes .../__pycache__/version.cpython-39.pyc | Bin 13315 -> 13319 bytes .../pkg_resources/_vendor/pyparsing.py | 2 +- .../__pycache__/__init__.cpython-39.pyc | Bin 2870 -> 2874 bytes .../__pycache__/setup.cpython-39.pyc | Bin 309 -> 313 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 2512 -> 2516 bytes .../__pycache__/_ast_gen.cpython-39.pyc | Bin 10211 -> 10215 bytes .../__pycache__/_build_tables.cpython-39.pyc | Bin 525 -> 529 bytes .../__pycache__/ast_transforms.cpython-39.pyc | Bin 2525 -> 2529 bytes .../__pycache__/c_ast.cpython-39.pyc | Bin 35177 -> 35181 bytes .../__pycache__/c_generator.cpython-39.pyc | Bin 16717 -> 16721 bytes .../__pycache__/c_lexer.cpython-39.pyc | Bin 11891 -> 11895 bytes .../__pycache__/c_parser.cpython-39.pyc | Bin 60495 -> 60499 bytes .../__pycache__/lextab.cpython-39.pyc | Bin 5407 -> 5411 bytes .../__pycache__/plyparser.cpython-39.pyc | Bin 4672 -> 4676 bytes .../__pycache__/yacctab.cpython-39.pyc | Bin 146780 -> 146784 bytes .../ply/__pycache__/__init__.cpython-39.pyc | Bin 222 -> 226 bytes .../ply/__pycache__/cpp.cpython-39.pyc | Bin 16039 -> 16043 bytes .../ply/__pycache__/ctokens.cpython-39.pyc | Bin 2075 -> 2079 bytes .../ply/__pycache__/lex.cpython-39.pyc | Bin 21416 -> 21420 bytes .../ply/__pycache__/yacc.cpython-39.pyc | Bin 52971 -> 52975 bytes .../ply/__pycache__/ygen.cpython-39.pyc | Bin 1785 -> 1789 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 3853 -> 3857 bytes .../__pycache__/__version__.cpython-39.pyc | Bin 531 -> 535 bytes .../_internal_utils.cpython-39.pyc | Bin 1278 -> 1282 bytes .../__pycache__/adapters.cpython-39.pyc | Bin 16877 -> 16881 bytes .../requests/__pycache__/api.cpython-39.pyc | Bin 6695 -> 6699 bytes .../requests/__pycache__/auth.cpython-39.pyc | Bin 8307 -> 8311 bytes .../requests/__pycache__/certs.cpython-39.pyc | Bin 597 -> 601 bytes .../__pycache__/compat.cpython-39.pyc | Bin 1687 -> 1691 bytes .../__pycache__/cookies.cpython-39.pyc | Bin 18798 -> 18802 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 5369 -> 5373 bytes .../requests/__pycache__/help.cpython-39.pyc | Bin 2849 -> 2853 bytes .../requests/__pycache__/hooks.cpython-39.pyc | Bin 966 -> 970 bytes .../__pycache__/models.cpython-39.pyc | Bin 24374 -> 24378 bytes .../__pycache__/packages.cpython-39.pyc | Bin 673 -> 677 bytes .../__pycache__/sessions.cpython-39.pyc | Bin 19833 -> 19837 bytes .../__pycache__/status_codes.cpython-39.pyc | Bin 4215 -> 4219 bytes .../__pycache__/structures.cpython-39.pyc | Bin 4436 -> 4440 bytes .../requests/__pycache__/utils.cpython-39.pyc | Bin 23288 -> 23292 bytes .../dependency_links.txt | 2 - .../setuptools-57.4.0.dist-info/INSTALLER | 1 + .../LICENSE | 0 .../METADATA | 11 +- .../RECORD | 79 +- .../setuptools-57.4.0.dist-info/REQUESTED} | 0 .../WHEEL | 0 .../entry_points.txt | 0 .../top_level.txt | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 8614 -> 8618 bytes .../_deprecation_warning.cpython-39.pyc | Bin 540 -> 544 bytes .../__pycache__/_imp.cpython-39.pyc | Bin 2075 -> 2079 bytes .../__pycache__/archive_util.cpython-39.pyc | Bin 5804 -> 5808 bytes .../__pycache__/build_meta.cpython-39.pyc | Bin 9063 -> 9067 bytes .../__pycache__/config.cpython-39.pyc | Bin 19838 -> 19957 bytes .../__pycache__/dep_util.cpython-39.pyc | Bin 847 -> 851 bytes .../__pycache__/depends.cpython-39.pyc | Bin 5239 -> 5243 bytes .../__pycache__/dist.cpython-39.pyc | Bin 33322 -> 36238 bytes .../__pycache__/errors.cpython-39.pyc | Bin 840 -> 844 bytes .../__pycache__/extension.cpython-39.pyc | Bin 1934 -> 1938 bytes .../__pycache__/glob.cpython-39.pyc | Bin 3684 -> 3688 bytes .../__pycache__/installer.cpython-39.pyc | Bin 2761 -> 2765 bytes .../__pycache__/launch.cpython-39.pyc | Bin 891 -> 895 bytes .../__pycache__/lib2to3_ex.cpython-39.pyc | Bin 2693 -> 2697 bytes .../__pycache__/monkey.cpython-39.pyc | Bin 4603 -> 4607 bytes .../__pycache__/msvc.cpython-39.pyc | Bin 43260 -> 42833 bytes .../__pycache__/namespaces.cpython-39.pyc | Bin 3590 -> 3594 bytes .../__pycache__/package_index.cpython-39.pyc | Bin 33084 -> 32630 bytes .../__pycache__/py34compat.cpython-39.pyc | Bin 470 -> 474 bytes .../__pycache__/sandbox.cpython-39.pyc | Bin 15764 -> 15768 bytes .../__pycache__/ssl_support.cpython-39.pyc | Bin 6851 -> 0 bytes .../__pycache__/unicode_utils.cpython-39.pyc | Bin 1104 -> 1108 bytes .../__pycache__/version.cpython-39.pyc | Bin 314 -> 318 bytes .../__pycache__/wheel.cpython-39.pyc | Bin 7270 -> 7274 bytes .../windows_support.cpython-39.pyc | Bin 1013 -> 1017 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 448 -> 452 bytes .../__pycache__/_msvccompiler.cpython-39.pyc | Bin 13803 -> 13807 bytes .../__pycache__/archive_util.cpython-39.pyc | Bin 6635 -> 6639 bytes .../__pycache__/bcppcompiler.cpython-39.pyc | Bin 6546 -> 6550 bytes .../__pycache__/ccompiler.cpython-39.pyc | Bin 33251 -> 33418 bytes .../_distutils/__pycache__/cmd.cpython-39.pyc | Bin 13974 -> 13978 bytes .../__pycache__/config.cpython-39.pyc | Bin 3577 -> 3581 bytes .../__pycache__/core.cpython-39.pyc | Bin 6702 -> 6706 bytes .../cygwinccompiler.cpython-39.pyc | Bin 8551 -> 8786 bytes .../__pycache__/debug.cpython-39.pyc | Bin 244 -> 248 bytes .../__pycache__/dep_util.cpython-39.pyc | Bin 2764 -> 2768 bytes .../__pycache__/dir_util.cpython-39.pyc | Bin 5865 -> 5869 bytes .../__pycache__/dist.cpython-39.pyc | Bin 34435 -> 34439 bytes .../__pycache__/errors.cpython-39.pyc | Bin 5300 -> 5304 bytes .../__pycache__/extension.cpython-39.pyc | Bin 6965 -> 6969 bytes .../__pycache__/fancy_getopt.cpython-39.pyc | Bin 10673 -> 10677 bytes .../__pycache__/file_util.cpython-39.pyc | Bin 6031 -> 6035 bytes .../__pycache__/filelist.cpython-39.pyc | Bin 9883 -> 10827 bytes .../_distutils/__pycache__/log.cpython-39.pyc | Bin 2363 -> 2367 bytes .../__pycache__/msvc9compiler.cpython-39.pyc | Bin 17560 -> 17564 bytes .../__pycache__/msvccompiler.cpython-39.pyc | Bin 14755 -> 14759 bytes .../__pycache__/py35compat.cpython-39.pyc | Bin 620 -> 624 bytes .../__pycache__/py38compat.cpython-39.pyc | Bin 415 -> 419 bytes .../__pycache__/spawn.cpython-39.pyc | Bin 3416 -> 2895 bytes .../__pycache__/sysconfig.cpython-39.pyc | Bin 12397 -> 12401 bytes .../__pycache__/text_file.cpython-39.pyc | Bin 8489 -> 8493 bytes .../__pycache__/unixccompiler.cpython-39.pyc | Bin 6650 -> 6832 bytes .../__pycache__/util.cpython-39.pyc | Bin 15683 -> 17331 bytes .../__pycache__/version.cpython-39.pyc | Bin 7389 -> 7393 bytes .../versionpredicate.cpython-39.pyc | Bin 5173 -> 5177 bytes .../setuptools/_distutils/_msvccompiler.py | 2 +- .../setuptools/_distutils/ccompiler.py | 9 +- .../__pycache__/__init__.cpython-39.pyc | Bin 523 -> 527 bytes .../command/__pycache__/bdist.cpython-39.pyc | Bin 3653 -> 3657 bytes .../__pycache__/bdist_dumb.cpython-39.pyc | Bin 3636 -> 3640 bytes .../__pycache__/bdist_msi.cpython-39.pyc | Bin 19818 -> 19822 bytes .../__pycache__/bdist_rpm.cpython-39.pyc | Bin 12273 -> 12277 bytes .../__pycache__/bdist_wininst.cpython-39.pyc | Bin 8593 -> 8597 bytes .../command/__pycache__/build.cpython-39.pyc | Bin 3929 -> 3929 bytes .../__pycache__/build_clib.cpython-39.pyc | Bin 4848 -> 4852 bytes .../__pycache__/build_ext.cpython-39.pyc | Bin 16297 -> 16311 bytes .../__pycache__/build_py.cpython-39.pyc | Bin 10481 -> 10485 bytes .../__pycache__/build_scripts.cpython-39.pyc | Bin 4378 -> 4382 bytes .../command/__pycache__/check.cpython-39.pyc | Bin 4957 -> 4961 bytes .../command/__pycache__/clean.cpython-39.pyc | Bin 2130 -> 2134 bytes .../command/__pycache__/config.cpython-39.pyc | Bin 10260 -> 10264 bytes .../__pycache__/install.cpython-39.pyc | Bin 13847 -> 13845 bytes .../__pycache__/install_data.cpython-39.pyc | Bin 2333 -> 2337 bytes .../install_egg_info.cpython-39.pyc | Bin 3068 -> 3072 bytes .../install_headers.cpython-39.pyc | Bin 1758 -> 1762 bytes .../__pycache__/install_lib.cpython-39.pyc | Bin 5130 -> 5134 bytes .../install_scripts.cpython-39.pyc | Bin 2181 -> 2185 bytes .../__pycache__/py37compat.cpython-39.pyc | Bin 1024 -> 1028 bytes .../__pycache__/register.cpython-39.pyc | Bin 8501 -> 8505 bytes .../command/__pycache__/sdist.cpython-39.pyc | Bin 14528 -> 14532 bytes .../command/__pycache__/upload.cpython-39.pyc | Bin 5251 -> 5255 bytes .../setuptools/_distutils/command/build.py | 2 +- .../_distutils/command/build_ext.py | 8 +- .../setuptools/_distutils/command/install.py | 2 +- .../setuptools/_distutils/cygwinccompiler.py | 89 +- .../setuptools/_distutils/filelist.py | 62 +- .../setuptools/_distutils/msvc9compiler.py | 4 +- .../setuptools/_distutils/msvccompiler.py | 4 +- .../setuptools/_distutils/spawn.py | 29 +- .../setuptools/_distutils/unixccompiler.py | 8 +- .../setuptools/_distutils/util.py | 55 + .../Lib/site-packages/setuptools/_imp.py | 4 +- .../__pycache__/__init__.cpython-39.pyc | Bin 178 -> 182 bytes .../__pycache__/ordered_set.cpython-39.pyc | Bin 16372 -> 16376 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 201331 -> 201336 bytes .../_vendor/more_itertools/__init__.py | 4 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 263 bytes .../__pycache__/more.cpython-39.pyc | Bin 0 -> 110008 bytes .../__pycache__/recipes.cpython-39.pyc | Bin 0 -> 17928 bytes .../setuptools/_vendor/more_itertools/more.py | 3825 +++++++++++++++++ .../_vendor/more_itertools/recipes.py | 620 +++ .../__pycache__/__about__.cpython-39.pyc | Bin 694 -> 698 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 540 -> 544 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 1138 -> 1142 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 2892 -> 2896 bytes .../__pycache__/_typing.cpython-39.pyc | Bin 1483 -> 1487 bytes .../__pycache__/markers.cpython-39.pyc | Bin 9296 -> 9300 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 4073 -> 4077 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 20575 -> 20579 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 17254 -> 17258 bytes .../__pycache__/utils.cpython-39.pyc | Bin 1645 -> 1649 bytes .../__pycache__/version.cpython-39.pyc | Bin 13312 -> 13316 bytes .../setuptools/_vendor/pyparsing.py | 2 +- .../setuptools/command/__init__.py | 9 - .../__pycache__/__init__.cpython-39.pyc | Bin 643 -> 371 bytes .../command/__pycache__/alias.cpython-39.pyc | Bin 2361 -> 2365 bytes .../__pycache__/bdist_egg.cpython-39.pyc | Bin 13027 -> 13031 bytes .../__pycache__/bdist_rpm.cpython-39.pyc | Bin 1347 -> 1351 bytes .../__pycache__/build_clib.cpython-39.pyc | Bin 2458 -> 2462 bytes .../__pycache__/build_ext.cpython-39.pyc | Bin 9731 -> 9821 bytes .../__pycache__/build_py.cpython-39.pyc | Bin 8685 -> 8376 bytes .../__pycache__/develop.cpython-39.pyc | Bin 6446 -> 6450 bytes .../__pycache__/dist_info.cpython-39.pyc | Bin 1385 -> 1389 bytes .../__pycache__/easy_install.cpython-39.pyc | Bin 63542 -> 63546 bytes .../__pycache__/egg_info.cpython-39.pyc | Bin 21702 -> 21972 bytes .../__pycache__/install.cpython-39.pyc | Bin 4026 -> 4030 bytes .../install_egg_info.cpython-39.pyc | Bin 2417 -> 2421 bytes .../__pycache__/install_lib.cpython-39.pyc | Bin 4124 -> 4128 bytes .../install_scripts.cpython-39.pyc | Bin 2412 -> 2416 bytes .../__pycache__/py36compat.cpython-39.pyc | Bin 4579 -> 4583 bytes .../__pycache__/register.cpython-39.pyc | Bin 835 -> 839 bytes .../command/__pycache__/rotate.cpython-39.pyc | Bin 2494 -> 2498 bytes .../__pycache__/saveopts.cpython-39.pyc | Bin 913 -> 917 bytes .../command/__pycache__/sdist.cpython-39.pyc | Bin 7613 -> 6458 bytes .../command/__pycache__/setopt.cpython-39.pyc | Bin 4525 -> 4529 bytes .../command/__pycache__/test.cpython-39.pyc | Bin 8488 -> 8515 bytes .../command/__pycache__/upload.cpython-39.pyc | Bin 808 -> 812 bytes .../__pycache__/upload_docs.cpython-39.pyc | Bin 6151 -> 6155 bytes .../setuptools/command/build_ext.py | 12 +- .../setuptools/command/build_py.py | 22 +- .../setuptools/command/egg_info.py | 9 +- .../site-packages/setuptools/command/sdist.py | 46 - .../site-packages/setuptools/command/test.py | 4 +- .../Lib/site-packages/setuptools/config.py | 5 + .../Lib/site-packages/setuptools/dist.py | 226 +- .../setuptools/extern/__init__.py | 2 +- .../__pycache__/__init__.cpython-39.pyc | Bin 2893 -> 2913 bytes .../Lib/site-packages/setuptools/msvc.py | 29 +- .../site-packages/setuptools/package_index.py | 34 +- .../site-packages/setuptools/ssl_support.py | 266 -- .../__pycache__/__init__.cpython-39.pyc | Bin 3662 -> 3666 bytes .../__pycache__/__meta__.cpython-39.pyc | Bin 5771 -> 5775 bytes .../__pycache__/css_match.cpython-39.pyc | Bin 34022 -> 34026 bytes .../__pycache__/css_parser.cpython-39.pyc | Bin 26860 -> 26864 bytes .../__pycache__/css_types.cpython-39.pyc | Bin 10616 -> 10620 bytes .../soupsieve/__pycache__/util.cpython-39.pyc | Bin 2859 -> 2863 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 2165 -> 2169 bytes .../__pycache__/_collections.cpython-39.pyc | Bin 10760 -> 10764 bytes .../__pycache__/_version.cpython-39.pyc | Bin 189 -> 193 bytes .../__pycache__/connection.cpython-39.pyc | Bin 13346 -> 13350 bytes .../__pycache__/connectionpool.cpython-39.pyc | Bin 24442 -> 24446 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 11622 -> 11626 bytes .../urllib3/__pycache__/fields.cpython-39.pyc | Bin 8137 -> 8141 bytes .../__pycache__/filepost.cpython-39.pyc | Bin 2738 -> 2742 bytes .../__pycache__/poolmanager.cpython-39.pyc | Bin 15140 -> 15144 bytes .../__pycache__/request.cpython-39.pyc | Bin 5601 -> 5605 bytes .../__pycache__/response.cpython-39.pyc | Bin 20812 -> 20816 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 175 -> 179 bytes .../_appengine_environ.cpython-39.pyc | Bin 1395 -> 1399 bytes .../__pycache__/appengine.cpython-39.pyc | Bin 8224 -> 8228 bytes .../__pycache__/ntlmpool.cpython-39.pyc | Bin 3602 -> 3606 bytes .../__pycache__/pyopenssl.cpython-39.pyc | Bin 15546 -> 15550 bytes .../securetransport.cpython-39.pyc | Bin 21862 -> 21866 bytes .../contrib/__pycache__/socks.cpython-39.pyc | Bin 5611 -> 5615 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 192 -> 196 bytes .../__pycache__/bindings.cpython-39.pyc | Bin 10687 -> 10691 bytes .../__pycache__/low_level.cpython-39.pyc | Bin 9148 -> 9152 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 289 -> 293 bytes .../packages/__pycache__/six.cpython-39.pyc | Bin 27559 -> 27563 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 186 -> 190 bytes .../__pycache__/makefile.cpython-39.pyc | Bin 1284 -> 1288 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 548 -> 552 bytes .../_implementation.cpython-39.pyc | Bin 3279 -> 3283 bytes .../util/__pycache__/__init__.cpython-39.pyc | Bin 1085 -> 1089 bytes .../__pycache__/connection.cpython-39.pyc | Bin 3425 -> 3429 bytes .../util/__pycache__/proxy.cpython-39.pyc | Bin 1321 -> 1325 bytes .../util/__pycache__/queue.cpython-39.pyc | Bin 1040 -> 1044 bytes .../util/__pycache__/request.cpython-39.pyc | Bin 3428 -> 3432 bytes .../util/__pycache__/response.cpython-39.pyc | Bin 2325 -> 2329 bytes .../util/__pycache__/retry.cpython-39.pyc | Bin 15812 -> 15816 bytes .../util/__pycache__/ssl_.cpython-39.pyc | Bin 11297 -> 11301 bytes .../__pycache__/ssltransport.cpython-39.pyc | Bin 7466 -> 7470 bytes .../util/__pycache__/timeout.cpython-39.pyc | Bin 8923 -> 8927 bytes .../util/__pycache__/url.cpython-39.pyc | Bin 10624 -> 10628 bytes .../util/__pycache__/wait.cpython-39.pyc | Bin 3108 -> 3112 bytes .../event/__pycache__/__init__.cpython-39.pyc | Bin 419 -> 423 bytes .../__pycache__/classhandler.cpython-39.pyc | Bin 2045 -> 2049 bytes .../event/__pycache__/tests.cpython-39.pyc | Bin 1986 -> 1990 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 2669 -> 2673 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 4577 -> 4581 bytes .../__pycache__/_flatten.cpython-39.pyc | Bin 584 -> 588 bytes .../__pycache__/adapter.cpython-39.pyc | Bin 26357 -> 26361 bytes .../__pycache__/advice.cpython-39.pyc | Bin 4964 -> 4968 bytes .../__pycache__/declarations.cpython-39.pyc | Bin 30988 -> 30992 bytes .../__pycache__/document.cpython-39.pyc | Bin 3181 -> 3185 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 7258 -> 7262 bytes .../__pycache__/interface.cpython-39.pyc | Bin 25239 -> 25243 bytes .../__pycache__/interfaces.cpython-39.pyc | Bin 60674 -> 60678 bytes .../__pycache__/registry.cpython-39.pyc | Bin 22608 -> 22612 bytes .../interface/__pycache__/ro.cpython-39.pyc | Bin 19703 -> 19707 bytes .../__pycache__/verify.cpython-39.pyc | Bin 4480 -> 4484 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 8717 -> 8721 bytes .../__pycache__/builtins.cpython-39.pyc | Bin 3540 -> 3544 bytes .../__pycache__/collections.cpython-39.pyc | Bin 8110 -> 8114 bytes .../__pycache__/idatetime.cpython-39.pyc | Bin 24675 -> 24679 bytes .../__pycache__/interfaces.cpython-39.pyc | Bin 7729 -> 7733 bytes .../common/__pycache__/io.cpython-39.pyc | Bin 1375 -> 1379 bytes .../common/__pycache__/mapping.cpython-39.pyc | Bin 7369 -> 7373 bytes .../common/__pycache__/numbers.cpython-39.pyc | Bin 2176 -> 2180 bytes .../__pycache__/sequence.cpython-39.pyc | Bin 8989 -> 8993 bytes .../tests/__pycache__/__init__.cpython-39.pyc | Bin 3675 -> 3679 bytes .../__pycache__/basemapping.cpython-39.pyc | Bin 3661 -> 3665 bytes .../__pycache__/test_builtins.cpython-39.pyc | Bin 1255 -> 1259 bytes .../test_collections.cpython-39.pyc | Bin 5313 -> 5317 bytes .../__pycache__/test_idatetime.cpython-39.pyc | Bin 1303 -> 1307 bytes .../test_import_interfaces.cpython-39.pyc | Bin 659 -> 663 bytes .../tests/__pycache__/test_io.cpython-39.pyc | Bin 1869 -> 1873 bytes .../__pycache__/test_numbers.cpython-39.pyc | Bin 1217 -> 1221 bytes .../tests/__pycache__/__init__.cpython-39.pyc | Bin 3733 -> 3737 bytes .../advisory_testing.cpython-39.pyc | Bin 1152 -> 1156 bytes .../tests/__pycache__/dummy.cpython-39.pyc | Bin 459 -> 463 bytes .../tests/__pycache__/idummy.cpython-39.pyc | Bin 657 -> 661 bytes .../tests/__pycache__/m1.cpython-39.pyc | Bin 580 -> 584 bytes .../tests/__pycache__/odd.cpython-39.pyc | Bin 3490 -> 3494 bytes .../__pycache__/test_adapter.cpython-39.pyc | Bin 75789 -> 75793 bytes .../__pycache__/test_advice.cpython-39.pyc | Bin 15850 -> 15854 bytes .../test_declarations.cpython-39.pyc | Bin 113988 -> 113992 bytes .../__pycache__/test_document.cpython-39.pyc | Bin 21227 -> 21231 bytes .../__pycache__/test_element.cpython-39.pyc | Bin 850 -> 854 bytes .../test_exceptions.cpython-39.pyc | Bin 7136 -> 7140 bytes .../__pycache__/test_interface.cpython-39.pyc | Bin 114962 -> 114966 bytes .../test_interfaces.cpython-39.pyc | Bin 6600 -> 6604 bytes .../test_odd_declarations.cpython-39.pyc | Bin 10322 -> 10326 bytes .../__pycache__/test_registry.cpython-39.pyc | Bin 125186 -> 125190 bytes .../tests/__pycache__/test_ro.cpython-39.pyc | Bin 18891 -> 18895 bytes .../__pycache__/test_sorting.cpython-39.pyc | Bin 2477 -> 2481 bytes .../__pycache__/test_verify.cpython-39.pyc | Bin 33990 -> 33994 bytes IKEA_scraper/.venv/Scripts/Activate.ps1 | 176 +- .../Scripts/__pycache__/bottle.cpython-39.pyc | Bin 145418 -> 145422 bytes IKEA_scraper/.venv/Scripts/activate | 2 +- IKEA_scraper/.venv/Scripts/activate.bat | 2 +- IKEA_scraper/.venv/Scripts/bottle.py | 2 +- IKEA_scraper/.venv/Scripts/futurize-script.py | 2 +- IKEA_scraper/.venv/Scripts/normalizer.exe | Bin 106391 -> 106395 bytes .../.venv/Scripts/pasteurize-script.py | 2 +- IKEA_scraper/.venv/Scripts/pip.exe | Bin 106368 -> 106372 bytes IKEA_scraper/.venv/Scripts/pip3.9.exe | Bin 106368 -> 106372 bytes IKEA_scraper/.venv/Scripts/pip3.exe | Bin 106368 -> 106372 bytes IKEA_scraper/.venv/Scripts/python.exe | Bin 543464 -> 543464 bytes IKEA_scraper/.venv/Scripts/pythonw.exe | Bin 542440 -> 542440 bytes IKEA_scraper/.venv/pyvenv.cfg | 2 +- IKEA_scraper/__pycache__/ikea.cpython-39.pyc | Bin 5190 -> 5194 bytes IKEA_scraper/ikea.py | 6 +- IKEA_scraper/main.py | 57 +- IKEA_scraper/web/index.html | 61 +- IKEA_scraper/web/style.css | 140 + 1279 files changed, 6193 insertions(+), 1173 deletions(-) rename IKEA_scraper/.venv/Lib/site-packages/{setuptools-56.0.0.dist-info => MarkupSafe-2.0.1.dist-info}/INSTALLER (100%) create mode 100644 IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/LICENSE.rst create mode 100644 IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/METADATA create mode 100644 IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/RECORD create mode 100644 IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL create mode 100644 IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/top_level.txt create mode 100644 IKEA_scraper/.venv/Lib/site-packages/markupsafe/__init__.py create mode 100644 IKEA_scraper/.venv/Lib/site-packages/markupsafe/__pycache__/__init__.cpython-39.pyc create mode 100644 IKEA_scraper/.venv/Lib/site-packages/markupsafe/__pycache__/_native.cpython-39.pyc create mode 100644 IKEA_scraper/.venv/Lib/site-packages/markupsafe/_native.py create mode 100644 IKEA_scraper/.venv/Lib/site-packages/markupsafe/_speedups.cp39-win_amd64.pyd create mode 100644 IKEA_scraper/.venv/Lib/site-packages/markupsafe/_speedups.pyi rename IKEA_scraper/.venv/Lib/site-packages/{setuptools-56.0.0.dist-info/REQUESTED => markupsafe/py.typed} (100%) delete mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/dependency_links.txt create mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/INSTALLER rename IKEA_scraper/.venv/Lib/site-packages/{setuptools-56.0.0.dist-info => setuptools-57.4.0.dist-info}/LICENSE (100%) rename IKEA_scraper/.venv/Lib/site-packages/{setuptools-56.0.0.dist-info => setuptools-57.4.0.dist-info}/METADATA (93%) rename IKEA_scraper/.venv/Lib/site-packages/{setuptools-56.0.0.dist-info => setuptools-57.4.0.dist-info}/RECORD (84%) rename IKEA_scraper/{web/main.css => .venv/Lib/site-packages/setuptools-57.4.0.dist-info/REQUESTED} (100%) rename IKEA_scraper/.venv/Lib/site-packages/{setuptools-56.0.0.dist-info => setuptools-57.4.0.dist-info}/WHEEL (100%) rename IKEA_scraper/.venv/Lib/site-packages/{setuptools-56.0.0.dist-info => setuptools-57.4.0.dist-info}/entry_points.txt (100%) rename IKEA_scraper/.venv/Lib/site-packages/{setuptools-56.0.0.dist-info => setuptools-57.4.0.dist-info}/top_level.txt (100%) delete mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/ssl_support.cpython-39.pyc create mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py create mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-39.pyc create mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-39.pyc create mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-39.pyc create mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py create mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py delete mode 100644 IKEA_scraper/.venv/Lib/site-packages/setuptools/ssl_support.py create mode 100644 IKEA_scraper/web/style.css diff --git a/IKEA_scraper/.venv/Lib/site-packages/Eel-0.14.0-py3.9.egg-info/PKG-INFO b/IKEA_scraper/.venv/Lib/site-packages/Eel-0.14.0-py3.9.egg-info/PKG-INFO index 5f45526f..614d4d3c 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/Eel-0.14.0-py3.9.egg-info/PKG-INFO +++ b/IKEA_scraper/.venv/Lib/site-packages/Eel-0.14.0-py3.9.egg-info/PKG-INFO @@ -6,363 +6,6 @@ Home-page: https://github.com/samuelhwilliams/Eel Author: Chris Knott Author-email: chrisknott@hotmail.co.uk License: UNKNOWN -Description: # Eel - - [![PyPI version](https://img.shields.io/pypi/v/Eel?style=for-the-badge)](https://pypi.org/project/Eel/) - [![PyPi Downloads](https://img.shields.io/pypi/dm/Eel?style=for-the-badge)](https://pypistats.org/packages/eel) - ![Python](https://img.shields.io/pypi/pyversions/Eel?style=for-the-badge) - [![License](https://img.shields.io/pypi/l/Eel.svg?style=for-the-badge)](https://pypi.org/project/Eel/) - - - [![Total alerts](https://img.shields.io/lgtm/alerts/g/samuelhwilliams/Eel.svg?logo=lgtm&style=for-the-badge)](https://lgtm.com/projects/g/samuelhwilliams/Eel/alerts/) - [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/samuelhwilliams/Eel.svg?logo=lgtm&style=for-the-badge)](https://lgtm.com/projects/g/samuelhwilliams/Eel/context:javascript) - [![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/samuelhwilliams/Eel.svg?logo=lgtm&style=for-the-badge)](https://lgtm.com/projects/g/samuelhwilliams/Eel/context:python) - - - Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries. - - > **Eel hosts a local webserver, then lets you annotate functions in Python so that they can be called from Javascript, and vice versa.** - - Eel is designed to take the hassle out of writing short and simple GUI applications. If you are familiar with Python and web development, probably just jump to [this example](https://github.com/ChrisKnott/Eel/tree/master/examples/04%20-%20file_access) which picks random file names out of the given folder (something that is impossible from a browser). - -

- - - - - [Eel](#eel) - - [Intro](#intro) - - [Install](#install) - - [Usage](#usage) - - [Directory Structure](#directory-structure) - - [Starting the app](#starting-the-app) - - [App options](#app-options) - - [Chrome/Chromium flags](#chromechromium-flags) - - [Exposing functions](#exposing-functions) - - [Eello, World!](#eello-world) - - [Return values](#return-values) - - [Callbacks](#callbacks) - - [Synchronous returns](#synchronous-returns) - - [Asynchronous Python](#asynchronous-python) - - [Building distributable binary with PyInstaller](#building-distributable-binary-with-pyinstaller) - - [Microsoft Edge](#microsoft-edge) - - - - ## Intro - - There are several options for making GUI apps in Python, but if you want to use HTML/JS (in order to use jQueryUI or Bootstrap, for example) then you generally have to write a lot of boilerplate code to communicate from the Client (Javascript) side to the Server (Python) side. - - The closest Python equivalent to Electron (to my knowledge) is [cefpython](https://github.com/cztomczak/cefpython). It is a bit heavy weight for what I wanted. - - Eel is not as fully-fledged as Electron or cefpython - it is probably not suitable for making full blown applications like Atom - but it is very suitable for making the GUI equivalent of little utility scripts that you use internally in your team. - - For some reason many of the best-in-class number crunching and maths libraries are in Python (Tensorflow, Numpy, Scipy etc) but many of the best visualization libraries are in Javascript (D3, THREE.js etc). Hopefully Eel makes it easy to combine these into simple utility apps for assisting your development. - - Join Eel's users and maintainers on [Discord](https://discord.com/invite/3nqXPFX), if you like. - - ## Install - - Install from pypi with `pip`: - - ```shell - pip install eel - ``` - - To include support for HTML templating, currently using [Jinja2](https://pypi.org/project/Jinja2/#description): - - ```shell - pip install eel[jinja2] - ``` - - ## Usage - - ### Directory Structure - - An Eel application will be split into a frontend consisting of various web-technology files (.html, .js, .css) and a backend consisting of various Python scripts. - - All the frontend files should be put in a single directory (they can be further divided into folders inside this if necessary). - - ``` - my_python_script.py <-- Python scripts - other_python_module.py - static_web_folder/ <-- Web folder - main_page.html - css/ - style.css - img/ - logo.png - ``` - - ### Starting the app - - Suppose you put all the frontend files in a directory called `web`, including your start page `main.html`, then the app is started like this; - - ```python - import eel - eel.init('web') - eel.start('main.html') - ``` - - This will start a webserver on the default settings (http://localhost:8000) and open a browser to http://localhost:8000/main.html. - - If Chrome or Chromium is installed then by default it will open in that in App Mode (with the `--app` cmdline flag), regardless of what the OS's default browser is set to (it is possible to override this behaviour). - - ### App options - - Additional options can be passed to `eel.start()` as keyword arguments. - - Some of the options include the mode the app is in (e.g. 'chrome'), the port the app runs on, the host name of the app, and adding additional command line flags. - - As of Eel v0.12.0, the following options are available to `start()`: - - **mode**, a string specifying what browser to use (e.g. `'chrome'`, `'electron'`, `'edge'`, `'custom'`). Can also be `None` or `False` to not open a window. *Default: `'chrome'`* - - **host**, a string specifying what hostname to use for the Bottle server. *Default: `'localhost'`)* - - **port**, an int specifying what port to use for the Bottle server. Use `0` for port to be picked automatically. *Default: `8000`*. - - **block**, a bool saying whether or not the call to `start()` should block the calling thread. *Default: `True`* - - **jinja_templates**, a string specifying a folder to use for Jinja2 templates, e.g. `my_templates`. *Default: `None`* - - **cmdline_args**, a list of strings to pass to the command to start the browser. For example, we might add extra flags for Chrome; ```eel.start('main.html', mode='chrome-app', port=8080, cmdline_args=['--start-fullscreen', '--browser-startup-dialog'])```. *Default: `[]`* - - **size**, a tuple of ints specifying the (width, height) of the main window in pixels *Default: `None`* - - **position**, a tuple of ints specifying the (left, top) of the main window in pixels *Default: `None`* - - **geometry**, a dictionary specifying the size and position for all windows. The keys should be the relative path of the page, and the values should be a dictionary of the form `{'size': (200, 100), 'position': (300, 50)}`. *Default: {}* - - **close_callback**, a lambda or function that is called when a websocket to a window closes (i.e. when the user closes the window). It should take two arguments; a string which is the relative path of the page that just closed, and a list of other websockets that are still open. *Default: `None`* - - **app**, an instance of Bottle which will be used rather than creating a fresh one. This can be used to install middleware on the - instance before starting eel, e.g. for session management, authentication, etc. - - - - ### Exposing functions - - In addition to the files in the frontend folder, a Javascript library will be served at `/eel.js`. You should include this in any pages: - - ```html - - ``` - - Including this library creates an `eel` object which can be used to communicate with the Python side. - - Any functions in the Python code which are decorated with `@eel.expose` like this... - - ```python - @eel.expose - def my_python_function(a, b): - print(a, b, a + b) - ``` - - ...will appear as methods on the `eel` object on the Javascript side, like this... - - ```javascript - console.log("Calling Python..."); - eel.my_python_function(1, 2); // This calls the Python function that was decorated - ``` - - Similarly, any Javascript functions which are exposed like this... - - ```javascript - eel.expose(my_javascript_function); - function my_javascript_function(a, b, c, d) { - if (a < b) { - console.log(c * d); - } - } - ``` - - can be called from the Python side like this... - - ```python - print('Calling Javascript...') - eel.my_javascript_function(1, 2, 3, 4) # This calls the Javascript function - ``` - - The exposed name can also be overridden by passing in a second argument. If your app minifies JavaScript during builds, this may be necessary to ensure that functions can be resolved on the Python side: - - ```javascript - eel.expose(someFunction, "my_javascript_function"); - ``` - - When passing complex objects as arguments, bear in mind that internally they are converted to JSON and sent down a websocket (a process that potentially loses information). - - ### Eello, World! - - > See full example in: [examples/01 - hello_world](https://github.com/ChrisKnott/Eel/tree/master/examples/01%20-%20hello_world) - - Putting this together into a **Hello, World!** example, we have a short HTML page, `web/hello.html`: - - ```html - - - - Hello, World! - - - - - - - - Hello, World! - - - ``` - - and a short Python script `hello.py`: - - ```python - import eel - - # Set web files folder and optionally specify which file types to check for eel.expose() - # *Default allowed_extensions are: ['.js', '.html', '.txt', '.htm', '.xhtml'] - eel.init('web', allowed_extensions=['.js', '.html']) - - @eel.expose # Expose this function to Javascript - def say_hello_py(x): - print('Hello from %s' % x) - - say_hello_py('Python World!') - eel.say_hello_js('Python World!') # Call a Javascript function - - eel.start('hello.html') # Start (this blocks and enters loop) - ``` - - If we run the Python script (`python hello.py`), then a browser window will open displaying `hello.html`, and we will see... - - ``` - Hello from Python World! - Hello from Javascript World! - ``` - - ...in the terminal, and... - - ``` - Hello from Javascript World! - Hello from Python World! - ``` - - ...in the browser console (press F12 to open). - - You will notice that in the Python code, the Javascript function is called before the browser window is even started - any early calls like this are queued up and then sent once the websocket has been established. - - ### Return values - - While we want to think of our code as comprising a single application, the Python interpreter and the browser window run in separate processes. This can make communicating back and forth between them a bit of a mess, especially if we always had to explicitly _send_ values from one side to the other. - - Eel supports two ways of retrieving _return values_ from the other side of the app, which helps keep the code concise. - - To prevent hanging forever on the Python side, a timeout has been put in place for trying to retrieve values from - the JavaScript side, which defaults to 10000 milliseconds (10 seconds). This can be changed with the `_js_result_timeout` parameter to `eel.init`. There is no corresponding timeout on the JavaScript side. - - #### Callbacks - - When you call an exposed function, you can immediately pass a callback function afterwards. This callback will automatically be called asynchrounously with the return value when the function has finished executing on the other side. - - For example, if we have the following function defined and exposed in Javascript: - - ```javascript - eel.expose(js_random); - function js_random() { - return Math.random(); - } - ``` - - Then in Python we can retrieve random values from the Javascript side like so: - - ```python - def print_num(n): - print('Got this from Javascript:', n) - - # Call Javascript function, and pass explicit callback function - eel.js_random()(print_num) - - # Do the same with an inline lambda as callback - eel.js_random()(lambda n: print('Got this from Javascript:', n)) - ``` - - (It works exactly the same the other way around). - - #### Synchronous returns - - In most situations, the calls to the other side are to quickly retrieve some piece of data, such as the state of a widget or contents of an input field. In these cases it is more convenient to just synchronously wait a few milliseconds then continue with your code, rather than breaking the whole thing up into callbacks. - - To synchronously retrieve the return value, simply pass nothing to the second set of brackets. So in Python we would write: - - ```python - n = eel.js_random()() # This immediately returns the value - print('Got this from Javascript:', n) - ``` - - You can only perform synchronous returns after the browser window has started (after calling `eel.start()`), otherwise obviously the call with hang. - - In Javascript, the language doesn't allow us to block while we wait for a callback, except by using `await` from inside an `async` function. So the equivalent code from the Javascript side would be: - - ```javascript - async function run() { - // Inside a function marked 'async' we can use the 'await' keyword. - - let n = await eel.py_random()(); // Must prefix call with 'await', otherwise it's the same syntax - console.log("Got this from Python: " + n); - } - - run(); - ``` - - ## Asynchronous Python - - Eel is built on Bottle and Gevent, which provide an asynchronous event loop similar to Javascript. A lot of Python's standard library implicitly assumes there is a single execution thread - to deal with this, Gevent can "[monkey patch](https://en.wikipedia.org/wiki/Monkey_patch)" many of the standard modules such as `time`. ~~This monkey patching is done automatically when you call `import eel`~~. If you need monkey patching you should `import gevent.monkey` and call `gevent.monkey.patch_all()` _before_ you `import eel`. Monkey patching can interfere with things like debuggers so should be avoided unless necessary. - - For most cases you should be fine by avoiding using `time.sleep()` and instead using the versions provided by `gevent`. For convenience, the two most commonly needed gevent methods, `sleep()` and `spawn()` are provided directly from Eel (to save importing `time` and/or `gevent` as well). - - In this example... - - ```python - import eel - eel.init('web') - - def my_other_thread(): - while True: - print("I'm a thread") - eel.sleep(1.0) # Use eel.sleep(), not time.sleep() - - eel.spawn(my_other_thread) - - eel.start('main.html', block=False) # Don't block on this call - - while True: - print("I'm a main loop") - eel.sleep(1.0) # Use eel.sleep(), not time.sleep() - ``` - - ...we would then have three "threads" (greenlets) running; - - 1. Eel's internal thread for serving the web folder - 2. The `my_other_thread` method, repeatedly printing **"I'm a thread"** - 3. The main Python thread, which would be stuck in the final `while` loop, repeatedly printing **"I'm a main loop"** - - ## Building distributable binary with PyInstaller - - If you want to package your app into a program that can be run on a computer without a Python interpreter installed, you should use **PyInstaller**. - - 1. Configure a virtualenv with desired Python version and minimum necessary Python packages - 2. Install PyInstaller `pip install PyInstaller` - 3. In your app's folder, run `python -m eel [your_main_script] [your_web_folder]` (for example, you might run `python -m eel hello.py web`) - 4. This will create a new folder `dist/` - 5. Valid PyInstaller flags can be passed through, such as excluding modules with the flag: `--exclude module_name`. For example, you might run `python -m eel file_access.py web --exclude win32com --exclude numpy --exclude cryptography` - 6. When happy that your app is working correctly, add `--onefile --noconsole` flags to build a single executable file - - Consult the [documentation for PyInstaller](http://PyInstaller.readthedocs.io/en/stable/) for more options. - - ## Microsoft Edge - - For Windows 10 users, Microsoft Edge (`eel.start(.., mode='edge')`) is installed by default and a useful fallback if a preferred browser is not installed. See the examples: - - - A Hello World example using Microsoft Edge: [examples/01 - hello_world-Edge/](https://github.com/ChrisKnott/Eel/tree/master/examples/01%20-%20hello_world-Edge) - - Example implementing browser-fallbacks: [examples/07 - CreateReactApp/eel_CRA.py](https://github.com/ChrisKnott/Eel/tree/master/examples/07%20-%20CreateReactApp/eel_CRA.py) - Keywords: gui,html,javascript,electron Platform: UNKNOWN Classifier: Development Status :: 3 - Alpha @@ -379,3 +22,362 @@ Classifier: License :: OSI Approved :: MIT License Requires-Python: >=3.6 Description-Content-Type: text/markdown Provides-Extra: jinja2 + +# Eel + +[![PyPI version](https://img.shields.io/pypi/v/Eel?style=for-the-badge)](https://pypi.org/project/Eel/) +[![PyPi Downloads](https://img.shields.io/pypi/dm/Eel?style=for-the-badge)](https://pypistats.org/packages/eel) +![Python](https://img.shields.io/pypi/pyversions/Eel?style=for-the-badge) +[![License](https://img.shields.io/pypi/l/Eel.svg?style=for-the-badge)](https://pypi.org/project/Eel/) + + +[![Total alerts](https://img.shields.io/lgtm/alerts/g/samuelhwilliams/Eel.svg?logo=lgtm&style=for-the-badge)](https://lgtm.com/projects/g/samuelhwilliams/Eel/alerts/) +[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/samuelhwilliams/Eel.svg?logo=lgtm&style=for-the-badge)](https://lgtm.com/projects/g/samuelhwilliams/Eel/context:javascript) +[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/samuelhwilliams/Eel.svg?logo=lgtm&style=for-the-badge)](https://lgtm.com/projects/g/samuelhwilliams/Eel/context:python) + + +Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries. + +> **Eel hosts a local webserver, then lets you annotate functions in Python so that they can be called from Javascript, and vice versa.** + +Eel is designed to take the hassle out of writing short and simple GUI applications. If you are familiar with Python and web development, probably just jump to [this example](https://github.com/ChrisKnott/Eel/tree/master/examples/04%20-%20file_access) which picks random file names out of the given folder (something that is impossible from a browser). + +

+ + + +- [Eel](#eel) + - [Intro](#intro) + - [Install](#install) + - [Usage](#usage) + - [Directory Structure](#directory-structure) + - [Starting the app](#starting-the-app) + - [App options](#app-options) + - [Chrome/Chromium flags](#chromechromium-flags) + - [Exposing functions](#exposing-functions) + - [Eello, World!](#eello-world) + - [Return values](#return-values) + - [Callbacks](#callbacks) + - [Synchronous returns](#synchronous-returns) + - [Asynchronous Python](#asynchronous-python) + - [Building distributable binary with PyInstaller](#building-distributable-binary-with-pyinstaller) + - [Microsoft Edge](#microsoft-edge) + + + +## Intro + +There are several options for making GUI apps in Python, but if you want to use HTML/JS (in order to use jQueryUI or Bootstrap, for example) then you generally have to write a lot of boilerplate code to communicate from the Client (Javascript) side to the Server (Python) side. + +The closest Python equivalent to Electron (to my knowledge) is [cefpython](https://github.com/cztomczak/cefpython). It is a bit heavy weight for what I wanted. + +Eel is not as fully-fledged as Electron or cefpython - it is probably not suitable for making full blown applications like Atom - but it is very suitable for making the GUI equivalent of little utility scripts that you use internally in your team. + +For some reason many of the best-in-class number crunching and maths libraries are in Python (Tensorflow, Numpy, Scipy etc) but many of the best visualization libraries are in Javascript (D3, THREE.js etc). Hopefully Eel makes it easy to combine these into simple utility apps for assisting your development. + +Join Eel's users and maintainers on [Discord](https://discord.com/invite/3nqXPFX), if you like. + +## Install + +Install from pypi with `pip`: + +```shell +pip install eel +``` + +To include support for HTML templating, currently using [Jinja2](https://pypi.org/project/Jinja2/#description): + +```shell +pip install eel[jinja2] +``` + +## Usage + +### Directory Structure + +An Eel application will be split into a frontend consisting of various web-technology files (.html, .js, .css) and a backend consisting of various Python scripts. + +All the frontend files should be put in a single directory (they can be further divided into folders inside this if necessary). + +``` +my_python_script.py <-- Python scripts +other_python_module.py +static_web_folder/ <-- Web folder + main_page.html + css/ + style.css + img/ + logo.png +``` + +### Starting the app + +Suppose you put all the frontend files in a directory called `web`, including your start page `main.html`, then the app is started like this; + +```python +import eel +eel.init('web') +eel.start('main.html') +``` + +This will start a webserver on the default settings (http://localhost:8000) and open a browser to http://localhost:8000/main.html. + +If Chrome or Chromium is installed then by default it will open in that in App Mode (with the `--app` cmdline flag), regardless of what the OS's default browser is set to (it is possible to override this behaviour). + +### App options + +Additional options can be passed to `eel.start()` as keyword arguments. + +Some of the options include the mode the app is in (e.g. 'chrome'), the port the app runs on, the host name of the app, and adding additional command line flags. + +As of Eel v0.12.0, the following options are available to `start()`: + - **mode**, a string specifying what browser to use (e.g. `'chrome'`, `'electron'`, `'edge'`, `'custom'`). Can also be `None` or `False` to not open a window. *Default: `'chrome'`* + - **host**, a string specifying what hostname to use for the Bottle server. *Default: `'localhost'`)* + - **port**, an int specifying what port to use for the Bottle server. Use `0` for port to be picked automatically. *Default: `8000`*. + - **block**, a bool saying whether or not the call to `start()` should block the calling thread. *Default: `True`* + - **jinja_templates**, a string specifying a folder to use for Jinja2 templates, e.g. `my_templates`. *Default: `None`* + - **cmdline_args**, a list of strings to pass to the command to start the browser. For example, we might add extra flags for Chrome; ```eel.start('main.html', mode='chrome-app', port=8080, cmdline_args=['--start-fullscreen', '--browser-startup-dialog'])```. *Default: `[]`* + - **size**, a tuple of ints specifying the (width, height) of the main window in pixels *Default: `None`* + - **position**, a tuple of ints specifying the (left, top) of the main window in pixels *Default: `None`* + - **geometry**, a dictionary specifying the size and position for all windows. The keys should be the relative path of the page, and the values should be a dictionary of the form `{'size': (200, 100), 'position': (300, 50)}`. *Default: {}* + - **close_callback**, a lambda or function that is called when a websocket to a window closes (i.e. when the user closes the window). It should take two arguments; a string which is the relative path of the page that just closed, and a list of other websockets that are still open. *Default: `None`* + - **app**, an instance of Bottle which will be used rather than creating a fresh one. This can be used to install middleware on the + instance before starting eel, e.g. for session management, authentication, etc. + + + +### Exposing functions + +In addition to the files in the frontend folder, a Javascript library will be served at `/eel.js`. You should include this in any pages: + +```html + +``` + +Including this library creates an `eel` object which can be used to communicate with the Python side. + +Any functions in the Python code which are decorated with `@eel.expose` like this... + +```python +@eel.expose +def my_python_function(a, b): + print(a, b, a + b) +``` + +...will appear as methods on the `eel` object on the Javascript side, like this... + +```javascript +console.log("Calling Python..."); +eel.my_python_function(1, 2); // This calls the Python function that was decorated +``` + +Similarly, any Javascript functions which are exposed like this... + +```javascript +eel.expose(my_javascript_function); +function my_javascript_function(a, b, c, d) { + if (a < b) { + console.log(c * d); + } +} +``` + +can be called from the Python side like this... + +```python +print('Calling Javascript...') +eel.my_javascript_function(1, 2, 3, 4) # This calls the Javascript function +``` + +The exposed name can also be overridden by passing in a second argument. If your app minifies JavaScript during builds, this may be necessary to ensure that functions can be resolved on the Python side: + +```javascript +eel.expose(someFunction, "my_javascript_function"); +``` + +When passing complex objects as arguments, bear in mind that internally they are converted to JSON and sent down a websocket (a process that potentially loses information). + +### Eello, World! + +> See full example in: [examples/01 - hello_world](https://github.com/ChrisKnott/Eel/tree/master/examples/01%20-%20hello_world) + +Putting this together into a **Hello, World!** example, we have a short HTML page, `web/hello.html`: + +```html + + + + Hello, World! + + + + + + + + Hello, World! + + +``` + +and a short Python script `hello.py`: + +```python +import eel + +# Set web files folder and optionally specify which file types to check for eel.expose() +# *Default allowed_extensions are: ['.js', '.html', '.txt', '.htm', '.xhtml'] +eel.init('web', allowed_extensions=['.js', '.html']) + +@eel.expose # Expose this function to Javascript +def say_hello_py(x): + print('Hello from %s' % x) + +say_hello_py('Python World!') +eel.say_hello_js('Python World!') # Call a Javascript function + +eel.start('hello.html') # Start (this blocks and enters loop) +``` + +If we run the Python script (`python hello.py`), then a browser window will open displaying `hello.html`, and we will see... + +``` +Hello from Python World! +Hello from Javascript World! +``` + +...in the terminal, and... + +``` +Hello from Javascript World! +Hello from Python World! +``` + +...in the browser console (press F12 to open). + +You will notice that in the Python code, the Javascript function is called before the browser window is even started - any early calls like this are queued up and then sent once the websocket has been established. + +### Return values + +While we want to think of our code as comprising a single application, the Python interpreter and the browser window run in separate processes. This can make communicating back and forth between them a bit of a mess, especially if we always had to explicitly _send_ values from one side to the other. + +Eel supports two ways of retrieving _return values_ from the other side of the app, which helps keep the code concise. + +To prevent hanging forever on the Python side, a timeout has been put in place for trying to retrieve values from +the JavaScript side, which defaults to 10000 milliseconds (10 seconds). This can be changed with the `_js_result_timeout` parameter to `eel.init`. There is no corresponding timeout on the JavaScript side. + +#### Callbacks + +When you call an exposed function, you can immediately pass a callback function afterwards. This callback will automatically be called asynchrounously with the return value when the function has finished executing on the other side. + +For example, if we have the following function defined and exposed in Javascript: + +```javascript +eel.expose(js_random); +function js_random() { + return Math.random(); +} +``` + +Then in Python we can retrieve random values from the Javascript side like so: + +```python +def print_num(n): + print('Got this from Javascript:', n) + +# Call Javascript function, and pass explicit callback function +eel.js_random()(print_num) + +# Do the same with an inline lambda as callback +eel.js_random()(lambda n: print('Got this from Javascript:', n)) +``` + +(It works exactly the same the other way around). + +#### Synchronous returns + +In most situations, the calls to the other side are to quickly retrieve some piece of data, such as the state of a widget or contents of an input field. In these cases it is more convenient to just synchronously wait a few milliseconds then continue with your code, rather than breaking the whole thing up into callbacks. + +To synchronously retrieve the return value, simply pass nothing to the second set of brackets. So in Python we would write: + +```python +n = eel.js_random()() # This immediately returns the value +print('Got this from Javascript:', n) +``` + +You can only perform synchronous returns after the browser window has started (after calling `eel.start()`), otherwise obviously the call with hang. + +In Javascript, the language doesn't allow us to block while we wait for a callback, except by using `await` from inside an `async` function. So the equivalent code from the Javascript side would be: + +```javascript +async function run() { + // Inside a function marked 'async' we can use the 'await' keyword. + + let n = await eel.py_random()(); // Must prefix call with 'await', otherwise it's the same syntax + console.log("Got this from Python: " + n); +} + +run(); +``` + +## Asynchronous Python + +Eel is built on Bottle and Gevent, which provide an asynchronous event loop similar to Javascript. A lot of Python's standard library implicitly assumes there is a single execution thread - to deal with this, Gevent can "[monkey patch](https://en.wikipedia.org/wiki/Monkey_patch)" many of the standard modules such as `time`. ~~This monkey patching is done automatically when you call `import eel`~~. If you need monkey patching you should `import gevent.monkey` and call `gevent.monkey.patch_all()` _before_ you `import eel`. Monkey patching can interfere with things like debuggers so should be avoided unless necessary. + +For most cases you should be fine by avoiding using `time.sleep()` and instead using the versions provided by `gevent`. For convenience, the two most commonly needed gevent methods, `sleep()` and `spawn()` are provided directly from Eel (to save importing `time` and/or `gevent` as well). + +In this example... + +```python +import eel +eel.init('web') + +def my_other_thread(): + while True: + print("I'm a thread") + eel.sleep(1.0) # Use eel.sleep(), not time.sleep() + +eel.spawn(my_other_thread) + +eel.start('main.html', block=False) # Don't block on this call + +while True: + print("I'm a main loop") + eel.sleep(1.0) # Use eel.sleep(), not time.sleep() +``` + +...we would then have three "threads" (greenlets) running; + +1. Eel's internal thread for serving the web folder +2. The `my_other_thread` method, repeatedly printing **"I'm a thread"** +3. The main Python thread, which would be stuck in the final `while` loop, repeatedly printing **"I'm a main loop"** + +## Building distributable binary with PyInstaller + +If you want to package your app into a program that can be run on a computer without a Python interpreter installed, you should use **PyInstaller**. + +1. Configure a virtualenv with desired Python version and minimum necessary Python packages +2. Install PyInstaller `pip install PyInstaller` +3. In your app's folder, run `python -m eel [your_main_script] [your_web_folder]` (for example, you might run `python -m eel hello.py web`) +4. This will create a new folder `dist/` +5. Valid PyInstaller flags can be passed through, such as excluding modules with the flag: `--exclude module_name`. For example, you might run `python -m eel file_access.py web --exclude win32com --exclude numpy --exclude cryptography` +6. When happy that your app is working correctly, add `--onefile --noconsole` flags to build a single executable file + +Consult the [documentation for PyInstaller](http://PyInstaller.readthedocs.io/en/stable/) for more options. + +## Microsoft Edge + +For Windows 10 users, Microsoft Edge (`eel.start(.., mode='edge')`) is installed by default and a useful fallback if a preferred browser is not installed. See the examples: + +- A Hello World example using Microsoft Edge: [examples/01 - hello_world-Edge/](https://github.com/ChrisKnott/Eel/tree/master/examples/01%20-%20hello_world-Edge) +- Example implementing browser-fallbacks: [examples/07 - CreateReactApp/eel_CRA.py](https://github.com/ChrisKnott/Eel/tree/master/examples/07%20-%20CreateReactApp/eel_CRA.py) + + diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/INSTALLER b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/INSTALLER similarity index 100% rename from IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/INSTALLER rename to IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/INSTALLER diff --git a/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/LICENSE.rst b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/LICENSE.rst new file mode 100644 index 00000000..9d227a0c --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/METADATA b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/METADATA new file mode 100644 index 00000000..ef44e2b3 --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/METADATA @@ -0,0 +1,100 @@ +Metadata-Version: 2.1 +Name: MarkupSafe +Version: 2.0.1 +Summary: Safely add untrusted strings to HTML/XML markup. +Home-page: https://palletsprojects.com/p/markupsafe/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +Maintainer: Pallets +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Documentation, https://markupsafe.palletsprojects.com/ +Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/ +Project-URL: Source Code, https://github.com/pallets/markupsafe/ +Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/ +Project-URL: Twitter, https://twitter.com/PalletsTeam +Project-URL: Chat, https://discord.gg/pallets +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Text Processing :: Markup :: HTML +Requires-Python: >=3.6 +Description-Content-Type: text/x-rst + +MarkupSafe +========== + +MarkupSafe implements a text object that escapes characters so it is +safe to use in HTML and XML. Characters that have special meanings are +replaced so that they display as the actual characters. This mitigates +injection attacks, meaning untrusted user input can safely be displayed +on a page. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U MarkupSafe + +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + +Examples +-------- + +.. code-block:: pycon + + >>> from markupsafe import Markup, escape + + >>> # escape replaces special characters and wraps in Markup + >>> escape("") + Markup('<script>alert(document.cookie);</script>') + + >>> # wrap in Markup to mark text "safe" and prevent escaping + >>> Markup("Hello") + Markup('hello') + + >>> escape(Markup("Hello")) + Markup('hello') + + >>> # Markup is a str subclass + >>> # methods and operators escape their arguments + >>> template = Markup("Hello {name}") + >>> template.format(name='"World"') + Markup('Hello "World"') + + +Donate +------ + +The Pallets organization develops and supports MarkupSafe and other +popular packages. In order to grow the community of contributors and +users, and allow the maintainers to devote more time to the projects, +`please donate today`_. + +.. _please donate today: https://palletsprojects.com/donate + + +Links +----- + +- Documentation: https://markupsafe.palletsprojects.com/ +- Changes: https://markupsafe.palletsprojects.com/changes/ +- PyPI Releases: https://pypi.org/project/MarkupSafe/ +- Source Code: https://github.com/pallets/markupsafe/ +- Issue Tracker: https://github.com/pallets/markupsafe/issues/ +- Website: https://palletsprojects.com/p/markupsafe/ +- Twitter: https://twitter.com/PalletsTeam +- Chat: https://discord.gg/pallets + + diff --git a/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/RECORD b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/RECORD new file mode 100644 index 00000000..c5acda27 --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/RECORD @@ -0,0 +1,13 @@ +MarkupSafe-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +MarkupSafe-2.0.1.dist-info/LICENSE.rst,sha256=RjHsDbX9kKVH4zaBcmTGeYIUM4FG-KyUtKV_lu6MnsQ,1503 +MarkupSafe-2.0.1.dist-info/METADATA,sha256=FmPpxBdaqCCjF-XKqoxeEzqAzhetQnrkkSsd3V3X-Jc,3211 +MarkupSafe-2.0.1.dist-info/RECORD,, +MarkupSafe-2.0.1.dist-info/WHEEL,sha256=jr7ubY0Lkz_yXH9FfFe9PTtLhGOsf62dZkNvTYrJINE,100 +MarkupSafe-2.0.1.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +markupsafe/__init__.py,sha256=s08KbuFRV3zh4Wh7xjsIphXgp1xf0EUB79wlPj-4scc,9211 +markupsafe/__pycache__/__init__.cpython-39.pyc,, +markupsafe/__pycache__/_native.cpython-39.pyc,, +markupsafe/_native.py,sha256=JMXegJtk1ZcnRKrgyCA-CEXmRnOpaIXLyDAM98GbshY,2061 +markupsafe/_speedups.cp39-win_amd64.pyd,sha256=hPTsANj9bt7hLYxWLuZcC7E3-EnJQ4GlvIf9Vx0p1p0,16384 +markupsafe/_speedups.pyi,sha256=f5QtwIOP0eLrxh2v5p6SmaYmlcHIGIfmz0DovaqL0OU,238 +markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL new file mode 100644 index 00000000..d1267fcc --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.36.2) +Root-Is-Purelib: false +Tag: cp39-cp39-win_amd64 + diff --git a/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/top_level.txt b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/top_level.txt new file mode 100644 index 00000000..75bf7292 --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/IKEA_scraper/.venv/Lib/site-packages/__pycache__/bottle.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/__pycache__/bottle.cpython-39.pyc index 1e8b7acbe523aa31dd46e1ac2c4ed80416e3c235..1d8dfb851f8f83ef85cb688bd39388f3b28fcaaf 100644 GIT binary patch delta 62 zcmezKo}=Ld2X`VbFBbz4cwBba$bCmp*3HE#CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; Q)v-yaO^9)u5Yr!30F&Jm?f?J) delta 61 zcmZqp!13oj2X`VbFBbz4q!!w56Bs>Q&1UGl$e*2pBq!0oROcO6O);pn%K-D P)XpNrxSd6a>5nP^a;_8B diff --git a/IKEA_scraper/.venv/Lib/site-packages/__pycache__/pyparsing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/__pycache__/pyparsing.cpython-39.pyc index e03040ef7f53d1291a81879fcdbc2b70a331c1c9..23225a0dcea01989e463a156bf6c6a4921271800 100644 GIT binary patch delta 69 zcmex&m9Oa*-<@6Hu8^lAjk-l$e*2pBodLoROcO6XWUa W>e%cj)$S+72*ga={iK*TOaK4`CKfvY delta 65 zcmZp=#`o_kA9o@zFBbz4q!!w57R5 SY7dfP1Y)M`K~l^cCIA4aWECR- diff --git a/IKEA_scraper/.venv/Lib/site-packages/__pycache__/whichcraft.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/__pycache__/whichcraft.cpython-39.pyc index d687796ce29808c0ccb63cece636eff6dbd01e6b..ef476df0248d12a53fb8cea9ec78dec08c3eb6fe 100644 GIT binary patch delta 55 zcmeC+@8Rc8I&R@nH$o{25Q#VV$ta7S|k(ZZ?0SNdmJ51!x=ZbK#iV3L9D9O*8*pLJOkX{M6 delta 29 jcmaFH_=u4^k(ZZ?0SE%)?I&{QvxT@=#S~OdY)JwDYIO(c diff --git a/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket-0.2.9-py3.9.egg-info/PKG-INFO b/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket-0.2.9-py3.9.egg-info/PKG-INFO index cd0f0ddb..02edb3af 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket-0.2.9-py3.9.egg-info/PKG-INFO +++ b/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket-0.2.9-py3.9.egg-info/PKG-INFO @@ -1,4 +1,4 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: bottle-websocket Version: 0.2.9 Summary: WebSockets for bottle @@ -6,7 +6,6 @@ Home-page: https://github.com/zeekay/bottle-websocket Author: Zach Kelling Author-email: zk@monoid.io License: MIT -Description: Easy websockets for bottle. Keywords: bottle websockets Platform: UNKNOWN Classifier: Environment :: Web Environment @@ -16,3 +15,6 @@ Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content Classifier: Topic :: Software Development :: Libraries :: Python Modules + +Easy websockets for bottle. + diff --git a/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket/__pycache__/__init__.cpython-39.pyc index a6ef1d3f4574275621b62e94b425411969fe463d..695197874673ec7a5be34c005c9aca52c8d29f7f 100644 GIT binary patch delta 39 ucmX@ibew6z71>A^tC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~OZ^HmK@DH#6 delta 35 qcmX@kbeL(v70J*PtC)hyn4-kIl>FS7;^d6{{G6D~?9{}GAHx6wo(|Ih diff --git a/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket/__pycache__/plugin.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket/__pycache__/plugin.cpython-39.pyc index 2dfb77f02f1382e39af8d4bccff48a33362ff046..f3aa39a0ffa6b614ba47051e9bbcb8f02f8ece3e 100644 GIT binary patch delta 41 wcmeBYnar|5fKfKw#VRJCGNU9vFQzClFC{-WCOA1GKR+kN)7#Z?vL@p*03g^7b^rhX delta 37 scmbQt($BI%fKf6y#VV$tGNvdoFC{-WrZ_nxKR+iXGdneLvM%E@0PnsHnE(I) diff --git a/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket/__pycache__/server.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bottle_websocket/__pycache__/server.cpython-39.pyc index c4058ece9ab91ebff42f1edae35985d1a8ebc155..d1b105e362503ed4c7b15e28e1dfce19322eaf95 100644 GIT binary patch delta 42 xcmdnazMFl68`_ instead. Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers @@ -19,3 +18,6 @@ Classifier: Topic :: Text Processing :: Markup :: HTML Classifier: Topic :: Text Processing :: Markup :: XML Classifier: Topic :: Text Processing :: Markup :: SGML Classifier: Topic :: Software Development :: Libraries :: Python Modules + +Use `beautifulsoup4 `_ instead. + diff --git a/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/__init__.cpython-39.pyc index d965127923a279a5a1d7583f9fc0e7d1379a9cf9..f0b85e05dd880780e9deea3147f2b0f6a1c09ad4 100644 GIT binary patch delta 57 zcmeC&%GkS=kvox>mx}=iG%q`BML^38>5{$UBZW9au-Hs8h delta 53 zcmeC(%GkM;kvox>mx}=i^5X3`a%-|ndZbvz6ja6(CFZ5%=f)H#XXNMS#AIftCTb8(7f!hk$aA^te1;bOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;Sa%FLeu3pEp( delta 53 zcmX@UmgVqT7Vbn|UM>b8$cwk%$UR3{(k;a*rl2yWC^0W3KR2d0IU_$mCnhsHHF5J1 HW#-QS!K@OE diff --git a/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/diagnose.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/diagnose.cpython-39.pyc index 1812736ead7c82e38c29cd7585a3dc4b3706c1f8..9ecdbcf047ccbe2bc719fdc219fff65d76085d09 100644 GIT binary patch delta 55 zcmZp3>T=>v0|2tI5kLR{ delta 51 zcmeBjYIEXFx E0dLO`GXMYp diff --git a/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/element.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/element.cpython-39.pyc index 16bc6796f5610053c71e78a129b54ea19ab272ff..9c92b03dceb9a2ce62a7318d69f1ac7393dba707 100644 GIT binary patch delta 57 zcmbREpLyzkX6{5@UM>b8(7f!hk$VfXthb9*Oh9EuNq$~TQDR<7er`-~az=iBPK>9w MtK;Sy%sYPr02q`MhX4Qo delta 53 zcmbRGpLybcX6{5@UM>b8$cwk%$i0PG(mlm0rl2yWC^0W3KR2d0IU_$mCnhsHHF5JD H=AFL*&My;s diff --git a/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/formatter.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/formatter.cpython-39.pyc index e2c095daddc0dbf2b360381f2ae717ee649fc7fb..f68e6b1f5f8df229373eee35b117a63ab531a656 100644 GIT binary patch delta 55 zcmbPkFx!ATk(ZZ?0SGiNJ8b0kXP5PLv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT+F^i006H35ibA$ delta 51 zcmbPjFx`MVk(ZZ?0SNNq?Kg7!vrBrWSj7}n#uO#yrR3+v6enlo=jX&^W~U}@E@xjN F003-&5F!8o diff --git a/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/testing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bs4/__pycache__/testing.cpython-39.pyc index e82f2fb1062633100404fc29d5c92fcd18a9cf4b..746e173c4f6937d9887e8c7bb3742d8b9ac3cd6d 100644 GIT binary patch delta 57 zcmZ2;i)q6xChkODUM>b8(7f!hk^44}thb9*Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;VXJh}@28b}lB delta 53 zcmdmRi)qa*ChkODUM>b8$cwk%$bFkf(mlm0rl2yWC^0W3KR2d0IU_$mCnhsHHE}aD HukHc>%YG5w diff --git a/IKEA_scraper/.venv/Lib/site-packages/bs4/builder/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bs4/builder/__pycache__/__init__.cpython-39.pyc index a87d54a37fe0c19bf15dcf630109d24bfba6b5f6..2c13aac076a8c32e454d66dbc3a59ea5c4094509 100644 GIT binary patch delta 55 zcmZ2pvATjgk(ZZ?0SGiNJ8b06V3rMWv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+`~NE0szFw&c J`7-M_Edc326D0ru delta 51 zcmX?`cruYYk(ZZ?0SNNq?Kg6-XO#?0v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e4X{1 F7676W5*Ppg diff --git a/IKEA_scraper/.venv/Lib/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-39.pyc index 7a56c6390d48e1acc56b1f40b23d2341feb623b9..17e415833ceef9ff7f84383a2245e3b814543ca2 100644 GIT binary patch delta 55 zcmZom>q_HJJq JKF4HX007LI5#s;= delta 51 zcmeB5YfIx!&mFw&c JnVDHw2>{C;5d8oE delta 51 zcmbQ`HO-4Vk(ZZ?0SNNq?Kg7YXOi?yv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%+4&V F1OSDc5AXm0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/certifi/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/certifi/__pycache__/__init__.cpython-39.pyc index 08cfd3a8b63f42311adf877de47e0b236b90af9f..76977a0e9ec05a22fd691949e625a4387c5c24be 100644 GIT binary patch delta 52 zcmey(_@9wGk(ZZ?0SIg_J51#6lMQgOiV3L9D9O)@DN4*s$Fw&c J`8eZxCIHqt5=j66 delta 51 zcmeyx@r{E!k(ZZ?0SKDo?Kg5SW|Z_uv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e424R F69AB=5j_9^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/__init__.cpython-39.pyc index 153a873d7e08fedbc87420d76deb5f0896aa07ab..8dfe995f3069554c1465d4bc969b0d965cc3b933 100644 GIT binary patch delta 54 zcmey#{Fj+Kk(ZZ?0SMeKJ8a}`Wt8=Gv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe Iypk~h0KZ5Pk^lez delta 50 zcmey%{F9kGk(ZZ?0SJ-`?Kg6_GD>=;Sj7}n#uO#yrR3+v6enlo=jX&^W~U}jUdtE& E0C$!UZU6uP diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/api.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/api.cpython-39.pyc index 99735c4d3d4423775c0cc4dc98334564a79e0cf7..6c9eae69c7a3f0ec17982f9dd25015b6dd89e321 100644 GIT binary patch delta 57 zcmZ3}!?dA?i93;(mx}=i+%7w8DF@38>5{$2(sn delta 53 zcmdnc!?dP{i93;(mx}=ik_zoNa;Gp#x};de6ja6(CFZ5%=f)H#XXNMS#AIftCT{Lw HT+#vnpGy&& diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/backend_ctypes.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/backend_ctypes.cpython-39.pyc index f29197c03e91b9fbe7c48dde8757dd78f7caceac..6e61757f2bda4520c824f0726cbd33d895291f2f 100644 GIT binary patch delta 57 zcmeC&!PL8hi93;(mx}=i+%7w85{$`xNH delta 53 zcmeC(!PL2fi93;(mx}=ik_zoNa)&cY`lndM6ja6(CFZ5%=f)H#XXNMS#AIftCT^~0 H?3)Duq2&>t diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/cffi_opcode.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/cffi_opcode.cpython-39.pyc index 06025c916ccc7501f0783c309611bbb4eae0930b..e2c60193b4f1913d454070512925b2fe85e928c8 100644 GIT binary patch delta 55 zcmZow?NsGXk(ZZ?0SMeKJ8a~B%`6+>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnV-d<835O^5oiDa delta 51 zcmaFFcaM)dk(ZZ?0SJ-`?Kg72W|s6xv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EX?B1 F3;>O=5JUg~ diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/cparser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/cparser.cpython-39.pyc index bcf5cd29ce415745e75a7586f7148f1b3e960101..7abdf69de6cabd1917f3a5f43f280e2606790d0e 100644 GIT binary patch delta 57 zcmbQclX2lrM(#vjUM>b8aJ%fVk^3BztdEOTOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;TROsgXS2Tc>N delta 53 zcmZ3ulX31&M(#vjUM>b8NGi17$bF7U(j&zxrl2yWC^0W3KR2d0IU_$mCnhsHHF5Jd Hrqz)Ex^NPU diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/error.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/error.cpython-39.pyc index cc5333b1ec97d0ca21354a98d758fa38a6173098..f3f040bbdea0160e882be73c4bba6e0ed294a659 100644 GIT binary patch delta 54 zcmaFF{fwJCk(ZZ?0SMeKJ51z$E9>QA6%$aIQIek*Q!#Q*>R delta 50 zcmaFH{fL`8k(ZZ?0SJ-`?I&`-m2^w7iYcg!DN4*s$b8aJ%fVkz0jX*2~2zCZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4^2^G#0x;Jgw; delta 53 zcmZ2Fi*eyBM(#vjUM>b8NGi17$gRRG>6T&@Q&1UGl$e*2pBq!0oROcO6O);pnz-4A H`KBiTmvRvw diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/pkgconfig.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/pkgconfig.cpython-39.pyc index e96005a6de01f2e78237b5bb913c1a3541a7acf8..0dc91d45f309419d1145ef387257144a8e778f2e 100644 GIT binary patch delta 55 zcmbQLF;jy(k(ZZ?0SMeKJ8a~RW0LiAv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+{83l5CE|~5j_9^ delta 51 zcmbQKF;#;*k(ZZ?0SJ-`?Kg7AF-dx*Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@ZeyA( F2mosH5E%df diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/recompiler.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/recompiler.cpython-39.pyc index b937b6c9c596a1c5dada24c2fcfd764d688fe960..378fb6510dc71362f7d1aeadfb93b4cbec19c3f4 100644 GIT binary patch delta 57 zcmccfj_JWWChkODUM>b8aJ%fVk$WAJtiOv@Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;TNOkG<5H2D;k delta 53 zcmaFxj_J-jChkODUM>b8NGi17$i0q9(mTZ}rl2yWC^0W3KR2d0IU_$mCnhsHHF5Jb Hrmigj5{$mx}=i+%7w8bRMenav*n^uZC` delta 53 zcmeBQ!q~lpkvox>mx}=ik_zoNazA8}^hvRbDX5GoO3X{i&y6Wg&dATtiOI}PP29}M H%;paOsLv3& diff --git a/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/verifier.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/cffi/__pycache__/verifier.cpython-39.pyc index b19dc96f6e72e93f962825157bf1395820525731..c006306b82e04f90d762fb2f015b5cb803fdee06 100644 GIT binary patch delta 55 zcmccX@z8@ik(ZZ?0SMeKJ8a~>!YJ$OViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3GaF5&-Wn64?L% delta 51 zcmaFpao2-8k(ZZ?0SJ-`?Kg5?VU+Ytv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{D(1B F2>_$j5w!pS diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer-2.0.4.dist-info/RECORD b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer-2.0.4.dist-info/RECORD index fd0b5905..4bc537c3 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer-2.0.4.dist-info/RECORD +++ b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer-2.0.4.dist-info/RECORD @@ -1,4 +1,4 @@ -../../Scripts/normalizer.exe,sha256=63XTo-ZCPFkdVNSh7OgEV_EiUDlwQbEO4iTjK_czj_0,106391 +../../Scripts/normalizer.exe,sha256=Tb318KAuAZX3JDK2YH_V8XoRI9mah1OfwjHG0lkxy0k,106395 charset_normalizer-2.0.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 charset_normalizer-2.0.4.dist-info/LICENSE,sha256=6zGgxaT7Cbik4yBV0lweX5w1iidS_vPNcgIT0cz-4kE,1070 charset_normalizer-2.0.4.dist-info/METADATA,sha256=iGaSYKAbW7dltLfO_sIm347XsC5kqKiFrvR3IHolDio,11710 diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/__init__.cpython-39.pyc index 6a5659d6e1144a6dd26c668964de0730f1935b7f..7b2681adcad93b7f494e1f9511ce0fdd376f452b 100644 GIT binary patch delta 54 zcmcc4cbktpk(ZZ?0SIg_J8a~>%qAP{ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`8!(z0K&8q9{>OV delta 50 zcmcc3cb$(rk(ZZ?0SKDo?Kg5?W|It0v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{F^NS E0Da^U6951J diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/api.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/api.cpython-39.pyc index ae3e39f8873608b402c1562c16d3775b9fb6ea8b..9b6d3c8363bc97522e0606eccaab890ccd27c9f9 100644 GIT binary patch delta 55 zcmdn!z15pLk(ZZ?0SIg_J8a~(6_5>cv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoG1_=3INA=5mf*H delta 51 zcmdn$z0sRHk(ZZ?0SKDo?Kg7U3P=W}Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@P8A3c F1ptF65J><4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/cd.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/cd.cpython-39.pyc index c4a04ea3e05ca9aa9ceae279eda0eff376c2053b..23f319a431bcc1da07997231725b8d664ecefc22 100644 GIT binary patch delta 109 zcmaE6{>q#?k(ZZ?0SIg_J8a}GVv!AXv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ zJdI@)i#SVCX1eJuP7s-qU7TEei#55x($rvbIH$fyR(?ie5?H{*@)lcaX>xpa(dJp4 GK0*MnAteX^ delta 105 zcmaE5{>+>^k(ZZ?0SKDo?Kg54u}B7{Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2f0? zMVvD!Gu<>JyEwV{7He{WrK!O!7Ldr~Xij|*Am7CD7F%j*a(s5tE!M33jKrkP^EiEk E04^CM1ONa4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/constant.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/constant.cpython-39.pyc index c0ae3fb502a8dd4003e57e42b3ee3854f3291f0c..0b1f7ee4ec873841a9af0a24d7a3bf0be30dd949 100644 GIT binary patch delta 80 zcmbQ5Iy03!k(ZZ?0SIg_J8a}O&=6rO$}fpGG`_`Fl9*hQS$vBnHz|3tzlM}-w2M_t iKxIZreqKybVqQvqZcK1;Mt*)yjHkD&Nl_BR@YUCNn!VadVr7Fc$!QZW$B+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/legacy.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/legacy.cpython-39.pyc index 72ff0689fae0cab0940e5d73dee442f078533a50..651b515e7a2f59c325f6b08bf280cb0e10fe2642 100644 GIT binary patch delta 55 zcmZ3?y_}mnk(ZZ?0SIg_J8a}GV3Cb5VZgR delta 51 zcmZ3^y_lOjk(ZZ?0SKDo?Kg54utk(ZZ?0SIg_J1pd8kqvdRiV3L9D9O)@DN4*s$Fw&c Jc?;`zEdbkd62t%i delta 51 zcmZ3VxH^$Lk(ZZ?0SKDo?Kg5yV3iC_v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yo2?- F766rZ5x4*V diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/utils.cpython-39.pyc index fc8df2bbe5b7c4cd5c8ba00f24e472c52d9898cf..0aa430d56c805699581d322d998e4a25f051dbab 100644 GIT binary patch delta 158 zcmdmBvBiQrk(ZZ?0SIg_J8a~3VwH_>v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ zoW>f%8+wbgv?MLw&@4VF70%2_y~PR=HNV9MqKu6oTnmT-W21PW0 z4UOU~ElG>Fh%e4ezr_k>-U5pl8^tH3LYRhTASPJS{1zKXjj<7gHZ+5)$bl*b>dQ&p hEG^8$B$NeoMNu}0kOmT(j74RW4{``^b`t%>1^@*xH=+Ol diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/version.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/__pycache__/version.cpython-39.pyc index d7a5f41ee739b18d808adeafea83a591daf37b66..439ba4cb52c191529a098b7a9576e270742ed263 100644 GIT binary patch delta 52 zcmZo;>SE$fFw$` Id583R0M!Z-l>h($ delta 50 zcmaED@!Wztk(ZZ?0SKDo?Kg5yk(P{0v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5yhnOH E0FL$%i2wiq diff --git a/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-39.pyc index 5c9ab87e506834de55e772771a5ce2eaaa4bd63b..2c99c4760d0102c78daf52c612db8c0e644c4c88 100644 GIT binary patch delta 52 zcmdnSxQmfHk(ZZ?0SIg_J51!Zk&Sn;iV3L9D9O)@DN4*s$Fw&c Jc^8Y45CGb=5#s;= delta 51 zcmaE$dqt^Q>=0A{ delta 38 ucmeyu_knN2Tt-Qc6swqm%9x_Wyp;UhnBwG&{QR7l%t@uqz`uh diff --git a/IKEA_scraper/.venv/Lib/site-packages/eel/__pycache__/chrome.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/eel/__pycache__/chrome.cpython-39.pyc index f033b1401be4cb54db1268315f03ab287ccb3ebe..1fe24df059f40855302869a9d476b0b7d35c414c 100644 GIT binary patch delta 42 xcmaDN@8i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)<~+vRi~vle4}$;z delta 38 tcmX@hc9LyFD5IoDid9TOWlT|GUP^v$OmT8Xetu3&W_D`g<|4-1i~tw(4yFJA diff --git a/IKEA_scraper/.venv/Lib/site-packages/future-0.18.2-py3.9.egg-info/PKG-INFO b/IKEA_scraper/.venv/Lib/site-packages/future-0.18.2-py3.9.egg-info/PKG-INFO index fb469499..b6f83573 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/future-0.18.2-py3.9.egg-info/PKG-INFO +++ b/IKEA_scraper/.venv/Lib/site-packages/future-0.18.2-py3.9.egg-info/PKG-INFO @@ -1,4 +1,4 @@ -Metadata-Version: 1.2 +Metadata-Version: 2.1 Name: future Version: 0.18.2 Summary: Clean single-source support for Python 3 and 2 @@ -6,88 +6,6 @@ Home-page: https://python-future.org Author: Ed Schofield Author-email: ed@pythoncharmers.com License: MIT -Description: - future: Easy, safe support for Python 2/3 compatibility - ======================================================= - - ``future`` is the missing compatibility layer between Python 2 and Python - 3. It allows you to use a single, clean Python 3.x-compatible codebase to - support both Python 2 and Python 3 with minimal overhead. - - It is designed to be used as follows:: - - from __future__ import (absolute_import, division, - print_function, unicode_literals) - from builtins import ( - bytes, dict, int, list, object, range, str, - ascii, chr, hex, input, next, oct, open, - pow, round, super, - filter, map, zip) - - followed by predominantly standard, idiomatic Python 3 code that then runs - similarly on Python 2.6/2.7 and Python 3.3+. - - The imports have no effect on Python 3. On Python 2, they shadow the - corresponding builtins, which normally have different semantics on Python 3 - versus 2, to provide their Python 3 semantics. - - - Standard library reorganization - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - ``future`` supports the standard library reorganization (PEP 3108) through the - following Py3 interfaces: - - >>> # Top-level packages with Py3 names provided on Py2: - >>> import html.parser - >>> import queue - >>> import tkinter.dialog - >>> import xmlrpc.client - >>> # etc. - - >>> # Aliases provided for extensions to existing Py2 module names: - >>> from future.standard_library import install_aliases - >>> install_aliases() - - >>> from collections import Counter, OrderedDict # backported to Py2.6 - >>> from collections import UserDict, UserList, UserString - >>> import urllib.request - >>> from itertools import filterfalse, zip_longest - >>> from subprocess import getoutput, getstatusoutput - - - Automatic conversion - -------------------- - - An included script called `futurize - `_ aids in converting - code (from either Python 2 or Python 3) to code compatible with both - platforms. It is similar to ``python-modernize`` but goes further in - providing Python 3 compatibility through the use of the backported types - and builtin functions in ``future``. - - - Documentation - ------------- - - See: http://python-future.org - - - Credits - ------- - - :Author: Ed Schofield, Jordan M. Adler, et al - :Sponsor: Python Charmers Pty Ltd, Australia, and Python Charmers Pte - Ltd, Singapore. http://pythoncharmers.com - :Others: See docs/credits.rst or http://python-future.org/credits.html - - - Licensing - --------- - Copyright 2013-2019 Python Charmers Pty Ltd, Australia. - The software is distributed under an MIT licence. See LICENSE.txt. - - Keywords: future past python3 migration futurize backport six 2to3 modernize pasteurize 3to2 Platform: UNKNOWN Classifier: Programming Language :: Python @@ -105,3 +23,88 @@ Classifier: License :: OSI Approved :: MIT License Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.* +License-File: LICENSE.txt + + +future: Easy, safe support for Python 2/3 compatibility +======================================================= + +``future`` is the missing compatibility layer between Python 2 and Python +3. It allows you to use a single, clean Python 3.x-compatible codebase to +support both Python 2 and Python 3 with minimal overhead. + +It is designed to be used as follows:: + + from __future__ import (absolute_import, division, + print_function, unicode_literals) + from builtins import ( + bytes, dict, int, list, object, range, str, + ascii, chr, hex, input, next, oct, open, + pow, round, super, + filter, map, zip) + +followed by predominantly standard, idiomatic Python 3 code that then runs +similarly on Python 2.6/2.7 and Python 3.3+. + +The imports have no effect on Python 3. On Python 2, they shadow the +corresponding builtins, which normally have different semantics on Python 3 +versus 2, to provide their Python 3 semantics. + + +Standard library reorganization +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``future`` supports the standard library reorganization (PEP 3108) through the +following Py3 interfaces: + + >>> # Top-level packages with Py3 names provided on Py2: + >>> import html.parser + >>> import queue + >>> import tkinter.dialog + >>> import xmlrpc.client + >>> # etc. + + >>> # Aliases provided for extensions to existing Py2 module names: + >>> from future.standard_library import install_aliases + >>> install_aliases() + + >>> from collections import Counter, OrderedDict # backported to Py2.6 + >>> from collections import UserDict, UserList, UserString + >>> import urllib.request + >>> from itertools import filterfalse, zip_longest + >>> from subprocess import getoutput, getstatusoutput + + +Automatic conversion +-------------------- + +An included script called `futurize +`_ aids in converting +code (from either Python 2 or Python 3) to code compatible with both +platforms. It is similar to ``python-modernize`` but goes further in +providing Python 3 compatibility through the use of the backported types +and builtin functions in ``future``. + + +Documentation +------------- + +See: http://python-future.org + + +Credits +------- + +:Author: Ed Schofield, Jordan M. Adler, et al +:Sponsor: Python Charmers Pty Ltd, Australia, and Python Charmers Pte + Ltd, Singapore. http://pythoncharmers.com +:Others: See docs/credits.rst or http://python-future.org/credits.html + + +Licensing +--------- +Copyright 2013-2019 Python Charmers Pty Ltd, Australia. +The software is distributed under an MIT licence. See LICENSE.txt. + + + diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/__pycache__/__init__.cpython-39.pyc index ae83888c702ec0fc583cdab180bdba7f6ef278bf..8d0d0cbc90d2c9653d932227fd83feacfe8ab7f1 100644 GIT binary patch delta 41 wcmX>gaYSOnX>M767ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp$xpar08*U~_y7O^ delta 37 scmX>iaX@0jX>LjH6swqm%9x_Wyp;UhnBwG&{QR7l%V!Z diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/__pycache__/_markupbase.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/__pycache__/_markupbase.cpython-39.pyc index 5142f8cd34bbe8839d551cf8f163473abbfee2d0..b486d7d9132d8c11e01b719d164d0d2ad5a4969e 100644 GIT binary patch delta 42 xcmez3`NMO=Tu#{-7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&D%Kbqyc>z5R3o- delta 38 tcmez2`Nea?Tu#Y|6swqm%9x_Wyp;UhnBwG&{QR7l%9wtK;Tq)`Z;va#RqJ delta 40 vcmdnr$h^Ced4m(HWN3<2OhIK#QDR<7er`;0az=iBPE2NYYU1X2)`Z;vIxr8k diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/__pycache__/misc.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/__pycache__/misc.cpython-39.pyc index 88a7c8d6d9f71bb5cd91f2ca67238999121d352d..73879ca7c3cb74226c7666989e72b188949d3a34 100644 GIT binary patch delta 44 zcmaF(fbr=A#to5dvY{?kF#(ksCHZ+VMTvPS`MEK{$r<_iIWeBzu8y0F*xqLX0HHS$ A00000 delta 40 wcmaF*fbro2#to5dl7T5!F$I+|MTvPS`MEL0$r<_iIWd{psfnA**xqLX0A#BXBLDyZ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/__pycache__/socket.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/__pycache__/socket.cpython-39.pyc index 8c081281eb177bd68ce585bfd66df07dbd6d2afe..55381cc8cdef19e7ec3a7a9dea47dea66c37eb2e 100644 GIT binary patch delta 42 ycmX?-e4%A#mJQ3qWwTwZVgf2NO7in!iW2iu@^fQ?lQZ)3b7DNbT^*bEi*MgA&Zw>k E00zkuQUCw| delta 44 zcmaF$k>%M(mJQ3qCDT)^VhSo_iW2iu@^fQ~lQZ)3b7C^HQxlsHi*G+H&Zw>k0K_&D Ac>n+a diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/_parseaddr.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/_parseaddr.cpython-39.pyc index f68565ca647dc4b5239180e4ed79c8c4947fb305..e1c0d2a64f7abf88a9a912eb89a8bdf406393580 100644 GIT binary patch delta 42 xcmZ3Ov@~hMKW5oP7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&EhOvx&U=b53&FN delta 38 tcmZ3Qv@mJIKW53;6swqm%9x_Wyp;UhnBwG&{QR7l%*;hheM^4@v+4 delta 38 tcmdm}w^nb%PbSI86swqm%9x_Wyp;UhnBwG&{QR7l%Px# diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/headerregistry.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/headerregistry.cpython-39.pyc index 0e4960abc6ebb86d64290f6ee5f62083278fc2e5..e86450decc63e9dfbd32349722d14c0623c935c5 100644 GIT binary patch delta 44 zcmX@Ll=0kB#tr{CWK&(NVgf2NO7in!iW2iu@^fQ?lQZ)3b7DNbT^%=zb8hwo0G_!K AUjP6A delta 40 wcmX@Nl=0M3#tr{CBokAtVhSo_iW2iu@^fQ~lQZ)3b7C^HQxi8!b8hwo0Ab+}f&c&j diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/iterators.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/iterators.cpython-39.pyc index e389cb678c6cefbb9c37426e0330343b5f15bb5a..0b2957787a9aaa85f67b3993b225f482c084fef4 100644 GIT binary patch delta 42 xcmew_&@8y2pGh{s#VRJCGNU9vFQzClFC{-WCOA1GKR+kN)7#Z?^9rWxtN>X|5DowU delta 38 tcmZn`{4cPfpGh(%#VV$tGNvdoFC{-WrZ_nxKR+iXGdneL^BSh>tN14$ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/message.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/message.cpython-39.pyc index 2ece0339cae474134a53e92f0b62a3fd9ef49b9d..b0f9881004376c880e38ddce56914049778e135f 100644 GIT binary patch delta 44 zcmcb1pYhgx#tjFUWaC_{Vgf2NO7in!iW2iu@^fQ?lQZ)3b7DNbT^%>yWcr%}0IqQo A$N&HU delta 40 wcmcb0pYhs##tjFUB%@NSVhSo_iW2iu@^fQ~lQZ)3b7C^HQxiAeW%`=~0C1HN>i_@% diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/parser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/parser.cpython-39.pyc index 2fddd4c60b229bd09ce3d3d2185b7fd6b78680e0..478d8395c5c440c830d40e51836a43ab056efb5c 100644 GIT binary patch delta 42 xcmX@4e@uUaBb#iji&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)<|wudK>$`U4_5#H delta 38 tcmX@6e@K6WBb#Joid9TOWlT|GUP^v$OmT8Xetu3&W_D`g<~X(tK>#3W4tf9p diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/policy.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/policy.cpython-39.pyc index 4c2534ac24e06a0640aa4cfd5e1c240dcb14bb13..caeef5244332857a4a8eb2b3e324e6094c2af8fc 100644 GIT binary patch delta 42 xcmZ4LxYBV$7`JS!i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=6r55Q2id9TOWlT|GUP^v$OmT8Xetu3&W_D`g=5qG8G5|Gd53m3L diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/__pycache__/utils.cpython-39.pyc index 4b21fc8d0754dcd16f422b8044172dec8d93bfba..ebf13526d6505a1e62784054715eab41734630a9 100644 GIT binary patch delta 42 xcmeAQ>jt diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/mime/__pycache__/audio.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/mime/__pycache__/audio.cpython-39.pyc index 8240772c5aa6fd3911a21c9c88ab29cd2205e3e1..7f25151fceab35dd98390d448e759480986bfa93 100644 GIT binary patch delta 42 xcmaDY`d)NH60>Zgi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=4$2wb^u_N53>LO delta 38 tcmaDa`dV~D60>A%id9TOWlT|GUP^v$OmT8Xetu3&W_D`g=6dD=b^s~O4%Pqw diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/mime/__pycache__/base.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/mime/__pycache__/base.cpython-39.pyc index eddbb584815e46517471991159408e96b8f3613a..b3081ab637ce8d37a8757c11b7e8ae6a62f87eec 100644 GIT binary patch delta 42 xcmcc5@t9-7A12uZ7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&7#a+i~wxE4~GB% delta 38 tcmaFNai3$uA129|6swqm%9x_Wyp;UhnBwG&{QR7l%|w< delta 38 tcmbO)Fk4_lGMi*MB`MgS|24vzo; diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/mime/__pycache__/nonmultipart.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/email/mime/__pycache__/nonmultipart.cpython-39.pyc index 8226bc3b052c9666dc0e07f19a6b6569a71eed0d..140da24abc77293447e74a9a89aafea68420b5a6 100644 GIT binary patch delta 42 xcmX@jex7}UA(L!|i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)W-q2jMgU6x4+Q`K delta 38 tcmX@lewuxQA(LcEid9TOWlT|GUP^v$OmT8Xetu3&W_D`gWdi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)W=oc7i~veD4+H=J delta 38 tcmcc2eV%)R0*ho!id9TOWlT|GUP^v$OmT8Xetu3&W_D`gW?PnNi~tp;4krKr diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/html/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/html/__pycache__/__init__.cpython-39.pyc index 6526c2fed9b0860c12ead7a60e2a619d96ede80e..c8f3c072a752fea8d518c98cfb43933db5ea996b 100644 GIT binary patch delta 41 wcmeC@n9Q+3pIJ7}#VRJCGNU9vFQzClFC{-WCOA1GKR+kN)7#Z?vIp~V04LiHr~m)} delta 37 scmbQt(a*6#pII_0#VV$tGNvdoFC{-WrZ_nxKR+iXGdneLvJdld0QLb5%K!iX diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/html/__pycache__/entities.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/html/__pycache__/entities.cpython-39.pyc index 897bdfe03012ef9d7958c77c653c2d04e2429b61..c362996dfea14c456e05c538d37627e8e4305cb5 100644 GIT binary patch delta 44 zcmdnh!@RGDc>~8L**F)gn1ITRlKi}wqQtzE{M?w}~8L$*2^on1affqQtzE{M?x0~RZKx;Oi^N9N`7ukadJj}eojngc533plu!WefDNAj diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/http/__pycache__/client.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/http/__pycache__/client.cpython-39.pyc index 4ed11d8f49ea90a12d558e0e892d0da2619a0942..94e8496b3cee7cc887cce91f75aa48e0a6e0de6e 100644 GIT binary patch delta 44 zcmbR9fpNhH#tl!!Wn)~dVgf2NO7in!iW2iu@^fQ?lQZ)3b7DNbT^%?76PHT>0H?$e A{Qv*} delta 40 wcmZ4RfpN|U#tl!!B_mR-VhSo_iW2iu@^fQ~lQZ)3b7C^HQxi8cNysGt0A^DVApigX diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/http/__pycache__/cookiejar.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/http/__pycache__/cookiejar.cpython-39.pyc index 71d6acb287ad7a2526e0cf23ac3260eb7013d898..3e98cffbe6da9b1201cdd2f0ea878cbc16a9d507 100644 GIT binary patch delta 44 zcmcb;g!%pw<_%GtvhglfF#(ksCHZ+VMTvPS`MEK{$r<_iIWeBzu8y0FIbWOr0FJ5= A>Hq)$ delta 40 wcmcb=g!%Ro<_%GtlF=zvF$I+|MTvPS`MEL0$r<_iIWd{psfnA*IbWOr08{1>4FCWD diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/http/__pycache__/cookies.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/http/__pycache__/cookies.cpython-39.pyc index db3cbb38c6ffbc5bfc20fd679da1ade415f525f8..0c359841c3ac4b09e8bab00925cc35a5e316f29e 100644 GIT binary patch delta 42 xcmX?Bf2w|i2cK-Li&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=0v_!LjZE>5IO(= delta 38 tcmX?Af2@9k2cKkQid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=2X5^LjXEP4_yEN diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/http/__pycache__/server.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/http/__pycache__/server.cpython-39.pyc index 8f8eeebcec788354f59bdc356440305335d0b1d6..5802127b6dbf142b637d7e6c14b67398f58cb134 100644 GIT binary patch delta 44 zcmeC_Wtz~-v_X|qHpay&CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts;)p4^Or(Z1qVn+|k delta 40 vcmbQx%hc1$v_X|qG9tw)rl2yWC^0W3KR2d0IU_$mCnhsHHF2{Or(Z1qE1M4O diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/test/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/test/__pycache__/__init__.cpython-39.pyc index 1abdcae206e8b64219d09d63e249c311f103867b..78c24cbc50c665aab3b753d6f9315f55a75ee076 100644 GIT binary patch delta 41 wcmX@ge3E%XIHPQwi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)4l@7% diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/test/__pycache__/support.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/test/__pycache__/support.cpython-39.pyc index 07796c0c84f99c30012f188e992179756625c19b..29b10f58145a339be6e13853865eb4abab1c5697 100644 GIT binary patch delta 1187 zcmXYwe{54#6vyAWEswIdNpZ{q{V~Q2lUT=oC<7+Cy5B#=)n?R=WVZEITu>9y zm}p{RA}7pjnhhbF@*@l7HX{?0G3Ou{hY^^PB^sSm5)>q&^9SO5--rKv@;&E!&VA?R zo;RGfjiznKCbGQStJVfL?QVNE9t+BFY)Aa*;A5?A@pyZ%etmU7UCVmnb(&Olou7-G zA4$_>zh)u?yai0NzpI%p^J`s0`epdnxTZTX_d4Va;xFdATvMj*o}+0=huPpDyWL@T z%$HN@r*5|`ZyJTDkpH)6+KM@{42e^~3>WmAxN`=w!)!lflYib$U+>wLW2LS5Tg(y! z{!&l&7LooNs($Cr{m;|iYQcLB5;v`Bxa2_8{*P($cfC1${J?$#fwaar&8auDIdO2g zxJ7(wnMb7$K0~?iC$mC{uuMim(OqG=BPkc6Ct)>mRbLIw@*915VwQN*2^Wv`ZJ~eJ z-JeH-*Y$fAlh8D`Zr(q`oKF*W$|NWGNRpEMdx(f{yzkeAStM;7NM)7V}{>NNyEQ?<3(A z{EPDN!ohQf4<=qx=BlfMiv;;tA8Md{)ijhO-`%F$JooX&jdg*>+7-5DBOKcuO2~L? zB$<@otEmr9+VujQaF2D>!Qr=w{MG+}r8logb&D1QopJ1v{6FPSCV+ zeBvPee)N{`U1LR5#r`pmslrhYxMjB?k)?7&-%0M?RN z*p5rA;nK4eM!9tWu*N!N-`RI;RLRBTrBuO@@fWF{!)Y(ij(0ihQS}sBvw(ngkCW$K zwb62}IR6Sgz@z7jmTp85%rqZT$mx>+`^dW+x zh@qkl$_lrah<0Slie4sSq)}Ex5L8=2P(<&Cz0UvcmmmL``JZ9VJ#)J|O*cAC?T=%| zmDlEbHf;6i)s3}H>plLO`lcqIr(vD9T6~Hr-$NCm^zeN(;SDK@9#kZ%fP+AoT}LZu zi1!}t(uPof&n1Bk+6Tx_JZhWW{!+?7l%n`8(r+QN*Mw~?uEq<~u@R<}FwC&& zkz-O#iPCeCxCwma^y8OCe}&v4dz>@r-y`WS$JZnnX(N7tc|5=mQG3Eg+Gn`FaG-e` z{S*l&EkwUC5$Bw$Q-_J$(-Jv!s#zO`EzF+N^Uc4dWLHg+xO{pe(J)VKaZ;FzTb9sY zKG2dP+0n9|{_yx<3K1_1I!NKlV4|w1T$UHlu1d4mAFL;t{eC7xBULt5#gwztiK4jt z+%@wEnKAljpPxX{i1b1X{ExWmLIzpHz6fk}_p(fUk1>~swV0WSrJ!4hM<-5J< zlq0_NrV`EOaeYq8AJxC<4Q}ie; zV>HZhzNWgmhQ_*S_41GKd3C=&4QDQ5Q`}I6P)^uXIcC{d7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&Ci)9umJ#dAP~F& delta 38 ucmew@@?B)ZIcCYo6swqm%9x_Wyp;UhnBwG&{QR7l%vhglfF#(ksCHZ+VMTvPS`MEK{$r<_iIWeBzu8y0##a{gc0GwG8 Al>h($ delta 40 wcmeylfaU7~mJLN>lF=zvF$I+|MTvPS`MEL0$r<_iIWd{psfnBW#a{gc0ANWGxBvhE diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/urllib/__pycache__/response.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/urllib/__pycache__/response.cpython-39.pyc index e1f5c2aadc9aff70ac3628ccddd57f3d178407ca..e66794574281ea6d3eda54b216a17423792da3c5 100644 GIT binary patch delta 42 xcmca4cTH|X5VLH8i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=4|HY+yGgl5A6T| delta 38 tcmca6cS&wT5VK@Vid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=6vSo+yEn=4-fzV diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/backports/urllib/__pycache__/robotparser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/backports/urllib/__pycache__/robotparser.cpython-39.pyc index e5d4b7fdd8384501c911ecf85cedf3f3ca8bf2ec..26277303e68fecef10e68dab8dc84efb0e78b64d 100644 GIT binary patch delta 42 xcmaE@|6YH?Atu>m7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&9|8ZL;-hz5LEyG delta 38 tcmaE_|5|^;AtuTA6swqm%9x_Wyp;UhnBwG&{QR7l%?7W|h40HuKv AdjJ3c delta 40 wcmdn{l5yut#tn-EC8JWTVhSo_iW2iu@^fQ~lQZ)3b7C^HQxiAu7yOq50BCs;o&W#< diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/builtins/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/builtins/__pycache__/__init__.cpython-39.pyc index 84d2ff4e8b2b90df494c703be58b584ea916a947..4928d69f22b4d6852685cccd4ff68d882dc9e727 100644 GIT binary patch delta 41 wcmcc3d7pEGKZ|UHi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)CKZ|5Yid9TOWlT|GUP^v$OmT8Xetu3&W_D`g%WD5Gq&i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)WFw&cc?L@+8vsIl4-5bR delta 38 tcmZn_YZTj1&mtL;Vii+R8B>&)my(|wQ=FWUpPv(xnVp)rc@9e^8vqWd4le)z diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/builtins/__pycache__/newsuper.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/builtins/__pycache__/newsuper.cpython-39.pyc index d4aa77053ab5700b7e2c3ccac63d8129f01b18cc..5f886b45df97a3884aa9f887fdc81816e142a9a0 100644 GIT binary patch delta 42 xcmZ21wp?rj6Q^v1i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)W@%0iCIC5D4f_B9 delta 38 tcmZ23wpeTf6Q^WIid9TOWlT|GUP^v$OmT8Xetu3&W_D`gW_eByCIALh4ITgh diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/__init__.cpython-39.pyc index 6b220446f524dde9c33e68d9bdc45f41587f20b2..ca1f26e5dc949e391a8a7cda7d5d9fc5e773e578 100644 GIT binary patch delta 41 wcmeyx^p9x+H=}H*i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)WEI9R06-TGtN;K2 delta 37 scmeyz^owZ&H=|@=id9TOWlT|GUP^v$OmT8Xetu3&W_D`gWDUkJ01My^&j0`b diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/_dummy_thread.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/_dummy_thread.cpython-39.pyc index 036e57d17fd8894541b183b816eb84600449da92..40cd56b5bf89bee82de4f94f481a17eaa51ab11f 100644 GIT binary patch delta 40 vcmaFN^qgtJd)X)#tC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%039E{NbQ9KVX delta 36 rcmaFP^q6VFd&#gAtC)hyn4-kIl>FS7;^d6{{G6D~?9{}`JdDu*8l4VO diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/_markupbase.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/_markupbase.cpython-39.pyc index 36bec740d9e97640f1ec61d1d8e21a6a89db4b06..c940dd31738ed263dedc708f6cb1ca779e3d0772 100644 GIT binary patch delta 40 vcmcc1^pI)7YuN}FtC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%03ER2x=PK*y1 delta 36 rcmaFJbeCzuYsrultC)hyn4-kIl>FS7;^d6{{G6D~?9{}`9E_0w7&Q($ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/_thread.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/_thread.cpython-39.pyc index 73b43a00a865c5602498c190051f18b13157665d..de10243de962f1b29dbd6ca7c3b217df9f72ef78 100644 GIT binary patch delta 39 ucmcb}bd_nsW7!ZFtC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~Oe?kE~lMmzo delta 35 qcmcc0bdhPoW66LNtC)hyn4-kIl>FS7;^d6{{G6D~?9{|bjG+Jpt_}$R diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/builtins.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/builtins.cpython-39.pyc index 5ee46f1eadeeecad624a7409edd6746b7f5f8f6b..f2bb7faad8929ecfe25952a680c773d155915bb2 100644 GIT binary patch delta 41 wcmey&^qpw~6QgXXi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)WNF3-06dBgjsO4v delta 37 scmey)^qFY`6Qg8cid9TOWlT|GUP^v$OmT8Xetu3&W_D`gWO>F200^%Qu>b%7 diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/collections.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/collections.cpython-39.pyc index cd9186f742ae191736254abf68f19b67ab0a8dc5..113a642187ed4a66fa7002ef4e49a82faa05ad36 100644 GIT binary patch delta 41 wcmeyw@{MJ~Cq~%_7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp$=poo0AAV;g8%>k delta 37 scmeyy@`+``Cq~JT6swqm%9x_Wyp;UhnBwG&{QR7l%FS7;N*<_{G1q1Z&$~O?;`*>Y7f2u delta 35 qcmX@jbew6zHObHvtC)hyn4-kIl>FS7;^d6{{G6D~?9{}GpCbSR@DAYs diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/copyreg.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/copyreg.cpython-39.pyc index 3ac85f929f1f30a3d5e0816b261d6fbd01f04b9e..571cd4e7854dbdaf018b44216170e16a88d88b5a 100644 GIT binary patch delta 41 wcmeBX?q}X0%_tkFw$`*@Q7103Zbo@Bjb+ delta 37 scmeBY?q=Q~%_td=Vii+R8B>&)my(|wQ=FWUpPv(xnVp(A*@7_~0Pgb*6951J diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/itertools.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/itertools.cpython-39.pyc index 12800e0b8eb248e676e290020e8fe2dbc2e566f2..799d8b23d69a123b30466680f092b20c089032c9 100644 GIT binary patch delta 40 vcmaFD^nz)^C)qF;tC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%03+>DU`QFae8 delta 36 rcmaFC^n_``C&{1`tC)hyn4-kIl>FS7;^d6{{G6D~?9{}`{EU$R8q*F` diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/pickle.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/pickle.cpython-39.pyc index a380bde43f71b0ec8b39774cded1e93177171549..407418d683eca095a0a870ecbaa949cd32085b28 100644 GIT binary patch delta 41 wcmZo>ZfD*gz$hE+ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$`S(7me02{gu%m4rY delta 37 scmZo?Zf4#fz$odTVii+R8B>&)my(|wQ=FWUpPv(xnVp(AS(h;i0P7eG?*IS* diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/queue.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/queue.cpython-39.pyc index 190b88ecefcee265c6f508a6df2be2b4d45ddd48..da96b354c3fd10dc8dde4f0d2925c9cd63299748 100644 GIT binary patch delta 39 ucmX@Zbb)EY1KA)KtC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~OKZ5}}X%El< delta 35 qcmcb>bcSid14+LWtC)hyn4-kIl>FS7;^d6{{G6D~?9{}Ge}e%9yAJaJ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/reprlib.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/reprlib.cpython-39.pyc index fdc65c55b207e025975f7b4141710b1b2e97b978..0067877b87a6fa1f9c5c209525259f4734147350 100644 GIT binary patch delta 39 ucmX@lbeUFS7;N*<_{G1q1Z&$~Ozd`{!vk%+= delta 35 qcmcc2be?I#L&<;?tC)hyn4-kIl>FS7;^d6{{G6D~?9{}G|3U!<;ST=* diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/socketserver.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/socketserver.cpython-39.pyc index 00771ec5807bc7ed416e3c8e1b9bafa960d1adba..28f1a9ec5d28a251d35624587591eab108482211 100644 GIT binary patch delta 40 vcmaFJ^pt7BJK0DVtC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%03?2J(WP*@Kq delta 36 rcmaFL^pI)7JIT-#tC)hyn4-kIl>FS7;^d6{{G6D~?9{}`+>B8G8PN_( diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/subprocess.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/subprocess.cpython-39.pyc index 917fdebf727951b0360900121ab060333ee6d67d..11f8c9f48504f72bf80c31f2f7c4abb2b0d239f2 100644 GIT binary patch delta 41 wcmcb{e2aNQBBN}$i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)FS7;N*<_{G1q1Z&$~O-~0hLr4P0M delta 35 qcmX@fbd+hrT}hu5tC)hyn4-kIl>FS7;^d6{{G6D~?9{}Gzx)9MLk`&h diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/winreg.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/__pycache__/winreg.cpython-39.pyc index d314f457e679a598910d6c09d46864912af5b173..13fb87adbdd1abca5f3ea398fde74bee4d799510 100644 GIT binary patch delta 39 ucmcb>bcJccW7%LAtC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~Oe?kB}CJ*2M delta 35 qcmcb@bb)EYV@dxMtC)hyn4-kIl>FS7;^d6{{G6D~?9{|bj3EF8O%4SB diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/dbm/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/dbm/__pycache__/__init__.cpython-39.pyc index ad8e821386a4b24bd2197d9dadc599b7d1025397..bb384a9287cd79266a64763a0b057b9f318c6a4a 100644 GIT binary patch delta 41 wcmcc4e4BYg7^7^Yi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)FS7;N*<_{G1q1Z&$~O|H1%0;1BQs delta 36 rcmcb?bcJccQ^~*-tC)hyn4-kIl>FS7;^d6{{G6D~?9{}`OpIXw6qybd diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/dbm/__pycache__/gnu.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/dbm/__pycache__/gnu.cpython-39.pyc index ea9f6b49f29d84d7ac3d133b6a4be7caa9c4b638..6213813f4ee32d747a0302d891c969beb0e16c24 100644 GIT binary patch delta 39 ucmX@lbeUFS7;N*<_{G1q1Z&$~Ozd`{!vk%+= delta 35 qcmcc2be?I#L&<;?tC)hyn4-kIl>FS7;^d6{{G6D~?9{}G|3U!<;ST=* diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/dbm/__pycache__/ndbm.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/dbm/__pycache__/ndbm.cpython-39.pyc index bb80a6bbc79b78b4ec7870ae7cd2682b6d3ac603..c14b317f2e8f861f1c807b936950322774dbf99c 100644 GIT binary patch delta 39 ucmcb>bcJccL)lOltC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~Ozrp}KAP?XG delta 35 qcmcb@bb)EYL&?AttC)hyn4-kIl>FS7;^d6{{G6D~?9{}G|H1$VLJtD~ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/html/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/html/__pycache__/__init__.cpython-39.pyc index 2686f4ff257767e4e2b08b585afacc0dcf438118..f28752c8fd0f84dfe7878f8eee860ad5d0c53f26 100644 GIT binary patch delta 41 wcmcc0c9U&G7?W(2i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)FS7;N*<_{G1q1Z&%03T#V5GQX~&I delta 36 rcmaFK^pt7BN6D}htC)hyn4-kIl>FS7;^d6{{G6D~?9{}`e2mcm8*L6+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/html/__pycache__/parser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/html/__pycache__/parser.cpython-39.pyc index 364a2e59d4659a2d8dada2c16d02b59a4b71d1b2..38cbfa897771ca2b381ed4c28b9f5431bcfcc584 100644 GIT binary patch delta 40 vcmcc1^pI)7YuN}FtC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%03ER2x=PK*y1 delta 36 rcmaFJbeCzuYsrultC)hyn4-kIl>FS7;^d6{{G6D~?9{}`9E_0w7&Q($ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/__init__.cpython-39.pyc index 3be24656221567a8957596b00823f310f392544a..cbfe23cdf0a31fceb29be6af7e1ead0de8460af1 100644 GIT binary patch delta 39 ucmey#_?K})w``P)RZKu-MoE5NOi^N9N`7ukaB@a|eol<1x2xmCC7}R3i4TYX delta 35 qcmey%_>*x$w`5p~RZKx;Oi^N9N`7ukadJj}eojngc533p6`=qJuMVpK diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/client.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/client.cpython-39.pyc index 518f8563ea845523f1177fe57f6185efd459ce1c..5efabe234110ac9fbb1c9b72ba324aa89c7475c9 100644 GIT binary patch delta 39 ucmX@bbdG7l4cQ16tC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~OA0q)dcMr$_ delta 35 qcmX@dbc$)h4atxctC)hyn4-kIl>FS7;^d6{{G6D~?9{}GUn2no;STEn diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/cookiejar.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/cookiejar.cpython-39.pyc index 04f61dc14c04da08fb47d16c6a5013df151de738..b0464b99b26be2655839df374b543c3b1dc995d4 100644 GIT binary patch delta 40 vcmaFF^o(i3TiIwAtC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%03Y>Y7gP{a=_ delta 36 rcmaFH^oVJ~TgmVgtC)hyn4-kIl>FS7;^d6{{G6D~?9{}`T#PXQ8Ziz| diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/cookies.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/cookies.cpython-39.pyc index 308ced464c0a729e979749efc8a78cc649a91029..c04fce4d3e6d88554ba77d33b419fc0f5bca7e7c 100644 GIT binary patch delta 41 wcmeyt^oMB!Gox&zi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)WEsX706xhMq5uE@ delta 37 scmeyv^n+;wGoxf^id9TOWlT|GUP^v$OmT8Xetu3&W_D`gWCg|;01C1V#Q*>R diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/server.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/http/__pycache__/server.cpython-39.pyc index 8ef256b897e5c5a8148ab2a7140b3cd11a5e2d76..abd06b422c494fe60c277861a86942c8220346de 100644 GIT binary patch delta 41 wcmdnWvXf=QMn>5P7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp$)^~z0Yv2wiU0rr delta 37 scmdnVvXy1SMn=hy6swqm%9x_Wyp;UhnBwG&{QR7l%$ie0T3b%tpET3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/test/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/test/__pycache__/__init__.cpython-39.pyc index c6b959f5e8b337a97c4f40326ccd01b8be15da42..1269690430428ab4688250081e5f2b22156845d2 100644 GIT binary patch delta 39 ucmZ3@w4Q0gZrLaotC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~OSHb}-Z4XcY delta 35 qcmZ3_w3=zcZpp9|tC)hyn4-kIl>FS7;^d6{{G6D~?9{}GH^Kq=EDm!3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/test/__pycache__/support.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/test/__pycache__/support.cpython-39.pyc index 2cfe3ad5da3adf689c0ca71279af6c77c2207385..05f833d9ac183ab9610ae3eb3e99daaf1d9553df 100644 GIT binary patch delta 41 wcmX@je4cqj2%~JIi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)z>% diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/tkinter/__pycache__/scrolledtext.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/tkinter/__pycache__/scrolledtext.cpython-39.pyc index 381741243345dc15680184a4a6248ebb9e52f589..8dad8cbc883d7f1a0747a54bd1dd42d472925d77 100644 GIT binary patch delta 41 wcmcc3e4lwk45MtKi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)w2^7TZrKFS7;N*<_{G1q1Z&$~OS0Vu|M-Ny4 delta 35 qcmdnUw3cbYZpnxgtC)hyn4-kIl>FS7;^d6{{G6D~?9{}GHzEP~?hbnZ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/urllib/__pycache__/error.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/urllib/__pycache__/error.cpython-39.pyc index e3645481ae20c28e04346b582af5ca949f876077..60f67932088e6d4ee44ece4474f574a0ac3bc697 100644 GIT binary patch delta 41 wcmbQsvXEuN5=Plb7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp$$J?S06TyWHUIzs delta 37 scmZ3;GM8n;5=P0;6swqm%9x_Wyp;UhnBwG&{QR7l%bBLDyZ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/urllib/__pycache__/request.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/urllib/__pycache__/request.cpython-39.pyc index 0937106c51113a02cc13dafbcc8b877aaad9cbfd..b1b0e639bb971ae4668c644906259ebed26481a4 100644 GIT binary patch delta 41 wcmdnSv5RBFMrPS)7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp$)}ie07n}SoB#j- delta 37 scmdnRv5jNHMrO(I6swqm%9x_Wyp;UhnBwG&{QR7l%*4J01_MyzW@LL diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/urllib/__pycache__/response.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/urllib/__pycache__/response.cpython-39.pyc index 43dc4fed2d4556c8d1523ee8e04dcb8f7bc75048..71da5a9f679885bb8fe79a3c997fbd3799bb6040 100644 GIT binary patch delta 41 wcmaFK{FZq`A){=Ji&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)FS7;N*<_{G1q1Z&%03Jd6ndRXh(< delta 36 rcmeys^oD7|XUXUktC)hyn4-kIl>FS7;^d6{{G6D~?9{}`0*na&9x)Df diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/xmlrpc/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/xmlrpc/__pycache__/__init__.cpython-39.pyc index 6c5ebb41faee62307fe02eca3b5a6374dab5b9d6..b85917ba1437b151793705b0d5059eaa37fa61f7 100644 GIT binary patch delta 39 ucmdnYxSer=yKIb$RZKu-MoE5NOi^N9N`7ukaB@a|eol<1x2xmCgkS(3Zw_<- delta 35 qcmdnaxS4T+yJSR)RZKx;Oi^N9N`7ukadJj}eojngc533plwbhtz73ZE diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/xmlrpc/__pycache__/client.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/xmlrpc/__pycache__/client.cpython-39.pyc index 678121ccaf99c0f311757f7716d13136ed8b0c22..3822be3a34ef58470b5af52a548bccd740c7fc40 100644 GIT binary patch delta 39 ucmX@cbc$)h71<~ktC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~OZzBOW_Yb-N delta 35 qcmX@bbc|`j70Iv^tC)hyn4-kIl>FS7;^d6{{G6D~?9{}GA0q(+i4NTW diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/moves/xmlrpc/__pycache__/server.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/moves/xmlrpc/__pycache__/server.cpython-39.pyc index 693d6da2f1999ff1538c88fd7a8da2664f1f6cfb..1b60eac5e4b7e39fcd892e5d64812f0771b4c20a 100644 GIT binary patch delta 39 ucmX@cbc$)h71<~ktC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&$~OZzBOW_Yb-N delta 35 qcmX@bbc|`j70Iv^tC)hyn4-kIl>FS7;^d6{{G6D~?9{}GA0q(+i4NTW diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/standard_library/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/standard_library/__pycache__/__init__.cpython-39.pyc index df5e208bf16bbbb6f1f61cdb1bbb2f12bb6ebf41..04a9fec8e34b04c084eb699ac8abb2fc9c6a8185 100644 GIT binary patch delta 44 zcmaFf&-l8ZaYF&WY=VnbOh9EuNq$~TQDR<7er`-~az=iBPK>9wtK;TQ{x}N&jw2BB delta 40 vcmaFe&-lEbaYF&WWK4=xOhIK#QDR<7er`;0az=iBPE2NYYU1Wz{x}N&Q$r9I diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/tests/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/tests/__pycache__/__init__.cpython-39.pyc index 23c0f1c6739988db0f3397e0caae566c3f99e4c9..b3131aed1c3deb74582094a93c0efd96d68ed56d 100644 GIT binary patch delta 39 ucmZ3(xPftkyKJb7RZKu-MoE5NOi^N9N`7ukaB@a|eol<1x2xmC1Rnq!bPiYm delta 35 qcmdnMxQ20pyJTRBRZKx;Oi^N9N`7ukadJj}eojngc533p6dwTU7Y%y= diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/tests/__pycache__/base.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/tests/__pycache__/base.cpython-39.pyc index 6aee5c0eb901e8f4001251de762f3202a27f4ffe..a1ed181815f0ae17b4b6341ad61fe344a7c79f29 100644 GIT binary patch delta 44 zcmZ3|#JHk~al;cP*+3Von1ITRlKi}wqQtzE{M?w}n`m>;QfH5EcLc delta 38 tcmeyO_d##NcYevh6swqm%9x_Wyp;UhnBwG&{QR7l%;OaW4>i7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&9|A%^Z;n#5HJ diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/types/__pycache__/newlist.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/types/__pycache__/newlist.cpython-39.pyc index 8846e5e9fd54c27d9a144db1b558d57b8d9aae70..d7f9b4b0f70d2c5a3acac2d07b18eb578d914579 100644 GIT binary patch delta 42 xcmeB^m?W`bCzEW5i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=1WXAoB&T_4{QJc delta 38 tcmbOv(I>HCCzE7Aid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=4(tgoB$d}4vzo; diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/types/__pycache__/newmemoryview.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/types/__pycache__/newmemoryview.cpython-39.pyc index 7c3383329765db780a6bb32d790d3bf061d25b0b..111810781ec5d9a33aeeaef05cb5285137a53df9 100644 GIT binary patch delta 42 xcmcc5{+NA(5tD3`i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)W^bk`i~vvC4>SM( delta 38 tcmaFNexH4V5tC$Cid9TOWlT|GUP^v$OmT8Xetu3&W_D`gW`CwBi~t(K4p#sG diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/types/__pycache__/newobject.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/types/__pycache__/newobject.cpython-39.pyc index cdd2190887e36d36241fd97b4d7d1f2a3139dc68..281629258051ec87c7b88a77dfd8b4516c8794a5 100644 GIT binary patch delta 42 xcmaDP@=Rm{ADe8Li&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)W_31e7649x4!QsU delta 38 tcmaDR@%m5fQ4xj)4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/types/__pycache__/newrange.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/types/__pycache__/newrange.cpython-39.pyc index 4e73100afc76c4d8c6d7676497ca7c47924f7d4b..bfbfd2b7731e4885018c9f55d114fd2bfd35c69e 100644 GIT binary patch delta 42 xcmaE@|6YH?M>g3|7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&0Opc1ps?z5PARr delta 38 tcmaE_|5|^;M>fg86swqm%9x_Wyp;UhnBwG&{QR7l%V!Z diff --git a/IKEA_scraper/.venv/Lib/site-packages/future/utils/__pycache__/surrogateescape.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/future/utils/__pycache__/surrogateescape.cpython-39.pyc index d09a7836c67e7ecf25151c42f5301e7a76b5196b..15f0b31f5c03f9c51191db43570a23ad4b07d490 100644 GIT binary patch delta 42 xcmew*`%iX*C6jE7i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)<{+jOJOE(!55)ig delta 38 tcmew-`%89%C6i=Cid9TOWlT|GUP^v$OmT8Xetu3&W_D`g<}jueJOC;(4(I>? diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/__init__.cpython-39.pyc index 3070fdec8d0d421666f5735c667d32964043cc1f..6f0dbdedb131d2009c4da82c34a29e579324c9d5 100644 GIT binary patch delta 55 zcmbO#JX4rEk(ZZ?0SMeKJ8b0EXOZ=Hv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9L(ax3IL$S5M2NO delta 51 zcmbO!JXM%Gk(ZZ?0SJ-{?Kg7kvq*ZUSj7}n#uO#yrR3+v6enlo=jX&^W~U}@4rg&< F1pr(64>|w< diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_abstract_linkable.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_abstract_linkable.cpython-39.pyc index c9915a203ac7d321689654c78f93d481cfe4403d..8ba338afbfe44d5e4332a33434d4250137b2dcd0 100644 GIT binary patch delta 55 zcmaDA@GgKmk(ZZ?0SMeKJ8b0M%p@D>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8v~NRRHwR6951J delta 51 zcmaDC@G5{ik(ZZ?0SJ-{?Kg67W|9m|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e4A;q FDgdcO5#0a) diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_compat.cpython-39.pyc index bbbfafe48a29d52ad022b6bf481d7f1420cbe22a..6f05de6c53c9867a53a5a4a4dc832ae13a297ce4 100644 GIT binary patch delta 55 zcmdn4xm%Mvk(ZZ?0SMeKJ8b0kWR>-Ev5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoXhIP4*ypYgb8aJ%fVk$W$zte=ZjOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;T}tdBhb3xpHb delta 53 zcmX>xpYh0iM(#vjUM>b8NG`PB$i0_U(ksO(rl2yWC^0W3KR2d0IU_$mCnhsHHF5J( H*2kUzzLgTR diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_fileobjectcommon.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_fileobjectcommon.cpython-39.pyc index cc4dd3cdcb643fed5160ac1b52e0386e6d48a98c..2ce17127f8f5d52b2e1ac58697d91a2cf018952e 100644 GIT binary patch delta 57 zcmex6nXz#SBX=S%FBbz4xLtPG$ZgCl8{uLV6Hu8^lAjk-l$e*2pBodLoROcO6XWUa L>bNfcsYFw&c JS&?;}G63=M5_|vv delta 51 zcmcZ{cs`Ijk(ZZ?0SJ-{?Kg7&WswX{v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*tjfAh F833jY5m^8L diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_greenlet_primitives.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_greenlet_primitives.cpython-39.pyc index 469006d225caa721e5ec2350e77420d674d83dfa..817fa9671d90907f019528d07f09b05072819505 100644 GIT binary patch delta 55 zcmX>tc3zA-k(ZZ?0SMeKJ8a~xWs;3{v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JypU-X2LQ)s5#9g* delta 51 zcmX>vc3O-(k(ZZ?0SJ-{?Kg7QGD(J~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@UdptJ F0|0+>5W4^X diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_hub_local.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_hub_local.cpython-39.pyc index 8f33342ea6bc63bf85a8a49e8042747268e48bd9..862048c180a17a15858145f5c1aa954107d60e2e 100644 GIT binary patch delta 55 zcmew=`csrUk(ZZ?0SMeKJ8a~3XOazcv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoXyn50RYZ>5t;x1 delta 51 zcmew<`c;%Wk(ZZ?0SJ-{?Kg6}GfDcUSj7}n#uO#yrR3+v6enlo=jX&^W~U}@&S&c4 F004$R5O)9o diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_hub_primitives.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_hub_primitives.cpython-39.pyc index 99d2e68b754a0f32223ef04d278d191b6b1f7f94..0c12103636f281eb92271b38194a45f5186decf1 100644 GIT binary patch delta 55 zcmeB*>x<(~x$z}Fw&c JS(-_K4FJlY5eonS delta 51 zcmdlluv>sTk(ZZ?0SJ-{?Kg6NXO#3zv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EYGCC F1^|Jt59j~@ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_imap.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_imap.cpython-39.pyc index 41f7cfe7d44efee7a15f9305d095deccd2a658bb..b5a274f0420133b1869b5e28ee5d67b4d71d183c 100644 GIT binary patch delta 55 zcmaEA@X~-gk(ZZ?0SMeKJ8a|*W|H-Bv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT+Z}P6adu#5;On+ delta 51 zcmaE9@YH}ik(ZZ?0SJ-{?Kg4Jq JzQ(*x69CPi5@G-V delta 51 zcmeB(Zi(hj^u%5kCL` diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_monitor.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_monitor.cpython-39.pyc index bc70ca5d920d2df08cbb9ce8a719a0483df834b8..b49ecbbd68dfcd70d23623c8121dbda897a6a686 100644 GIT binary patch delta 55 zcmZp&Z?or4 F0|0K@5TyVB diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_patcher.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_patcher.cpython-39.pyc index 7a993d1f15e77e6f4873f8a76b58359d41921602..36fc4508f9cfa60cff721275411df641924f7cb1 100644 GIT binary patch delta 55 zcmbPWF~x#Ak(ZZ?0SMeKJ8b0M$0FFw&c J`4NkrH~_@W5xD>W delta 51 zcmbPYF~Nd6k(ZZ?0SJ-{?Kg7oW0CYuv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{ES6U F8~}X95S9P{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_semaphore.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_semaphore.cpython-39.pyc index 5d7b827a2b0f1a68c4cf2af54b612f60e5dbdb0f..b53144e1b1838bbd8e056e8110aacc3dc2e07c60 100644 GIT binary patch delta 55 zcmeyJ`ahLBk(ZZ?0SMeKJ8a}OWReYZv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9LluJ008d&5?%lR delta 51 zcmeyL`a6|7k(ZZ?0SJ-{?Kg58GD-TTSj7}n#uO#yrR3+v6enlo=jX&^W~U}@j$~S9 F005+E5jy|? diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_socket2.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_socket2.cpython-39.pyc index 6336fab4f2d1ca9fbc1465336922e2a201d91fd9..c3d4be507da6c33ef31a06be6c00355dc0b142b8 100644 GIT binary patch delta 55 zcmaE2_ri`lk(ZZ?0SMeKJ8b0s$0Y0TViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS&7+61_1Ee5(5AL delta 51 zcmaE1_r#7nk(ZZ?0SJ-{?Kg7&W0Levv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*tj6pl F0|2E95a0j+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_socket3.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_socket3.cpython-39.pyc index 470887f5fff0fa65e308f4e66a1f0584b4be42c8..f517a2f6cbb01623defe79a89074ff028fa2ea30 100644 GIT binary patch delta 69 zcmZpwZ>#4{r}`mx}=i+%7w85{$U1$!7@w?(q@4 delta 53 zcmccB!g#HPkvox>mx}=ik_+uOa;tDk2BcWU6ja6(CFZ5%=f)H#XXNMS#AIftCT{lO HFw&c J`2u@~3IOg~63+kt delta 51 zcmcZ;aU+5|k(ZZ?0SJ-{?Kg6-VVCqsv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e1*M3 F1puR45v%|J diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_ssl3.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_ssl3.cpython-39.pyc index 157010497bd942b57a581d8e4c465b9fd7ab6213..1f51b5b81203af4f5a2904b85519483e6d8d0b65 100644 GIT binary patch delta 57 zcmeC3&p2^DBX=S%FBbz4xLtPG$Suz%>*Hb-6Hu8^lAjk-l$e*2pBodLoROcO6XWUa L>bTjN&C3%2*#8lf delta 53 zcmbO@pRsp7BX=S%FBbz4Bp2Fmmx}=i+%7w8bO~o^_4RK@0Sv? delta 53 zcmeB}#Mm;4kvox>mx}=ik_+uOa(`oy^i8pfDX5GoO3X{i&y6Wg&dATtiOI}PP24QU H`pOvqq%#qZ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_tblib.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_tblib.cpython-39.pyc index 91e1e0b84f333ad1b78ebb0bcbdadc28fa1df1a5..96d2a730b1e85dbc5900136aef9eb1ecc8ab53fd 100644 GIT binary patch delta 55 zcmX@=chZkLk(ZZ?0SMeKJ8b0cW|8%Ev5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyq;y65&+z>5?TNN delta 51 zcmX@_EN5jOw; diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_threading.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_threading.cpython-39.pyc index 4b0ae337a4a773fe8eb0e96ecf1d2d4b199ea892..2b98801ddb5b8c23f1f8573d7b2ef60cdf043e8b 100644 GIT binary patch delta 55 zcmX@Ac2bQyk(ZZ?0SMeKJ8a~xXOazcv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JyqIZ`007E$5$pf} delta 51 zcmX@9c2tc!k(ZZ?0SJ-{?Kg7QGfDcUSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ue2^g F004qf5Xk@l diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_tracer.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_tracer.cpython-39.pyc index c6a6dff1d9ee32251450cc9131b609739de374a1..11711b89647d4f30dccdab48f53f7e8c1f0d776e 100644 GIT binary patch delta 55 zcmaE=`cjoUk(ZZ?0SMeKJ8a}W%p~jQViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8m@+egNXY6AAzT delta 51 zcmaE<`c#!Wk(ZZ?0SJ-{?Kg5CW|H(uv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{F><> FKLD7Z5$6B^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_util.cpython-39.pyc index 89e118e94fa851576a486cbfaec313322872486b..8d603b70419532a1c63caa320c543064b7fcffc1 100644 GIT binary patch delta 55 zcmX@&e!`tQk(ZZ?0SMeKJ8a~h%_QsNViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc|Q}YA^_T45z_zw delta 51 zcmX@%e#D(Sk(ZZ?0SJ-{?Kg7IW|H(sv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3*$< F5de_f5U>CM diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_util_py2.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/_util_py2.cpython-39.pyc index 6359cc4b45fd41e4dc6ec9d6cda969bdca56d743..f30756587d09528b7e2732ace850e46487829c8a 100644 GIT binary patch delta 55 zcmZoFw&c J`5~jLBmm5@5%B;3 delta 51 zcmZ2ww#k(ZZ?0SJ-{?Kg7oWt8+vv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FKpE F5&(o95Y7Mq diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/ares.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/ares.cpython-39.pyc index 7887583a7e16646d1d5bbd50d8ef4816d505da1c..9770054040e8d961bb3fcc91c57201b10f95dcec 100644 GIT binary patch delta 54 zcmbQjJcF4#k(ZZ?0SMeKJ8a}uW0duFv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe I?8WE>0EV>?0ssI2 delta 50 zcmbQiJcXG%k(ZZ?0SJ-{?Kg6(F-p3pSj7}n#uO#yrR3+v6enlo=jX&^W~U}j_G9z{ E07KLc-v9sr diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/backdoor.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/backdoor.cpython-39.pyc index 5672647a74190a203cebe0075190ab0cd5de9eb5..b58ba6714d2c7f46a666df8c9318740844566502 100644 GIT binary patch delta 55 zcmeCNonXtI$ji&c00eHA9X4`bW0CcDv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J{EKChBml|L5>WsE delta 51 zcmbPW+hfa}$ji&c00hZ}_8Ymcu}FHSSj7}n#uO#yrR3+v6enlo=jX&^W~U}@{>L&& F5&(f=5iS4# diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/baseserver.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/baseserver.cpython-39.pyc index 2cdbf307a8d90945a3cecfa3090749a2eae14a22..41e9a6244d97a022b6851c802ee471d1df71a7f9 100644 GIT binary patch delta 55 zcmeBAo1Dg-$ji&c00eHA9X4{aGsyJq J)@FKQ006t05pnoYwu F004Cb5KjOA diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/builtins.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/builtins.cpython-39.pyc index 4aa51db51d3c88baee8b20fd2a3111d842365f4c..80523ad2378bfdc2b392b22c11d04a3ca7f1dbce 100644 GIT binary patch delta 55 zcmdlax=oZjk(ZZ?0SMeKJ8a~xWs>!Gv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JypTzd0|2?F5d{DM delta 51 zcmdlcx=EBfk(ZZ?0SJ-{?Kg7QGD&);Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@UdklM F0RVEd58?m- diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/contextvars.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/contextvars.cpython-39.pyc index f1199ea10ef8e19523f8126e857c5a4f93f98330..36f0814fabc78ef4afaa159eafb7f030d3e0a90c 100644 GIT binary patch delta 55 zcmbQ?GslNJk(ZZ?0SMeKJ8a|@vXO;5k(ZZ?0SMeKJ8b0M$tdgXViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`7UDs0H@*+VgLXD delta 50 zcmdnUvX+HAk(ZZ?0SJ-{?Kg7oWR!GIv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{E#sK E0Ab}2KL7v# diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/event.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/event.cpython-39.pyc index 033cb280d237efbe3798c409fc2b17bd05b750f2..611c9b81fef317ad8d98eb9026d887cdff808513 100644 GIT binary patch delta 55 zcmbPSKE0efk(ZZ?0SMeKJ8b0s$|&pOViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS(2&B5&-1b5)l9Z delta 51 zcmbPUKDnGbk(ZZ?0SJ-{?Kg6NWt8+tv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EX!17 F2>_Y=5bgi~ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/events.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/events.cpython-39.pyc index 1bc84c840a6a9ff72201ec2ea1dae3aeb4468717..5fbaf1df70912d41bb0d7525554cbdd984dcc893 100644 GIT binary patch delta 55 zcmX?He!QGJk(ZZ?0SMeKJ8a~>%_-~aViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`9J3oLjd~G6ORA@ delta 51 zcmX?Jez=@Fk(ZZ?0SJ-{?Kg7Y=9KhIv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*=Jf F5CE#Y5p4hf diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/exceptions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/exceptions.cpython-39.pyc index 01ced578b2a73ee46f96cee6935e4e88a878c05c..e7dae5c3f0aae367d29f9033db624c78b644d6a4 100644 GIT binary patch delta 54 zcmdn5a#)2sk(ZZ?0SMeKJ8a~>!y+5#ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c IiPfGL0KlFRGynhq delta 51 zcmX@CvR{Qek(ZZ?0SJ-{?Kg7YVUhGrv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%))BV F3jl~F5E1|Y diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/fileobject.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/fileobject.cpython-39.pyc index 0f7cefdf9419ac7fd4823d4b13890a69d470caac..5ab1609c94a65f70ce9cd26a62bc62e79c77d3a5 100644 GIT binary patch delta 54 zcmX>gc0`Ojk(ZZ?0SMeKJ8b0M!zCN&ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`2kk~0J*3U+5i9m delta 50 zcmX>ic0i0fk(ZZ?0SJ-{?Kg7o;ga-Cv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{Ddn3 E0CGDJw*UYD diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/greenlet.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/greenlet.cpython-39.pyc index c97efe8c85569b48423d226d2a2b76683d0aba37..dc744cd76d9fed7ff26b697be7bd98a573118151 100644 GIT binary patch delta 57 zcmdnd%(SPOi93;(mx}=i+%7w8+fO}6Hu8^lAjk-l$e*2pBodLoROcO6XWUa L>bO~$Woaz{{!tR) delta 53 zcmdnf%(SDKi93;(mx}=ik_+uOa=&Mm^iHvgDX5GoO3X{i&y6Wg&dATtiOI}PP24Qb Hva}WevE>oI diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/hub.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/hub.cpython-39.pyc index d05bcaa2f31c3074dc4cdab1d5cf3926a240fb61..83a2547e620f8d54356ce92a113bd65d1f8cec10 100644 GIT binary patch delta 57 zcmX@TneqH)M(#vjUM>b8aJ%fVk-LUl*2~2zCZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7FzZf!pR3!f6; delta 53 zcmX@Vnep^yM(#vjUM>b8NG`PB$X&xN>6T&@Q&1UGl$e*2pBq!0oROcO6O);pnz(rh Hx3(VuzSI%D diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/local.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/local.cpython-39.pyc index a19ee28011ae6aa6a318e5fce8a4f9e60242e0f9..3431f45e33a95ccb28562c00ee957f3c0bc717fc 100644 GIT binary patch delta 278 zcmdmzx+9f4k(ZZ?0SMeKJ8a~hE+p&YViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c zdAAUUz+^#X*~#aWRFpX5SQlv<;i-= zvVsCgg7IaEMa7fLl~=I&0PQXE-mI!3-FVtauIKM>&$B7A|wE#~6Xl3UCvnMFkb zlQUG^8ND}eQ2oUy0Fo=>1rY%t!gKR3^&c3b{+kbJS};n1?NNZM1zX?*;`(kD(SE`R QH1elTI5Ut6G)QIw0M89h`v3p{ delta 251 zcmdmyx+Rr6k(ZZ?0SJ-{?Kg5y7n1Zyv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*ykCez zfQvIeJ~=0`xHvw3@?#~{$yv&RlVz2qCtpz#nCz=8J6T&<39KYDFS7)wq*{3enVz``sZfJtCIIaAL&N|8 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/lock.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/lock.cpython-39.pyc index 8417774326fed35ffdc0cacc145a70640ae87640..d7d517adf9e391138e2f1009da9b2b8d345eb533 100644 GIT binary patch delta 55 zcmcZ{c0G(ck(ZZ?0SMeKJ8a~Bz%1+SViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnT5q)9RTi?5$gZ| delta 51 zcmcZ}b~%hYk(ZZ?0SJ-{?Kg5iV3u@Gv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%)#QX F4gjMO5Xb-k diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/monkey.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/monkey.cpython-39.pyc index c12b025bcbab575d9855a8a7351640ea5585a21f..912eaa967871ee5c085160f1aa6dedd4e0528165 100644 GIT binary patch delta 57 zcmX>-nd$swChkODUM>b8aJ%fVk=sN}*4M=b8NG`PB$ZaAf>6u~`Q&1UGl$e*2pBq!0oROcO6O);pnz%Ve Hthg8es=pC+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/os.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/os.cpython-39.pyc index 25f351fd5b4af16698de22c4caf8925676472fa0..31981d6070b839dcd30d0cda7361ba1b94affd69 100644 GIT binary patch delta 55 zcmeyH)0oSh$ji&c00eHA9X4_cbIN+USj7ZXW|ZXT#S|sxrR3+v1SeJq JHs^HH1pw0D5m*2K delta 51 zcmZq7{hPy`$ji&c00hZ}_8Yl{IVD|FtYQi(V~P^b8aJ%fVkz1Ty*4xD@CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4^m`};5e@&6L5 delta 53 zcmZ3thjG;&M(#vjUM>b8NG`PB$Suw;>7HU0Q&1UGl$e*2pBq!0oROcO6O);pnz-4X H{e2h!r=t;w diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/pywsgi.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/pywsgi.cpython-39.pyc index 4d3c9e3115ef2c290fd495222fe2b457edb7262e..c03230dd0a71610609faa4c92200714ac6aef8ed 100644 GIT binary patch delta 57 zcmdnKg=zN|ChkODUM>b8aJ%fVk-MK=*4M=b8NG`PB$lcE_>6u~`Q&1UGl$e*2pBq!0oROcO6O);pnz(s8 Hd&?vMyAu*u diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/queue.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/queue.cpython-39.pyc index ffec891bb3519f97f1ecfe031a4e312dfa995be3..19c3b8b70d8f7fe205c73b03c8fc457a6db47920 100644 GIT binary patch delta 57 zcmdnBlyTouM(#vjUM>b8aJ%fVk-LLU*2l#vCZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7G0Ha;H!|7;SI delta 53 zcmdnDlyTQmM(#vjUM>b8NG`PB$lbvv>5*a;Q&1UGl$e*2pBq!0oROcO6O);pnz(rb H8=nsVvxE_F diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/resolver_ares.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/resolver_ares.cpython-39.pyc index 32a13a26dfeb692c8e74d18d1617291f09400a07..f60030c867282a8773e517ee1eb4b939b2701b04 100644 GIT binary patch delta 54 zcmcb~a+ifWk(ZZ?0SMeKJ8a~>!YCW!ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`3GYn0Kah(3IG5A delta 50 zcmcc1a+8HSk(ZZ?0SJ-{?Kg5?VU!F=v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{D(0S E0C$8C=Kufz diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/resolver_thread.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/resolver_thread.cpython-39.pyc index e85f4825560ba13c62de56be819fae72f1c5a652..59325cd57683157baa3ccd6ca300aec04b1766a1 100644 GIT binary patch delta 54 zcmaFK@|J}=k(ZZ?0SMeKJ8a~B#3&o)ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` InT;tK0L6I`O8@`> delta 50 zcmaFM@{)x+k(ZZ?0SJ-{?Kg5iVw4O@v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5%*B)p E0DR04C;$Ke diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/select.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/select.cpython-39.pyc index 74d56761a6924787157b4c15a3aa15f1b41a058b..d18891bd00dc54acbe2d18304e70d828663f6ff7 100644 GIT binary patch delta 55 zcmaEB{n45`k(ZZ?0SMeKJ8a}W!zAnLViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`2*8mDFE=46JY=V delta 51 zcmexp{nna0k(ZZ?0SJ-{?Kg6tVUqMrv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{DtYS F6ab}U5!Ev5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJduf49st395h?%x delta 51 zcmZ4FJkOask(ZZ?0SJ-{?Kg7gGD&)-Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@p31~4 F4*+@s5C;GN diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/signal.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/signal.cpython-39.pyc index 7716c52262dd51f82e95102b6210cab436551302..f6e73cdda3dd9a33c94578084ba35d579c428e20 100644 GIT binary patch delta 55 zcmaDZ|5~0qk(ZZ?0SMeKJ8b0UW0UoDv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{a&e69B{k5l{dC delta 51 zcmaDY|6HCsk(ZZ?0SJ-{?Kg7su}ONSSj7}n#uO#yrR3+v6enlo=jX&^W~U}@He=h$ F2>^V_5G?=z diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/socket.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/socket.cpython-39.pyc index b886235e1926550bcad82fa818e63b71763e1622..bd4a5eba9dfaf90623e837395b432897abdee66f 100644 GIT binary patch delta 55 zcmZpb?3CnAJq J{>nUo0|2(D5!wI% delta 51 zcmeB_Y?b6rb8aJ%fVk-LXqHqgZ?CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7F%{_isZ5DOF_ delta 53 zcmZ2|nQ8fDChkODUM>b8NG`PB$lb#)>6>B|Q&1UGl$e*2pBq!0oROcO6O);pnz(rj H|M!^y!t4_L diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/thread.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/thread.cpython-39.pyc index 81a71f8ec51a1ed7165c8eadd3b7b665f30c0cde..f21a45fe7e55fc7007b5650f2b9ed3bad8182126 100644 GIT binary patch delta 55 zcmaDR@k)X_k(ZZ?0SMeKJ8a~B!XoSIViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnS(Ws9RS_>5s&}? delta 51 zcmaDQ@l1j{k(ZZ?0SJ-{?Kg5iVUhGqv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%)=VT F4giy~5N!Ye diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/threading.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/threading.cpython-39.pyc index 6b84d805e096f4ba8807b2d2b999f9645cd20d84..313ab6abf62720117ef76a4665d6467704823167 100644 GIT binary patch delta 55 zcmbQKGgpT@k(ZZ?0SMeKJ8a~Bz$P2uViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnT1`H9{|Nn5ZnL& delta 51 zcmbQMGgF5T!D2j_jb5KY{{r4 zvkAWNpolGPWom&d`(e(mFHlViMK@ozb~lsk&8$CQ)gS#)>wKSk^=`uU;d{>cKF@j1 zdCrf2#>Bs4!fcO>To9&yimv6KFq<`N)pObP&v&(W-EH;K-qz%H)xX%-;&wahOUnvZ z>1kTCRn+N23Co1&A$!gu{pON#A-eVCCyyIMH+`41TWlwhxrkn0T4Ua!^2!c?=k&Ry zhega=7{3Zg1;6%6tJ5iW(1avb9Y1TQK+z){NXP9YcdWqTY*6!4d@3J0{av`GRSA44{)XFsZEdcVdz!xM>IO! z?G9D2I-IJ(mpYjhItG^=N=S&>doNTDLG1^IfxtaXryb3{U!!gQgVh~@^MMWS*C{{X z0;kjF)6_HD&Fsacsq5O99%non*ae05(w_7Nb@R}qYs+FaBiGeS2^kII81-cIa9{R` zQBFCM=?V5JEvw)0wo2qTd8FIpklrrYjl5RC1?&WN0q+2OReZ|B7!Ckj8JE+GA>Yd} zsN=vVz^9b3VkWp}bha~C$KLGf;M{-NE2B@s_#wa-_&L-ms?14zY)r{SLs(cl-m1yK zzu~5EIYtRZR{i6gL_^eBxViUdpnP;IH^zJ#@(W;SATLIorP#bfferPkyeGtRUPto4 zj=VS9Yca>!)dcuF-1j%9&v$A6=p6Exr#$BD2swWVpFHIdk&&6ni_|R zg$8+1b!1LV^Lg^~G)gYMAubP;IMmeUlB8g>-z(Yn@O2en)BN+A9bUWFE9E$4l%5t> zXtvZ6bj7b(A5?v7P8z3`Uyf37S(cdLcRoskWpAe3LYjG!S2w`IhyMZUHt-|x6Yw)f zou}&Z_bpd2!7*2%rWEe|Q<&rrBx&u|sL=XFn112-t2DW`Hc(8U2`ef#7;kVoI#A)t z{R;9jfCI{F05|0()c3$Bz-9gl#TDFv`VH+7muO>U3dI*i)4P=~hzWhRa!^x$w!Ks? zVtOCI+KlopEE5WTQ+vx6Z%u4%O;J({932I)hnyu z$F%$d;D>j=$}BGf9QP;9)L6|N&4ClTX??R0W8|r|ircia w*0%CXn9-EFhngK7jy7-VrY+u9r{vrE8jF4aeUNx`5@Bjb+ delta 1806 zcmZ9Me^8V~7{}S;_B8mXDyn#yYWY0c#5O#RVJ`+eS17-8mf&+a}yzWeO% z``-}zcZh{K!o%+gl7G&ojc3Bbl-Q!G%!{p z`>JT7CnP; z6Tl@jrLNZP=10Y8a~3-${xVxwhnkesXJA5{e=s%v5PU+axuf32;}ArMht(${ADY?V zhuI}zGn=&FddHJ|31;>KJwOU@47e9~UShz&*TL>5rR$QbqB=12NoXNXx5w*}g5~C< zhOy+yjM;6F?Ae6fhU2OJ0VK75{XGV_i`^Sry&orLFI1@7qNCrIFhhy7vX zhla^kIZ~GxU)L)@WV`4|t(0Ad-L0C|#wbS8)GiX&SF!=|^!fvVGg+Me6dRhJdymLunyHa{8eQDi%G;1T0jLL_1v-Hj0BRNO@>L84Ku-+FXmc-a$X(k$ig1oq}CIkHk zn}YeU>bF=8d1v8C7vLjUqd*ye`%rFlcv~BscK#t|MgSa{HqY*9u+x%R(J#hX5tsFn zu2G%NTE@~S0=0EPB#jbKaw@nJt5lUljEeg=EoEb3kkTK(vV1n$l%cL{D}in-nA2 z>2qRo=fs5OB(O`uZ%Gi=oEbJvYLjxmVpoKc=aS>Sd8?@Ty^&wYD6^u4*0_8QpO5o% zA~XMkrJu=JE!bK8gl5Xgx8;}QWpC9&ca+*}`L)C3l2qnkIbQ*R(Hc?T%;B*Wj03*{RN*&RzXNnE z?6PnauaWdy7K)dPcd!ZdW^uP7e-1xd$YQR;kzV0tX_-Ux3o<3HmyT=~m@)D{;4&eh znY??NeN~=)4V+|BEIH{fLR0oRYJGe={4ve{1mXbt7T*y6?0h`XboZ`GD_u0YV}HZv z20(E)rKN@2?M}DD>vg)^Zo7TXcb&3Q!U=W$V>N8qFaj4LCd%n)a5i)9YVajjH~X5o z%gcWhU1jFYAH(MdiSqe1t`@A@n|-xzPEEdm#jgPzAEz@yJNQokwk~_=&s!)W%Ip6J DQ5yDX diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/time.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/time.cpython-39.pyc index 8f20345a834c06287e82e0d1dfcc5e9f58c14d3c..7e329ef1714b8440a8e1688b4234adf960d8aebb 100644 GIT binary patch delta 54 zcmdnUvXzB9k(ZZ?0SMeKJ8b0M$|&pYViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`6goo0I2p6Y5)KL delta 50 zcmdnWvXO;5k(ZZ?0SJ-{?Kg67Wt4PJv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5e3vl- E0AlG7M*si- diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/timeout.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/timeout.cpython-39.pyc index ecbbcc7c25c00a2845445fbe4b68711f0f7232bb..351aa55fa0a1819726ffa2ef3296563310bf25e5 100644 GIT binary patch delta 55 zcmcZ=elMImk(ZZ?0SMeKJ8a~>%Pi~XViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnUUqDIso$W5`q8# delta 51 zcmcZ?ek+_ik(ZZ?0SJ-{?Kg7YWtQ|xv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*t|8 F9RQ~;5nliR diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/util.cpython-39.pyc index ac1129405a9a97a51ed383b94f3340878f1de77c..3ac57d714a1acb847078c94f9cc250a414a2819a 100644 GIT binary patch delta 57 zcmdlvgK_T+M(#vjUM>b8aJ%fVk-L&f*4xD@CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7G&ra7Jf_h=H^ delta 53 zcmdlxgK_5!M(#vjUM>b8NG`PB$X&@K>7HU0Q&1UGl$e*2pBq!0oROcO6O);pnz(r( H(;QC#tUwXC diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/win32util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/__pycache__/win32util.cpython-39.pyc index 604337465124ccb527a8f4aa1e6cf7134e75a78f..8da9410aec37081ff5a98e45ec111dee6c32507d 100644 GIT binary patch delta 55 zcmew;@>PU8k(ZZ?0SMeKJ8b0UV37@Qv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jti$5U1^~h85Y7Mq delta 51 zcmew=@==64k(ZZ?0SJ-{?Kg6But@r(Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@HehjO F0|0u?532wG diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/_ffi/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/_ffi/__pycache__/__init__.cpython-39.pyc index 4177111c175157cf683feef628bd8601c4a87c1b..0ac33a09861d15a835d26afd557eb581ba34a639 100644 GIT binary patch delta 55 zcmbQswvdfGk(ZZ?0SMeKJ8a}uXOsFw&c Jc?aWS768nP5(EGM delta 51 zcmcc5bDM`dk(ZZ?0SJ-{?Kg5yVU!F=v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yoYfy F3jl;G5a9p- diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/_ffi/__pycache__/loop.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/_ffi/__pycache__/loop.cpython-39.pyc index 2de9a66cceb44bbd25c8d9322e95c4e51c5145b3..d94d45a54d717602724a82f029d318a740ff429d 100644 GIT binary patch delta 57 zcmX>(mGSIUM(#vjUM>b8aJ%fVk^3Z*Y=DbZOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;UkOn2M?3m6mF delta 53 zcmX>*mGR_MM(#vjUM>b8NG`PB$bFJY(kI0#rl2yWC^0W3KR2d0IU_$mCnhsHHF5Jt HraSHcz9ka1 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/_ffi/__pycache__/watcher.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/_ffi/__pycache__/watcher.cpython-39.pyc index 4b73ad52d5deaaec376cc508b03c9270966dced7..927819eca967f33102a715c0456f69f2c6ce8f61 100644 GIT binary patch delta 322 zcmX>!o$=UoM(#vjUM>b8aJ%fVkvp7OHrT}~CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; z)p2t*^E)fXsLfe+Hy9ajOm=p7$aVv$x9H|%Ek`BBYmD6KusN`+AoG0KA`RO#lD@ delta 340 zcmX>$o$=6gM(#vjUM>b8NG`PB$Q{ls>7Qa1Q&1UGl$e*2pBq!0oROcO6O);pnz*^1 z`JENxt<8CMHy9ajPIh;A$aWK`ujtlfJx3+R>yrZ=#erlaugK(QC zRB?;FsJJAtq_lYQMMKfaOP&20?@l(M&flLwu5%WRBRuBQw zTl5%2JOU9gg^29HbEJ1hDNOg+*Z?;x&kP k1-AI<EgR}$6%$aIQIek*QhUyb)3W delta 48 zcmdnWw2_HBk(ZZ?0SJ-{?I&{YmJCd>iYcg!DN4*s$Fw&c JS&q4b1pvgy5nKQO delta 51 zcmZ3*zl@(dk(ZZ?0SJ-{?Kg7&Vv>wVv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*ti;^G F0swqF5IFz< diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/libev/__pycache__/corecffi.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/libev/__pycache__/corecffi.cpython-39.pyc index f91983fd839fb6f990e289af963029763c5ecf6f..31f0e3cd3b354b8c896ee499f861467022e79bd8 100644 GIT binary patch delta 55 zcmZq7YR%$K#3UQyViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`5RM?0s!$w66pW{ delta 51 zcmaFn_Q;Jpk(ZZ?0SJ-{?Kg5?Vv-CEgR}$6%$aIQIek*QhUyb)3W delta 48 zcmdnWw2_HBk(ZZ?0SJ-{?I&{YmJCd>iYcg!DN4*s$awvs6k(ZZ?0SJ-{?Kg7AGE4fVSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ze>2G F2LP0I5jp?> diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/libuv/__pycache__/watcher.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/libuv/__pycache__/watcher.cpython-39.pyc index 1fa2d99d8b61c396bcb23adaceb616b3f9fd919e..5567e90c9fa7b8984af81a45817538112fd5ba82 100644 GIT binary patch delta 57 zcmew{jq%SkM(#vjUM>b8aJ%fVk$VxdY>10hOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;Tl%$wW+8Uho> delta 53 zcmew}jq%4cM(#vjUM>b8NG`PB$i0YJG9bk&rl2yWC^0W3KR2d0IU_$mCnhsHHF5JP H=1uMZ%oh@) diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/__init__.cpython-39.pyc index 13a6398e2ca8c74f3d80877f8a476dcff13c3d5f..dbf71368397c4eb853bebb5fa9a11c576126ce67 100644 GIT binary patch delta 55 zcmX?Te$<>hk(ZZ?0SMeKJ8b0s#wr`(ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS&D7BC;;G75)1$U delta 51 zcmX?Ve$bpdk(ZZ?0SJ-{?Kg6NW0ed^v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EXTH7 F6abaO5a|E_ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/_addresses.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/_addresses.cpython-39.pyc index 2148e8002e189e4a1818f8c86b96acbaad8a176e..dc06d7ef72ea9ff2ab4f85cb4dd3159df91a45d4 100644 GIT binary patch delta 55 zcmZ1>zDArok(ZZ?0SMeKJ8a}$%qSb>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8eZ4P5{425*q*j delta 51 zcmZ1@zCxTkk(ZZ?0SJ-{?Kg5SW|Ry|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e46ng FCjfWV5cmK9 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/_hostsfile.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/_hostsfile.cpython-39.pyc index 1c38f39b1e1c1f5eea26e388589fcc8bb9dc7b94..311ce60dfa011f454779db11c6a14391c200b1e8 100644 GIT binary patch delta 55 zcmdlgwo{Bdk(ZZ?0SMeKJ8a~>$t)Y?ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`7g5tI{?f35%>TA delta 51 zcmdlfwpENfk(ZZ?0SJ-{?Kg7YWR?s|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*bNF F4gh~j57qzx diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/ares.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/ares.cpython-39.pyc index e23729c15d38abfbde567d93aea60584719957a6..35b5f576df1092d45824976de0d47e34b29fc55d 100644 GIT binary patch delta 887 zcmZva&u$V?6vn-lT7*!+3Qb3gg<{E6OCl;%&<502s2cyY)^s2t2$O)NbIG02NQ~|z zaqD>jU%-W_OLy)~)J;3_0W@*z#+CEUG-b5T;+J#IJ@?%2es?~Vzm)y;K)`pv`j);H z-uZuom_olo>+!Qz<@f5fT=h<`WpJ%3>ROX;R#zG=&O6oejm08$j{Xd$tTusO2We`J zZA*4h-YeS6X{2+c9DAD2TA@55W>AR&r+|6jB5>M*>Cp||6&H}Z#%~3}ImS{{ie&t* zGQEnt$k=0<>F;p9@wi*-a$(3r0$NND64R^m#)i@Bs(($qJU)N$kTZ*(O;nsPP2VQo zumyT9NfBp4i|dBC4mky&L~o^;@D+qt0eiqLL}~ginJh~mkI&|?RqsoeAfC&it(|N_KP*3>c2LV9)ErF9F{Y{9FPYV0SQ7jPj9m&swKvQ`x^R*(jRlA$+-Xk delta 912 zcmZvZPiqrF7{(o&n2;sdR1@vmg#NR2wWi>fG^R?3iZ$2{yG-jJwXV*Ug zQ9K&(;`;^s3Z)+X3?2lbEC^nOUcGp7-r3S_F?;y&&O0;DJnysL>)+~c9uYZ~!VR$Zt3eKrrSu~Y{ zrr1_-S%k-@U(c0!sU+A0b_$5|h^vSSVu~Y(c|LVn3D*(%olLeu$TTeEN>Zc^A9HU@ zLY4%QLuu=UtGkr>N*_ZnK@1l`(xYa}@3{66#oC$j@e`pIyc=8(OBH?%ekN6TFUz@5 zVUv13n@2k}L>;!}iR?`*Zy|)h5>_hg$pI;YJSyKcEQ>YUPbrJ@9VIEuG*T#~Kk4|k z7Zt?24-hMe8;Hn+JC}x%L=K-mdh$9h@4;feNY>y@{%mcTH-fn7*alPL;rywltD_g& z^VosshNMT@k+}AumgFY@5%?LI|zKY;4 zs={}Af8=P^7T4*WFuWT5v@nC)vxp+%8sauWMyw*%5E^0w@eI*I9406#6;{S(2!-z0 Z?u9$Je~u$a=(^!Jy3U4rUg?g{{{wQv)wBQr diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/blocking.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/blocking.cpython-39.pyc index 928add3a55249687648a23799656bfcb4729d95f..f1f03c3e56ffca7544fb7406a5d2c2da372f66b8 100644 GIT binary patch delta 55 zcmZqS>EPi`Jq J=41KB2mrGg5nBKN delta 51 zcmeC+Y2o2cFw&c JS&5}Y0|4C&5$6B^ delta 51 zcmbOgIW3Yqk(ZZ?0SJ-{?Kg7&W0nj}v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*tj1EJ F0RWPy5X1lg diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/thread.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/resolver/__pycache__/thread.cpython-39.pyc index 6b469337e00e5dc93048aefff1900a1d8c7c31b6..3ae54f17f791c18d8149d24f672052ba9493444d 100644 GIT binary patch delta 55 zcmZn@>k{KmFw&c JS(;mw6#&*35mf*H delta 51 zcmX@2a6o}Ok(ZZ?0SJ-{?Kg6N=aLLgv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EYGdV F3IL2V5HbJ& diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/errorhandler.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/errorhandler.cpython-39.pyc index 2b67911d2201c891269038408a27491165528e98..d5d4048732362d30abe92cc553667a8fc7fd3ef1 100644 GIT binary patch delta 55 zcmX@kb()Jik(ZZ?0SMeKJ8a~xXOxY0v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JyqIwbGXTKZ5w!pS delta 51 zcmX@jb)1Vkk(ZZ?0SJ-{?Kg7QGfIZ1Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ue36L F831`<5Rw1@ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/exception.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/exception.cpython-39.pyc index 6ea2b10ffefde570f164ad37bf4189dbe158be79..e82d238b6b3d1ea48abce752e449159a6f6ce82e 100644 GIT binary patch delta 54 zcmZo;>0;qdlNeV3 E07GjJSO5S3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/flaky.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/flaky.cpython-39.pyc index db8ce4289b641b50cc23f8cf41bb878e316e58f5..fe96eab386627e864e5594693e328f537609a05e 100644 GIT binary patch delta 55 zcmZ1=zC@fmk(ZZ?0SMeKJ8a~ZWs(hXv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?8p?)2>_(Z5P1Lq delta 51 zcmZ1?zCfHik(ZZ?0SJ-{?Kg7EGD!xcSj7}n#uO#yrR3+v6enlo=jX&^W~U}@c4dm^ F1OQ*c4^{vG diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/hub.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/hub.cpython-39.pyc index 7675c02102d73046f9379dead850e63359a79986..391dfb8b36eb85289c48834b02317d8d882a43e0 100644 GIT binary patch delta 55 zcmbQhKZTz=k(ZZ?0SMeKJ8a~B$SfP=ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnU$rR8349c5cmK9 delta 51 zcmbQjKY^b+k(ZZ?0SJ-{?Kg5iWR~`B9TQk(ZZ?0SMeKJ8a|@WR{I^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|6Yt5CF_K5rzN& delta 51 zcmeyU`BsxVk(ZZ?0SJ-{?Kg4@GE0V}Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@wq)KR F2mpjr5MuxU diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/modules.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/modules.cpython-39.pyc index 34e25ae997935815435c7fa6111c9eb6836e3f11..7733ce2e135ac643f5d8c350469e35b6f9f6df59 100644 GIT binary patch delta 252 zcmew%{70BOk(ZZ?0SMeKJ51#MF*$%yd2%NsZ+#U{dTLo}UWr~#W>RWdl?aqqlvcC diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/params.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/params.cpython-39.pyc index 4c6297957cd7994c5c3941bec1ae60c2aaa6809e..b08de84ccae8cdc97306949f14cd061faaf48369 100644 GIT binary patch delta 54 zcmZ3^wwjGQk(ZZ?0SMeKJ8a~h$Rr!;ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` Ic`H*90HLoDH~;_u delta 50 zcmZ3@ww#SSk(ZZ?0SJ-{?Kg5yWReU_v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5ypyR2 E09-~86#xJL diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/patched_tests_setup.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/patched_tests_setup.cpython-39.pyc index e6fc87da37973f84aba2e8064b5727659d8413b1..3488e5f91e6e178b54a8d44459c667bcd52f22e9 100644 GIT binary patch delta 57 zcmex!nX%ytBX=S%FBbz4xLtPG$lbv&o8)2@6Hu8^lAjk-l$e*2pBodLoROcO6XWUa L>bQ9ge?Sxf8Nm~5 delta 53 zcmZp;!uaPhBX=S%FBbz4Bp2Fmz;v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JypHJrCji*n5>@~J delta 51 zcmew)@lJv}k(ZZ?0SJ-{?Kg6FF-eA`Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@-o$i( F69A8w5i0%Oo4_ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnUOi48vx_y5xD>W delta 51 zcmew&^Ff9?k(ZZ?0SJ-{?Kg7YWs(d|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*ve4 F4FH)d5S9P{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/sockets.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/sockets.cpython-39.pyc index e8ae4dace42dd79b105d75f7e81b00b7b4e26c27..fe716897818bd7ccafbf50adf7feaff2e24b2e2d 100644 GIT binary patch delta 55 zcmZ3*wT_EBk(ZZ?0SMeKJ8a};W|9qav5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtj@&D3;>?|58nU) delta 51 zcmZ3-wTg>7k(ZZ?0SJ-{?Kg5WGf4)eSj7}n#uO#yrR3+v6enlo=jX&^W~U}@)@EX6 F1^`-Y4!i&W diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/support.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/support.cpython-39.pyc index 84c37189aa4811628900a64cfe485d01cd1fc883..78b83655aeffe27e0692c8cac5c15f2bbc132dcd 100644 GIT binary patch delta 55 zcmca8b5({rk(ZZ?0SMeKJ8a}GWReYYv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJe6q=Hvq}}5$*s0 delta 51 zcmcaAb5Vvnk(ZZ?0SJ-{?Kg54GD!xdSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2@U_ F8vudq5X%4n diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/switching.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/switching.cpython-39.pyc index 8785ed30e40a14fb079781191a62fc947a3d6ff4..183830d6b19e31b67d935bc330599e1634ce0806 100644 GIT binary patch delta 55 zcmbQovxtW~k(ZZ?0SMeKJ8a}OV3v(=v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9Kw8x2>_$*5bpp0 delta 51 zcmZ3)GmnQmk(ZZ?0SJ-{?Kg58FiVD{Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@j$l5; F1OQ&`56l1n diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/sysinfo.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/sysinfo.cpython-39.pyc index d28779f4a929e17ca0f1335601023ae84525518c..58506d367283b60159e9c5b87beb3887c1a2abad 100644 GIT binary patch delta 55 zcmew>(Jq J?qhw=0RX}I5$^y1 delta 51 zcmZpa{VT(r$ji&c00hZ}_8YmgSS5o}tYQi(V~P^(Ap(Jq JmScHq1OVYK5_A9n delta 51 zcmeCr>(1j&b8aJ%fVk-LgTHqyl^CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7GY7Q;{g4ha(S delta 53 zcmcb-neqH)M(#vjUM>b8NG`PB$X&%E8Jc1hQ&1UGl$e*2pBq!0oROcO6O);pnz(rp Hi(x1L!3Gh} diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/timing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/testing/__pycache__/timing.cpython-39.pyc index eeacc1ec9807ffa193802afb43708c46fae86914..f6d480054de35f122290ab953b38f67abbb380af 100644 GIT binary patch delta 55 zcmew-*CfxK$ji&c00eHA9X4`{Gs%X!Sj7ZXW|ZXT#S|sxrR3+v1SeJq Jwq|nX1pu@J5TO77 delta 51 zcmZpY|0lKtYQi(V~P^!z>%@ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c zi6xX*RnXlv%+)U>*fk_HAl}v2$iYcg!DN4*s$ G6axT`EfEI* delta 48 zcmZo-`p3wf$ji&c00hZ}_7l15Bx6&oVhSo_iW2iu@^fQ~lQZ)3b7C^HQxhjHiva*h CKM&*p diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/_import_import_patch.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/_import_import_patch.cpython-39.pyc index 83d1beda1a36b52576cb916c1df20147b5200658..022388543fac9cfffe204aa2c6124f765abd20e8 100644 GIT binary patch delta 52 zcmcb?c!!ZYk(ZZ?0SMeKJ51z`kxg{5iV3L9D9O)@DN4*s$qx2k(ZZ?0SJ-{?I&_qNrt6Z#S~P=6eZ@RiYcg!DN4*s$3iV3L9D9O)@DN4*s$ delta 48 zcmZ3(w1SB{k(ZZ?0SJ-{?I&`tl8jEViYcg!DN4*s$_Na_Ik(ZZ?0SJ-{?Kg7gFiVD~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2B>| F9003a5#Rs- diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/lock_tests.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/lock_tests.cpython-39.pyc index bc7185555f86ceb4696ba5a45c4f06d4ac8a62ea..5549bc7bc97e6c9de345e24fffecd941afaf2d7d 100644 GIT binary patch delta 57 zcmaF3o$={*M(#vjUM>b8aJ%fVk=vL_Hr&N3CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2t;Q&%Ja3{Vp1 delta 53 zcmaF5o$=vzM(#vjUM>b8NG`PB$ZgCd8JuDjQ&1UGl$e*2pBq!0oROcO6O);pnz%Wd HsVfoyzsV8A diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__GreenletExit.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__GreenletExit.cpython-39.pyc index 1ad42c0e68bda231ee32c1424f42d6f6c51521fe..622f5bed0298193769e4c1767fc425d3b7125d6c 100644 GIT binary patch delta 52 zcmZ3^w3>-Kk(ZZ?0SMeKJ51zWDI4!%6%$aIQIek*QBfDtSJ delta 48 zcmZ3@w48}Mk(ZZ?0SJ-{?I&`tl#EWXiYcg!DN4*s$Fw&c J`4Qt@Q2@z=5?25K delta 51 zcmZ3iKVP3ak(ZZ?0SJ-{?Kg7oW0VX_v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{ETt0 FC;)*h5i|e* diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test___ident.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test___ident.cpython-39.pyc index 7d977c05258ea2c809e0e32e0df43afdfec8eb5a..29c8a41c56578f5bc00feab3ea5fd807cc007d85 100644 GIT binary patch delta 55 zcmZ1}v{r~ak(ZZ?0SMeKJ8a~xXOxX}v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JyqK|#9RRll5p4hf delta 51 zcmZ20v{HyWk(ZZ?0SJ-{?Kg7QGfIZ0Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ue4IY F4ghdP5J~_5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test___monitor.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test___monitor.cpython-39.pyc index 619ff5afab115349758045830edd5db2fa373cb0..2dda2aa6115c73aef7eb2b29362c9a8f133064a5 100644 GIT binary patch delta 55 zcmcbTbR&s7k(ZZ?0SMeKJ8b0M$Rr!>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`6^Sr9su&s66*i} delta 51 zcmcbSbR~&9k(ZZ?0SJ-{?Kg67WReU|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3PkO F4*;iQ5y$`l diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test___monkey_patching.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test___monkey_patching.cpython-39.pyc index db7f557915d1f18eb0b0293e827371095c337c23..1e5e5564cd28d98f2241ddd526088827526459e6 100644 GIT binary patch delta 55 zcmdlezEzw%k(ZZ?0SMeKJ8a~xVU$gFv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyns=V3jn-n5g7mg delta 51 zcmdlgzEPYzk(ZZ?0SJ-{?Kg7QFiOU!Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@UcxBI F1psv=5B2~6 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__all__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__all__.cpython-39.pyc index 44326f3868f22eca6c01aaa04f2a569511f1e692..246fa7b975ace2c7184d3693b50ce874014c8f2f 100644 GIT binary patch delta 185 zcmcaz;v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ zT*fq)(M}*ewJbHSL@z!$zbG|1EiJQ33Mx{RTAZI#mRh72pO}&Y zXQUQQ)?<;Le1}DH@dDD_Rk(ZZ?0SJ-{?Kg4Fw&c Jc^Bh+5dhku5?TNN delta 51 zcmcbsb5n;qk(ZZ?0SJ-{?Kg5yW0Z_av5G0Ej44XYOUciTDNfGF&(Dd;%uY?*ypM6d F2mp~G5jOw; diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__ares_host_result.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__ares_host_result.cpython-39.pyc index 3b1ef9ebee45660e7fbdffb935d79c4f27a82de5..04d35355b7c76d67b89254a5162b109ffd62e9ac 100644 GIT binary patch delta 55 zcmZqVYUSciFw&c J`2$N6D*)uV5~lzF delta 51 zcmew+@=1g{k(ZZ?0SJ-{?Kg6tVUdhav5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{Dq~7 F6#$w!5rhB$ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__compat.cpython-39.pyc index 1d6ad495345db866f85223c4f99f28a2c73d5acc..30da4162cd0a8bf29db1a2a06ce09ff10f0af9f7 100644 GIT binary patch delta 55 zcmX>pa#n;pk(ZZ?0SMeKJ8a~h!YCW*ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc?aV}4gko_5$6B^ delta 51 zcmX>ra#Dmlk(ZZ?0SJ-{?Kg5yVU!F_v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yoYfj F2LOPn5X1lg diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__contextvars.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__contextvars.cpython-39.pyc index 8a2aca4ae8162507c76dc51c7909d24c662cbe9f..116bd231d9f5d54d41abfd8bc1eabfb6c80ee176 100644 GIT binary patch delta 55 zcmZ1(x;B(Mk(ZZ?0SMeKJ8a}Wz$hE%ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3d7u4FKMC650R& delta 51 zcmZ1*x-yhIk(ZZ?0SJ-{?Kg5CV3dqXv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{DSeQ F1^|?W5w`#U diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core.cpython-39.pyc index 6311588c284c2a590def5d548322825dd6a32bb7..62a265624b4c77c57c84239b103832e08145101c 100644 GIT binary patch delta 55 zcmZqE>(b*+Jq J{=g_E3IM+t5tRS{ delta 51 zcmeCuYt!RS%ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc?(k+BLKFK5p4hf delta 51 zcmZ3-v5JE`k(ZZ?0SJ-{?Kg5yV3LeXv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yo0HX F5dd$$5J~_5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_callback.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_callback.cpython-39.pyc index e598ba63c990a217b13076a5009a10c44ef18cfe..fd08c17497fae543096373a1916d2df4770ecf91 100644 GIT binary patch delta 55 zcmaFB{)C-7k(ZZ?0SMeKJ8a~B#weTMViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTzQfBLLU65#;~? delta 51 zcmaFD{(zl3k(ZZ?0SJ-{?Kg5iW0Z_Zv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*S+% F5de+d5W)Ze diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_fork.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_fork.cpython-39.pyc index c05b769e2aadf72e2005dea675f825bd8069d35b..ff7c43e81700b91ee16b353215308936a7379d86 100644 GIT binary patch delta 61 zcmdnRyN{PUk(ZZ?0SMeKJ8a~3WR#6@v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ PoXU8Fg)wTf7TW{>ANLaV delta 57 zcmdnTyNj1Qk(ZZ?0SJ-{?Kg5eGD=3ISj7}n#uO#yrR3+v6enlo=jX&^W~U}@&SX5o L!gy=49@_)})ov12 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_loop_run.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_loop_run.cpython-39.pyc index 4f838d140b2ecfde2ea7ad4703f0d459ce713a18..98400f4b890239b5061c53f36e9287db862f5cde 100644 GIT binary patch delta 55 zcmey!`jwSCk(ZZ?0SMeKJ8b0M&M2GUViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8J~%BLLY05##^> delta 51 zcmey$`jM48k(ZZ?0SJ-{?Kg67XOxUdv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e4kN_ F5de>G5WxTd diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_stat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_stat.cpython-39.pyc index 2b5ccf1273fe317ae17690ea44c14d6cf157e132..c120b088a4adf47b16287126f15ed5e215a607cd 100644 GIT binary patch delta 55 zcmca5bx(>rk(ZZ?0SMeKJ8a}`WRi_>v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyp(Ax7XZ*f5*h#i delta 51 zcmca7bxVpnk(ZZ?0SJ-{?Kg5aGD$|HSj7}n#uO#yrR3+v6enlo=jX&^W~U}@UdgnT F3jl|q5cdE8 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_timer.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_timer.cpython-39.pyc index 80722361204a98df462d76d51df1b1725f6c4db7..659d9df32233ece17f056adb82157f7cc8b999b9 100644 GIT binary patch delta 55 zcmew)|4p7dk(ZZ?0SMeKJ8b0cVUmq?v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyn)Gy7XaOL5&HlD delta 51 zcmew+|4E)Zk(ZZ?0SJ-{?Kg7wFiA$HSj7}n#uO#yrR3+v6enlo=jX&^W~U}@-ooU> F3jmY75ZC|! diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_watcher.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__core_watcher.cpython-39.pyc index 26a17706db1acf78a7fd3a087db98b7fb68f08e7..ec90797f908930bb74d10accc2da80982d1cf0c6 100644 GIT binary patch delta 55 zcmca7{YaWSk(ZZ?0SMeKJ8a}uW|EC}v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?9Mcu8vw(25l#RA delta 51 zcmaDPeNUP@k(ZZ?0SJ-{?Kg5OGf76LSj7}n#uO#yrR3+v6enlo=jX&^W~U}@_GX&S F4FG%`5Gw!x diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__destroy.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__destroy.cpython-39.pyc index 5bdd0d9121ffe0bf956fa24fb31a1a0fc16a7cc6..b01ac20dcaff12684a5ebeaf67026194869ebedf 100644 GIT binary patch delta 55 zcmZ3^v6_QBk(ZZ?0SMeKJ8a~h#3UQ#ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc^gw9BLKB65n})V delta 51 zcmZ3@v7CcDk(ZZ?0SJ-{?Kg5yVv-C?v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yo;%j F5ddy^5I_I` diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__destroy_default_loop.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__destroy_default_loop.cpython-39.pyc index bab2348d715091decd7a222d668f9aa5495bdb5d..42117ec122b583a763dbad82f3e72ca8cc75e6f9 100644 GIT binary patch delta 55 zcmX@WdxV!ek(ZZ?0SMeKJ8a}mVw6pHv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+{S3d3IMxA5f=ae delta 51 zcmX@Ydw`cak(ZZ?0SJ-{?Kg5KF-j(GfIZ1Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@)@Ll` F1pr^a4^;pF diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__environ.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__environ.cpython-39.pyc index ef0a86b357f2d803893df6a06e2994cc5c82ca9f..f42d4e16e974d0dc09efa064d4dd92dccdc5b4b4 100644 GIT binary patch delta 54 zcmX@Za)E_Ak(ZZ?0SMeKJ8b0M&nO$^ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`7vWA0Jo|U)Bpeg delta 50 zcmcb>a)yOFk(ZZ?0SJ-{?Kg7oXOs*}v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{G2fp E0B~Utu>b%7 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__event.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__event.cpython-39.pyc index 794284d98ab2f2f5d27d47a5d1b35a3074f41cca..1dafcba6e113be7ed9589c73baa7e2ea8f0d5b37 100644 GIT binary patch delta 55 zcmX?Dd$g82k(ZZ?0SMeKJ8a}mVwR0?v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+{SEe4FKqv5+wit delta 51 zcmX?Fd$5)}k(ZZ?0SJ-{?Kg5KF-wM|Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@?qasK F1^}Kg5dr`J diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__events.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__events.cpython-39.pyc index 73329fc282c7a709c8e4f18cd5eac4437a26fbf5..a3af375d874702b58cc8e6341689a7c91dd75ca9 100644 GIT binary patch delta 55 zcmeC?@8{=E7~Rxt&YF-3`aDfziE#mO1@`8hF}*{O+}^OzJ_ E0a}3%F#rGn diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__example_echoserver.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__example_echoserver.cpython-39.pyc index 67ddcf02a2c30f7088b6e0160ff0a93aeeb538c4..092dab0866aa8497c057701e926a187ee41f5447 100644 GIT binary patch delta 55 zcmX@heUY0xk(ZZ?0SMeKJ8a~RVwO#Hv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*vIs1OUF(5itM& delta 51 zcmcb}eU_U$k(ZZ?0SJ-{?Kg5qF-s<5vl+H delta 51 zcmZn^_{-0o$ji&c00hZ}_8YmkF-fMRSj7}n#uO#yrR3+v6enlo=jX&^W~U}@zQ?4@ F3IKnx5QhK& diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__example_udp_client.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__example_udp_client.cpython-39.pyc index 4c2072eaf166e4745178de01d17277e040b62a6d..196e631981773c670c1d7ab95f2bb9218fec3fc3 100644 GIT binary patch delta 55 zcmbQhIfauuk(ZZ?0SMeKJ8a}uW0FmEv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?8W591OS`35I_I` delta 51 zcmbQjIf0Wqk(ZZ?0SJ-{?Kg6(F-az-Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@_G5Bm F0svPy4;=si diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__example_udp_server.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__example_udp_server.cpython-39.pyc index 54bf477597e85ba4707c672415b7b87d4c564ff1..7434cf280e1675c93cc15bd47a5397af2ec1ace8 100644 GIT binary patch delta 55 zcmeyw_Kl4@k(ZZ?0SMeKJ8b0s&M2GeViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS(+)F5dh&x5w8FM delta 51 zcmeyy_KA%Fw&c J`8~52CjiY|5&-}J delta 51 zcmdlhwNr{ak(ZZ?0SJ-{?Kg6tW|j<3v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{F&K{ F699yr5Z(X) diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__exc_info.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__exc_info.cpython-39.pyc index 93ac6144b15e6da51520cff620cfa9d7351a66cb..81c480ba53100f7382afb961f28b3090275d4e5a 100644 GIT binary patch delta 55 zcmey(`=6IPk(ZZ?0SMeKJ8a~(Wt5F}v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoX9wf6#&g+5tje} delta 51 zcmey*`Fw&c JnUh(L834cs5XArh delta 51 zcmZ3@vz&)Jk(ZZ?0SJ-{?Kg5iWs;0av5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*!mt F3;=i652647 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__fileobject.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__fileobject.cpython-39.pyc index da8b1a4de8e554999f8598145e34f8f21f0aafac..63dd5edb00e11be18d92c823efacb1f80a6480f2 100644 GIT binary patch delta 57 zcmX@m#(1QSkvox>mx}=i+%7w85{$6;RX delta 53 zcmX@o#(1EOkvox>mx}=ik_+uOa_cZlMy6QB6ja6(CFZ5%=f)H#XXNMS#AIftCTFw&c J`6{C~Hvqmn5t#r0 delta 51 zcmZ1?wLpqHk(ZZ?0SJ-{?Kg67WRwg`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3Q|e F8vu5<5Ox3n diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__greenlet.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__greenlet.cpython-39.pyc index 6fc880d9f2a7c4c23915dd393b8e91e4d46fb148..ebc95c690ded297723da12bb40a9ae25ee6113b6 100644 GIT binary patch delta 57 zcmcaQo9X6kChkODUM>b8aJ%fVkz12RHrmB1CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4^gOGhUF`t%aJ delta 53 zcmcaPo9XIoChkODUM>b8NG`PB$gRmD8J=PlQ&1UGl$e*2pBq!0oROcO6O);pnz%WT HrK1x7uf!3U diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__greenletset.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__greenletset.cpython-39.pyc index 26cda68660a20724a6337067b21085cb72d15702..eb937b9c5e9b78a17d21e2971f475cf4deeadc05 100644 GIT binary patch delta 55 zcmdmMc+ikLk(ZZ?0SMeKJ8a~h$|xJ>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc_$-_H~`Ow5t0A^ delta 51 zcmX?TxYv+7k(ZZ?0SJ-{?Kg5yWt5Ccv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yqA$h F8~}#H5N`kg diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__greenness.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__greenness.cpython-39.pyc index 44d461a4c08e03928d6179e599b3d87b9f131174..911fb5a7678dad351c6eb5ec70f7248ee003e091 100644 GIT binary patch delta 55 zcmbOyv`C0Mk(ZZ?0SMeKJ8a}W!6X~wViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3;j18vwob5t#r0 delta 51 zcmZ1^G*5^-k(ZZ?0SJ-{?Kg6tV3LeTv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{DH}c F4FGmp5Ox3n diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__hub.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__hub.cpython-39.pyc index 998c38982b8a257168ef0f3614b135d61c38a632..543e7d34e5c6a9e866ab448510e4a1598b9d732d 100644 GIT binary patch delta 55 zcmbQAusDG`k(ZZ?0SMeKJ8a}OVwMeav5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9L9W72LQ)c5ySuh delta 51 zcmZ3SFh7Aik(ZZ?0SJ-{?Kg58F-r!eSj7}n#uO#yrR3+v6enlo=jX&^W~U}@j$%Hk F0|0-o5TO77 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__hub_join.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__hub_join.cpython-39.pyc index dcbe733e6b3994ab3a71bf49fc5659989c53a9fc..9c2ea573fee91f83a54807b31b06291a4cc063d9 100644 GIT binary patch delta 55 zcmdlddq|c$k(ZZ?0SMeKJ8a~B!zdf=ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS%7IB4*=4D5w`#U delta 51 zcmX>kyHA!ok(ZZ?0SJ-{?Kg72VU!F{v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EW)&o F2LOo#5R?D_ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__hub_join_timeout.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__hub_join_timeout.cpython-39.pyc index 6fb62ceb1433e30c0ecc7eb031213b2a6a2f644a..85beb51d2a35f91795cbf49fc9f78ba9f629bdbc 100644 GIT binary patch delta 55 zcmZpZ?~>eHlk(ZZ?0SMeKJ51!BE*s}!6%$aIQIek*QwTnk(ZZ?0SJ-{?I&_imyAlWiYcg!DN4*s$42mr_r5pw_l delta 51 zcmaFQ`kIwHk(ZZ?0SJ-{?Kg7AGD?Q0Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ze`43 F1OR|15KsUB diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__issue1686.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__issue1686.cpython-39.pyc index 5f47ed4e72e9bcd3e80ff2c904b6a78c63ebe582..d55b57b2dd0ecc8388d3f431d7c188912a20ccb0 100644 GIT binary patch delta 55 zcmaFK_m+=4k(ZZ?0SMeKJ8a};WRZ<=v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JtjglT3;?`>5Ucqd{US@k(ZZ?0SMeKJ51z$BpdBw6%$aIQIek*Qpd{me_k(ZZ?0SJ-{?I&_Sk_=C=iYcg!DN4*s$dqk(ZZ?0SMeKJ8a~>z$6>#ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3qA6BLLr%5{Cc) delta 51 zcmeyt@r8psk(ZZ?0SJ-{?Kg5?V3G_?v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{DY~1 F5df8g5o7=W diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__issue600.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__issue600.cpython-39.pyc index 05e79a70c837666e9fd0ecf1bbb6de8e7ac8b18c..99f939776ca973d7117600475a2fc94aa19180a6 100644 GIT binary patch delta 55 zcmZqXZs+DsiYcg!DN4*s$q92mq;m5Gw!x delta 51 zcmX@ba*TyLk(ZZ?0SJ-{?Kg6>F-nG~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@)?<`m F1OQ|r4+sDN diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__issue_728.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__issue_728.cpython-39.pyc index fa0082419f11453c9c2df281526cef0627b4210c..ce6a36bd18519c3171779953720e656c6fd501ed 100644 GIT binary patch delta 52 zcmdnXbdZTVk(ZZ?0SMeKJ51z0ARFUi6%$aIQIek*Q#NiYcg!DN4*s$m CKM-F4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__issues461_471.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__issues461_471.cpython-39.pyc index 08d5e4298ee5cea55dfb2d7cf0189b1125acfb94..bcd858e4b9171331bfeaec0e5b74b0f653389a2a 100644 GIT binary patch delta 55 zcmew>*eJxE$ji&c00eHA9X4_wWs*&Bv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J{E|t84FJm}5w-vT delta 51 zcmZn^`YXtt$ji&c00hZ}_8Ym6GD*gySj7}n#uO#yrR3+v6enlo=jX&^W~U}@e#<1n F1^|JR5R(7^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__iwait.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__iwait.cpython-39.pyc index 11b917a39985b0f56a116ad842e8259c39f4c23b..4d55dc437148f5d7f1537135c308d9bef0f45435 100644 GIT binary patch delta 55 zcmbQvJ)4_5k(ZZ?0SMeKJ8a}`VU&$mF F831Sa5QYE% diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__joinall.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__joinall.cpython-39.pyc index bfa6e307a2969632d560a2e504406452a4f91dcf..de82892b124546af8085adff0bc41a4627c51406 100644 GIT binary patch delta 55 zcmcc3dY_d$k(ZZ?0SMeKJ8a}OVw8Fw&c J`6W|=2>|uE68QiC delta 51 zcmX?`cQTJVk(ZZ?0SJ-{?Kg5CWs(d@v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FW)f F1OTc55!L_z diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__lock.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__lock.cpython-39.pyc index 58025afaba2b0ce5779fc14bc643f1a3da8778ea..67e95a94e0eb4720d1fc98f514cb460a90ea8b76 100644 GIT binary patch delta 55 zcmaFE{(+r4k(ZZ?0SMeKJ8a~xW0Vbdv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyok|@2>{K}5tsk~ delta 51 zcmeys{)U}9k(ZZ?0SJ-{?Kg7QF-iufSj7}n#uO#yrR3+v6enlo=jX&^W~U}@UdHIf F1OSCy5On|m diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__loop_callback.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__loop_callback.cpython-39.pyc index 8a71ffe3b6a9e4e7c30fd04b65b48b345c02ae53..9a2fd7a27f48af3660aff009cef7254c325d4c90 100644 GIT binary patch delta 55 zcmX@Yc7lyNk(ZZ?0SMeKJ8a}GWRy*Cv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJe6@hBLKW@5t#r0 delta 51 zcmX@Xc7%;Pk(ZZ?0SJ-{?Kg54GD^mzSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2@hL F5dd{j5Ox3n diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__makefile_ref.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__makefile_ref.cpython-39.pyc index b0406fbdf425c3789db3bcf67a9e5eeed03f7fd3..cebbfd3e6d4ed75bc99304c22cc388dc3adaa5f0 100644 GIT binary patch delta 55 zcmdm!cOZ{Dk(ZZ?0SMeKJ8a|*W0s9~v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*Z9I7y#f-5^Dee delta 51 zcmX?*wpz5l8?4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__memleak.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__memleak.cpython-39.pyc index c4e756ecd245c7ec51a011817134c8daeb6df0f8..ef2e256f06ef09596f3345e2a8c642c6bd04d2d3 100644 GIT binary patch delta 55 zcmX@kd76_uk(ZZ?0SMeKJ8b0UWR{I`v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtjj!$5df{95WWBa delta 51 zcmX@jd7P6wk(ZZ?0SJ-{?Kg6BGE0V~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@He{Z~ F2mojU51Rl0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey.cpython-39.pyc index 826ebc6f1e1a1285b829a7beff0e0ba4ea175ba6..57de6236e89e2ceb9864503d8af953eb982569bf 100644 GIT binary patch delta 395 zcmaE?^<0ZPk(ZZ?0SMeKJ8a~(WRi_^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ z9Luzul`(3vB*z*?{msWXSeV$1fO?CJCtu)FVzk}-nQH?RFGxg_t%x5a;j(!H??EO; zpUFi6evA&24+;p^JA%Z)gcFD*4Q1ljKYLN&?iO=RrA$~?igUOx3va(Si8NT>{ z%HYi0f}GUA($vyaO(ux`=*fqL7fM-z^jL!kI}qUwA|gRV+~hiu3~sPH)j|B2$sa`w L8RI7_i#h-R=8$Gf delta 381 zcmaE^^;nBLk(ZZ?0SJ-{?Kg5;GD(J}Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@PGs86 z%6MzCEXNu~gUzQnSeV$1f%=L}CST!FVzk@*oofRVFGxg_t%x5a;ktPX??EO;-^pbH ze)WzZ3FaahAa#qaI5j6VxunPmqzX(pgIMxF;^n{p|Np-P;{QbfK(3}_kpxJ}4@gAu zrKgsq=9TD`q!yQC=A{?;gJd{B1Sg1K0uekQ!W~4I0f{Jacd(Z5Ou?L-fW(sI49A=t zSCAn^9+N`^?HGe5PZm6=83k(ZZ?0SMeKJ51#MDVynH6%$aIQIek*Q diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_logging.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_logging.cpython-39.pyc index 82c25a396bcb99dd4508f29d7cbcb4d4bd1270a0..518c4462aac11c72031d95abed39cd9598278e5b 100644 GIT binary patch delta 55 zcmcc5^_Yu0k(ZZ?0SMeKJ8a}OVw6pEv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9LC7W0sy`{5VrsT delta 51 zcmaFNb)Snnk(ZZ?0SJ-{?Kg58F-pd!Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@j$-6w F0RVR&50n4^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_module_run.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_module_run.cpython-39.pyc index ee2c840806fc2d76c707b65b0214a6bb4e6647eb..fedae8b3be7dc2dd8b89a7b7c957c87b63ef4dd7 100644 GIT binary patch delta 55 zcmca0e?^`Fw&c JnVtD04*=T=5%T~5 delta 51 zcmca2e?gu*k(ZZ?0SJ-{?Kg5iW|B-uv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*}j~ F2LO=j5YPYs diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_multiple_imports.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_multiple_imports.cpython-39.pyc index 9c2159ef3745f19e181e601ac92129b59633f719..ce6d39c851287870759772fc566b945ca7ae32e8 100644 GIT binary patch delta 52 zcmaFC_=b@?k(ZZ?0SMeKJ51zGmd$dpiV3L9D9O)@DN4*s$Fw&c J`6eSb69Cin5x@Wd delta 51 zcmaFC{)C-7k(ZZ?0SJ-{?Kg67Wt5Cbv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3y}% F2>^<~5S;)3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_selectors.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_selectors.cpython-39.pyc index 0ba6920e9d76d701af877414e24953ef5e410872..3af8104799ad54aa1583cc9e031d142ff6c75c62 100644 GIT binary patch delta 55 zcmZn@>Js8kJq Je#0ci1^~2_5m*2K delta 51 zcmeAYY7^p404{nGp8x;= delta 58 zcmX@gdytnqk(ZZ?0SJ-{?Kg5uF-yj#Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@c4BT| MV!XBaFe?)y0OOhx00000 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_sigchld_2.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_sigchld_2.cpython-39.pyc index a9900b4d77b294f533759efe2ccabddad96a87ab..b3b21bd852eb2d85e4737aa063da97003cfa900d 100644 GIT binary patch delta 61 zcmdnXevq9zk(ZZ?0SMeKJ8b0M$S9laViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c P`6{C}BV*KLM&>;LF|iXm delta 57 zcmX@ezL%Xlk(ZZ?0SJ-{?Kg67WR#3gv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3Ma| Lk@41KR^~kb}8m3a#Q|J)MW delta 57 zcmeC>?BwK5`Sn5bOW| delta 51 zcmcb{d5M!dk(ZZ?0SJ-{?Kg7sFi9q+Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Hep)C F1ORRJ56J)k diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_ssl_warning2.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_ssl_warning2.cpython-39.pyc index 1f2d5ccc2097bf0892497e8d5dc7f5d49e5a2df3..35c200be3139a89c29097e798ea1b796e988c905 100644 GIT binary patch delta 54 zcmeC-nZU!H$ji&c00eHA9VT-BmrZlAiV3L9D9O)@DN4*s$Pyhe` diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_ssl_warning3.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__monkey_ssl_warning3.cpython-39.pyc index 1a4a613bdb58a31dc76e9aa663e615c4ca0b9e8c..919b558f89347b28f24b36439ae93dc8435a69c7 100644 GIT binary patch delta 54 zcmZ3?vz&)Jk(ZZ?0SMeKJ51z$FPr9K6%$aIQIek*Q@~ delta 50 zcmZ3^vzUiFk(ZZ?0SJ-{?I&`-mrP2riYcg!DN4*s$JK I)?`cr0D_JW=l}o! delta 50 zcmbQt+|SIN$ji&c00hZ}_8Ylb86{&=tYQi(V~P^oTSR E06+l_#Q*>R diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__order.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__order.cpython-39.pyc index 83aafe677d1fbf4f11a7412d543b8728e321b272..43b29b5d98ab729a6edbbcc200cd9686d43a9cf7 100644 GIT binary patch delta 55 zcmdljxL=Svk(ZZ?0SMeKJ8a}GW|WO^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJe^U69RRyw5flIb delta 51 zcmdllxLc4rk(ZZ?0SJ-{?Kg54GfIY}Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@p3SJj F4ghpb5Ags1 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__os.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__os.cpython-39.pyc index 4f744dcd59fec4bdd9a2b1000460c23ee2a4b16e..2ed305eb21cdda4e7727973a05f6aa7a771b2f8a 100644 GIT binary patch delta 55 zcmewq@GXElk(ZZ?0SMeKJ8b06VUi7Xv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJb~$vDgf-~63qYr delta 51 zcmews@F{>hk(ZZ?0SJ-{?Kg7gFi8fcSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2GA< F6#$|~5vl+H diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__pool.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__pool.cpython-39.pyc index a56493654495d591c136cfa0af7226644b006ead..7315f04e0eecc46e4722e43caca574e009850691 100644 GIT binary patch delta 57 zcmeyohVlCvM(#vjUM>b8aJ%fVk$WApY`BY6Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;TN%nO46BXAS_ delta 53 zcmeyqhVkb8NG`PB$i0qPGC0L5rl2yWC^0W3KR2d0IU_$mCnhsHHF5Jb H=7m83)WH(k diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__pywsgi.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__pywsgi.cpython-39.pyc index 1fff1200c369594252a749a50cbadf1990fa8d85..f68acbb58cd8792bf0285aa2a41354d56f294483 100644 GIT binary patch delta 57 zcmbRCgL&2uX6{5@UM>b8aJ%fVkvon}Hqyl^CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2tZ+mx>W5Wy4O delta 53 zcmbRBgL&EyX6{5@UM>b8NG`PB$Q{Qf8Jc1hQ&1UGl$e*2pBq!0oROcO6O);pnz*@* HZOT^w!?qH- diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__queue.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__queue.cpython-39.pyc index ffd0bc641dfb09c8b8515bedf7abfb07320da002..c3ee31cfba48e7d00ab829511a4a1005350caea8 100644 GIT binary patch delta 57 zcmX@u$au7okvox>mx}=i+%7w85{$mx}=ik_+uOam}C=NtYQKxGfMLFVu}*;Qu1?Sf|E1y^K)W6yFw&c J`5Kcu9{|9#5vKqE delta 51 zcmZ3eG*^i`k(ZZ?0SJ-{?Kg67Vv-C`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e2dAQ F4*+=l5QG2# diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__refcount_core.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__refcount_core.cpython-39.pyc index d5d92439221ce1d39243687e6720f3d06456f80e..450a34f2b10ea9ce7ad57d650ad50d0ff1d1f5c5 100644 GIT binary patch delta 55 zcmeyt@rQ#uk(ZZ?0SMeKJ8a|*Wt2^Dv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*>&K2>{Pl5*`2m delta 51 zcmeyv@q>dqk(ZZ?0SJ-{?Kg6VGD^mzSj7}n#uO#yrR3+v6enlo=jX&^W~U}@u4Vks F1OSHm5c>cC diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__resolver_dnspython.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__resolver_dnspython.cpython-39.pyc index b195663d125b24019880de0ca9e7af719a322efa..88234df2f48d58abe2a8bc31cb17da67f93f8c2b 100644 GIT binary patch delta 55 zcmey&^PPt~k(ZZ?0SMeKJ8a};VwO#Hv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtj6ri3;@9_5Y7Mq delta 51 zcmey)^O=V`k(ZZ?0SJ-{?Kg5WF-s<le@>n|k(ZZ?0SMeKJ8b0M&nO$|ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`7z^jUI5iw60iUO delta 51 zcmX>ne@dP^k(ZZ?0SJ-{?Kg7oXOs+0v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{G9PQ FF93`y5sd%< diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__selectors.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__selectors.cpython-39.pyc index a07758c268905b7b1dbb79986fc5526b2aa19bf5..36420751b434022b88114685f07b3e38500a95a7 100644 GIT binary patch delta 55 zcmaDP@l1j{k(ZZ?0SMeKJ8b0M%P1S;ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`5|K?7XaJZ5@-Mb delta 51 zcmaDR@koL@k(ZZ?0SJ-{?Kg7oWt5Cav5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FJeg F3jmTH5k&w1 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__semaphore.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__semaphore.cpython-39.pyc index 348c76f86cf990c8b02e301a18c3b9bd517bd4a6..60fc9615670d13e69e5a93f7ca8035af5430e826 100644 GIT binary patch delta 55 zcmeB=ogB-Z$ji&c00eHA9X4{WWRi_>v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Je3t2uHUQH85{Li* delta 51 zcmbOn+aJrF$ji&c00hZ}_8YlZGD$|HSj7}n#uO#yrR3+v6enlo=jX&^W~U}@zQ}Y) F8vu#^5oG`X diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__server.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__server.cpython-39.pyc index 83d9838cc76f1d898452f14cacac40fef172405c..6635ca8d8d91abdd580444b561f4c73791789672 100644 GIT binary patch delta 57 zcmbO}gK_o@M(#vjUM>b8aJ%fVk$W$TY@~}-Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;T}EN1Qi^y(7H delta 53 zcmbO|gK_!{M(#vjUM>b8NG`PB$i0_EGBm|1rl2yWC^0W3KR2d0IU_$mCnhsHHF5J( H7BhDMse%!v diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__server_pywsgi.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__server_pywsgi.cpython-39.pyc index 277c032aa775c54abbd5dd55bb0bec01171d3d3f..b5fe6ac6a0cd0b0df7ce1d95ea402856292b6323 100644 GIT binary patch delta 55 zcmeB{?U&_FW delta 51 zcmeB|?Uv1 F1^{a55S9P{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__signal.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__signal.cpython-39.pyc index 0178bc3fefee751ab4417cb8cd722280f99868fb..5455fb03e01d155751c8e08a46ef344b06431db4 100644 GIT binary patch delta 55 zcmaDP@=Sy~k(ZZ?0SMeKJ8a|*Wt5F{v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*>&70|3eL5%T~5 delta 51 zcmaDR@<@a`k(ZZ?0SJ-{?Kg6VGD?P~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@u4R15 F0RVym5YPYs diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__sleep0.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__sleep0.cpython-39.pyc index 3e6a790e114aa8b88a26a496ef7b84b9929806de..a20120f21b02559b2c9dd0de32e14827c27e11c0 100644 GIT binary patch delta 52 zcmcb?bccyMk(ZZ?0SMeKJ51!hBOB>r6%$aIQIek*Qb8aJ%fVk$V=iY@~}-Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;T<%rjg82)q+h delta 53 zcmcaLiSgPbM(#vjUM>b8NG`PB$UTc$GBm|1rl2yWC^0W3KR2d0IU_$mCnhsHHF5JH H<{7R4ybTgC diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_close.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_close.cpython-39.pyc index 973caaa68d75d0f9a299bc6f0a52b93f4cab46d2..11b202b0052ab7efb8fa97306ae6a6ce95950cb1 100644 GIT binary patch delta 54 zcmeyu|AU`9k(ZZ?0SMeKJ51#MDI4!%6%$aIQIek*Q&0{{R3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_dns.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_dns.cpython-39.pyc index f24e11b6cf65ae4da50773b61dba6ab038185e13..8517dd39e9bcfb977754a8a55aee332c01cde5da 100644 GIT binary patch delta 57 zcmZoa&)9vQkvox>mx}=i+%7w8bUtc+mr+V3IP+k delta 53 zcmeA^&)9yRkvox>mx}=ik_+uOa-V0Dj7+hLDX5GoO3X{i&y6Wg&dATtiOI}PP2BvQ HZAt~Nk(ZZ?0SJ-{?Kg6lGD$|ISj7}n#uO#yrR3+v6enlo=jX&^W~U}@p3CIU F2>^z65O@Fp diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_errors.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_errors.cpython-39.pyc index 7a04508724486269b811d0dc6a63887879bea7b4..77ae4d630b47ab25694e13c14ce5b55c432c59e4 100644 GIT binary patch delta 55 zcmZ3^xtfzZk(ZZ?0SMeKJ8a}W&Lo@QViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8CrXMgYHd5+DEo delta 51 zcmZ3@xtx)Kk(ZZ?0SMeKJ8b0EW|EC@v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?9cRy2>`B95jg+= delta 51 zcmdnXwUdiGk(ZZ?0SJ-{?Kg63Gf76ISj7}n#uO#yrR3+v6enlo=jX&^W~U}@4rY4A F1ORA}5EcLc diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_send_memoryview.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_send_memoryview.cpython-39.pyc index 83dd538a7e7909aa645f860f8df873ee7856fbf3..66c5d33084b1d36ba4d20e190f33e6b4353ae066 100644 GIT binary patch delta 55 zcmZ3vyz89k(ZZ?0SJ-{?Kg7kF-oSUSj7}n#uO#yrR3+v6enlo=jX&^W~U}@4r9E| F0sv&g5BdNA diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_ssl.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_ssl.cpython-39.pyc index 6904fb4aba1c86e67702224fa52e5d0af3166cf6..dec2219fef87b5593a142df6fa868462d390cd93 100644 GIT binary patch delta 55 zcmbQswUCQDk(ZZ?0SMeKJ8a|@V3Lh>v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{K-C2>_l>5X%4n delta 51 zcmZ3;HJ6J!k(ZZ?0SJ-{?Kg4@FiA$HSj7}n#uO#yrR3+v6enlo=jX&^W~U}@wqSb6 F1OQpq52yeD diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_timeout.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__socket_timeout.cpython-39.pyc index 31b7d2cb22408009795befe13f4a87f10f2be8be..6855028e98f5b05eca5ead0d9f902963c06b0441 100644 GIT binary patch delta 55 zcmeyz+r-D6$ji&c00eHA9X4`zFv=#nSj7ZXW|ZXT#S|sxrR3+v1SeJq JUc(r~3IM>G5pnFw&c JnS;rU834$o5dr`J delta 51 zcmX@awU3KCk(ZZ?0SJ-{?Kg5iVU&zav5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%)?~H F3;=)G58nU) diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__ssl.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__ssl.cpython-39.pyc index cb9866b77c79d1ab512e723f0eba6fe7e5f7df62..730a57f147b72d6211069fe0abee668cd8510c07 100644 GIT binary patch delta 55 zcmaDR`AU*Ik(ZZ?0SMeKJ8a~>!6+N%ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`48hOE&$?96AJ(U delta 50 zcmaDQ`Am{Kk(ZZ?0SJ-{?Kg7YV3Z6>v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*#Po^_ E0E8hB=l}o! diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__subprocess.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__subprocess.cpython-39.pyc index d7763f6f0574fde9e9bed85d9309a30fd0883d94..164673e84c4bb444e564176de9b95928cb5f43d7 100644 GIT binary patch delta 55 zcmbPNy{MWyk(ZZ?0SMeKJ8a~B&MX`2ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnVV&@B>?NF5sv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe Iynv|%0H5R$E&u=k delta 50 zcmZ3%wuFs4k(ZZ?0SJ-{?Kg7QFiEDSSj7}n#uO#yrR3+v6enlo=jX&^W~U}jUc%G@ E09uz23jhEB diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__subprocess_poll.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__subprocess_poll.cpython-39.pyc index 90176621682cd16f45e703044ad6324aa93e540e..170e7069a63afbf7113014d496d5a4002bb9d15e 100644 GIT binary patch delta 54 zcmcb`e2qb5e#ok(ZZ?0SMeKJ51z$CmZKt6%$aIQIek*Qpb5w>qk(ZZ?0SJ-{?I&`-lZ;BSiYcg!DN4*s$v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJb`HsBLKfA5vu?I delta 51 zcmcb>afX9Ck(ZZ?0SJ-{?Kg7gFiD1{Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2D<; F5de4R5QqQ( diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading.cpython-39.pyc index 0d1af8201f3b9a6ee1c84a466141e5543ade8b4c..ac8a2c07448d01d3333585ad3b22b2037a7a3698 100644 GIT binary patch delta 55 zcmca7`bd;Jk(ZZ?0SMeKJ8b0M&L|t>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8FdnCji#@5zhbs delta 51 zcmaDPdQX%)k(ZZ?0SJ-{?Kg67XOxUcv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e4mk- F69A2k5Ucb8aJ%fVk-L^vHqON=CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7Ge*8i>m@P!j6 delta 53 zcmZ27opHf*M(#vjUM>b8NG`PB$X&}S8I@ucQ&1UGl$e*2pBq!0oROcO6O);pnz(r> H>wi}OrNt5i diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading_before_monkey.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading_before_monkey.cpython-39.pyc index 2f7bfb44ccaf1a0ace953426e8060cb548eb90de..79d2ee0a0ec79ab5889a9ebec48364afd5a610e5 100644 GIT binary patch delta 55 zcmX@cc8ZNVk(ZZ?0SMeKJ8a}$%_y7YViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8;DeBLK&95#s;= delta 51 zcmX@bc8rZXk(ZZ?0SJ-{?Kg6-W|T}zv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3`MF F5deQT5WoNc diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading_holding_lock_while_monkey.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading_holding_lock_while_monkey.cpython-39.pyc index e84bb7b017c41b579f30c0fe76d9f1510fcd79fa..498ce7982c436cbdbf327502b4ab2f88e57cd716 100644 GIT binary patch delta 52 zcmX@hbdiZWk(ZZ?0SMeKJ51!>CR^rW6%$aIQIek*Qtv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT)-5@3IM!C5gz~m delta 51 zcmX@be~h0yk(ZZ?0SJ-{?Kg7!FiB>nSj7}n#uO#yrR3+v6enlo=jX&^W~U}@E@28| F1psv|5BvZC diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading_native_before_monkey.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading_native_before_monkey.cpython-39.pyc index ff06ec29f73c131d209f2408e6a440129f339ac0..205795396c0fa93288203fd452b94ed5be8772ee 100644 GIT binary patch delta 55 zcmeyz-z31D$ji&c00eHA9X4|3GRhXZSj7ZXW|ZXT#S|sxrR3+v1SeJq Jp2(QX1^~Zu5o`be delta 51 zcmZn?_{Yzk$ji&c00hZ}_8Yl#86|U5tYQi(V~P^<4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading_no_monkey.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threading_no_monkey.cpython-39.pyc index 3efb2d2828f5d7ffbec5ef036e488a1dfc72438e..6bb197e805504461a41981df5cbf5c1da8761ccd 100644 GIT binary patch delta 55 zcmeC@n9RYQ$ji&c00eHA9X4`TGRda7Sj7ZXW|ZXT#S|sxrR3+v1SeJq Jp379k2mq+25e@(V delta 51 zcmbQt(a*u1$ji&c00hZ}_8Yk?nIw}^tYQi(V~P^Fw&c J`5vPFw&c J`8;bl7XZZA5yk)j delta 51 zcmZ3buuOqFk(ZZ?0SJ-{?Kg6-W|d4yv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3>b8aJ%fVk$VQSY^;k_Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;T9%>Bs#9mNyM delta 53 zcmX?qj`8$4M(#vjUM>b8NG`PB$UTEuGBU*~rl2yWC^0W3KR2d0IU_$mCnhsHHF5I+ H=Kf>=&xR7G diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threadpool_executor_patched.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__threadpool_executor_patched.cpython-39.pyc index 676231b100d70d19e71d872b5fb2748e079ed3eb..53e4b81dca48d727af3eab5f9aab054b8ed4b422 100644 GIT binary patch delta 55 zcmdnbdYF|vk(ZZ?0SMeKJ8a~xVwBBuv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJdaV45dgdx5gz~m delta 51 zcmX@ix}TLhk(ZZ?0SJ-{?Kg5)F-m5oSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Uc{)# F2mo}@5BvZC diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__timeout.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__timeout.cpython-39.pyc index 0ba275cc840231f283d2a497d14e99b00f250eba..7ffcc4fda9ac3c6fcdddf4bcf0a5a1fdaecc706c 100644 GIT binary patch delta 55 zcmZ3jxn7eyk(ZZ?0SMeKJ8b0M%P1S=ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`61&eAppz<5^Dee delta 51 zcmZ3lxmuGuk(ZZ?0SJ-{?Kg7oWt0p{v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FL#O F5CDUM5l8?4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/__pycache__/test__util.cpython-39.pyc index 37854a1dc0488550d5a31df0af0ae20caf1c0db8..18c4f6147f924e8aa16a6e88c130510c071eae86 100644 GIT binary patch delta 55 zcmccVb=QkKk(ZZ?0SMeKJ8b0s#wZ)^ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS&GSC836Fn5&r-H delta 51 zcmccXb<>MGk(ZZ?0SJ-{?Kg6NW0VX|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EXQQ8 F3;?A45ZnL& diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/monkey_package/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/monkey_package/__pycache__/__init__.cpython-39.pyc index 93f4329ba805780ae0e740ae6468a1a4d38e07e1..419feff3982d0f3b2923b12cc4e9399538ad36d2 100644 GIT binary patch delta 54 zcmey*+|0tA$ji&c00eHA9X4`TG0LX6Sj7ZXW|ZXT#S|sxrR3+v1SeJK Ip2wI70I5`OnOq$ji&c00hZ}_8YmY7$p-@tYQi(V~P^JK I=3=S?0HLQ4#{d8T delta 50 zcmeBS?O^3jHq)$ delta 50 zcmbQnHi?Zpk(ZZ?0SJ-{?Kg6#F-hj8Sj7}n#uO#yrR3+v6enlo=jX&^W~U}j?qliz E08yO}#{d8T diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/monkey_package/__pycache__/issue302monkey.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/monkey_package/__pycache__/issue302monkey.cpython-39.pyc index f0cba49904543430c26204651ff3b6832bfb229a..4470f54beded9d7cd838a7e80fd6626ed92cf877 100644 GIT binary patch delta 54 zcmcb@a)X6Ck(ZZ?0SMeKJ8b0M$|#%VViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`6gpE0K1kE@&Et; delta 50 zcmcb?a)pIEk(ZZ?0SJ-{?Kg67Wt2=yv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5e3!8r E0CV*a&j0`b diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/monkey_package/__pycache__/script.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/monkey_package/__pycache__/script.cpython-39.pyc index 47196ef2037e7095b14cfd71a1a4fd2ff8348f7d..830ed110af791353ad30fa34d9f16dba21c65cf1 100644 GIT binary patch delta 55 zcmeBWoyf|a$ji&c00eHA9X4_YFv=#mSj7ZXW|ZXT#S|sxrR3+v1SeJq JE@6~p1OT3%5K{mE delta 51 zcmbQp+RMtF$ji&c00hZ}_8Yka7$xIUtYQi(V~P^Fw&c JnT0u(5dhr;5t9G_ delta 51 zcmaFM@sfi(k(ZZ?0SJ-{?Kg5iV3I6Mv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%)y+> F2mq3t5O4qh diff --git a/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/monkey_package/__pycache__/threadpool_no_monkey.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/gevent/tests/monkey_package/__pycache__/threadpool_no_monkey.cpython-39.pyc index d865d5f566c644b51754836fe0a98f4669cdf9c0..be073643bf66d7b40dee52e65b89992ae6c6fd8c 100644 GIT binary patch delta 55 zcmZqY=;q)~nPdxGtYQKxGfMLFVu}*;Qu1?Sf|E1y^K)W6yR diff --git a/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/__pycache__/__init__.cpython-39.pyc index b62c003f214457b9aa0a9a5baef0d7346716895a..eb212fcc31f9531a407bbae8d3d5c46bb47ea748 100644 GIT binary patch delta 55 zcmZo-ZDZw5y^@Fw&c J`8m^mCIG%c5*7de delta 51 zcmZ3*y^NbXk(ZZ?0SHnG?Kg5CW|9m_v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{F-S$ F699Ib5b^*3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/__pycache__/utf8validator.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/__pycache__/utf8validator.cpython-39.pyc index eb833a693793ce50003b29ef067ffe37b8ff7f28..4a0ecb985dc73bf0e4f496d9c2f2a1837394ade1 100644 GIT binary patch delta 55 zcmcbw|5%?pk(ZZ?0SG)UJ8b0k;F67Xv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoWoVj3jos_5wHLN delta 51 zcmaE?e_x+Fk(ZZ?0SHnG?Kg6Ja7jj{Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@F5oKW F1ptaY5R3o- diff --git a/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/__pycache__/utils.cpython-39.pyc index 46ef731bc4cbc55dac1e48dde712765da3c35eb1..7f7584498ff94596965d6ecc96c6dbb729a97d43 100644 GIT binary patch delta 55 zcmX@Yd4iKWk(ZZ?0SG)UJ8a};W|9qcv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtj;u-2>`0^5UT(H delta 51 zcmX@Xd4!WYk(ZZ?0SHnG?Kg5WGf4)fSj7}n#uO#yrR3+v6enlo=jX&^W~U}@)@GW^ F1OR1i4~GB% diff --git a/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/__pycache__/websocket.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/__pycache__/websocket.cpython-39.pyc index 314d59e3082d27de21900cdc70cd2cc4c16a406e..81e6341c235c0bfe4e372f985a4af112823ea82d 100644 GIT binary patch delta 55 zcmbQ1IxCesk(ZZ?0SG)UJ8a};VwH__v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtj1cP3jn@E5e)zU delta 51 zcmbQ0IxUquk(ZZ?0SHnG?Kg5Wu}X%fSj7}n#uO#yrR3+v6enlo=jX&^W~U}@)?zKt F1ps$C59t5^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/gunicorn/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/gunicorn/__pycache__/__init__.cpython-39.pyc index 37411a32b77d9b09ccbd1d33735aca43234ce64c..de97d5f5b78cd926903311852a721c3ea960a1d1 100644 GIT binary patch delta 52 zcmdnNxQCHDk(ZZ?0SG)UJ51!Zkxg{5iV3L9D9O)@DN4*s$3iV3L9D9O)@DN4*s$cC delta 51 zcmcc1eUqCzk(ZZ?0SHnG?Kg6>GfGCKSj7}n#uO#yrR3+v6enlo=jX&^W~U}@)@NMD F0swFb57z(y diff --git a/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/protocols/__pycache__/wamp.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/geventwebsocket/protocols/__pycache__/wamp.cpython-39.pyc index 10d6dd240ca176c1d450a13734c4a57457868786..99b759fc6dae2310f87ee4f266574b2ea3c18e5c 100644 GIT binary patch delta 55 zcmca>`OuO(k(ZZ?0SG)UJ8a~>!YCW(ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3K`uDFEz;6Gi|4 delta 51 zcmaE8dDoIVk(ZZ?0SHnG?Kg5?VU&zYv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{D<+W F6ab-F5+VQq diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/__pycache__/__init__.cpython-39.pyc index 6b4bae53f4677861951aa8f7ee523bf608e94ff3..25661c7064ea24877fe9b4b9f38cc1b323e221fb 100644 GIT binary patch delta 54 zcmdnbc9@Mjk(ZZ?0SMeKJ8a}$&mFw$` I`7%=u0I#PJng9R* delta 50 zcmX@iwx5kVk(ZZ?0SJ-`?Kg6-XOi?yv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5e4Qx= E0BG?Lb^rhX diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/__init__.cpython-39.pyc index 6aed72126ec4d9757153687bd779fd59490db1ee..7966ae902013c6ffc72a488b0acdc5cff298273d 100644 GIT binary patch delta 52 zcmZ3-xQUTFk(ZZ?0SMeKJ51!ZkqvjTiV3L9D9O)@DN4*s$xKk(ZZ?0SJ-`?I&{ENCu}^#S~P=6eZ@Rz_v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*l-o1pvqr5nliR delta 51 zcmdmQx!aOEk(ZZ?0SJ-`?Kg4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_cpp.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_cpp.cpython-39.pyc index eba83d379b2d71424e0e9e50a8d968ca47024145..7266c392694aa86ba86b61126cb0eb2a399c4e26 100644 GIT binary patch delta 55 zcmX@Xc7}~Rk(ZZ?0SMeKJ8a~B#V8x@ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnUBee5dh0&5f%Ud delta 51 zcmX@Zc7lyNk(ZZ?0SJ-`?Kg72Vw4O{v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EW~8R F2mpdZ5Apy2 diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_extension_interface.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_extension_interface.cpython-39.pyc index d7471267bc49e3d5344046649f5f998fb5f5dbc9..456ab84463612f73a5308ea11a3152e79bd261e5 100644 GIT binary patch delta 55 zcmcaEeOsD4k(ZZ?0SMeKJ8a}W%qW}gViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8neUZUEcA65jv- delta 51 zcmcaDeO;P6k(ZZ?0SJ-`?Kg5CW|T}$v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{F?Ct FHvo~@5xW2Y diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_gc.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_gc.cpython-39.pyc index 23c7874c4f9cd581c4cedc0eabce7db6d9523a6b..f921fab1f579a55269cd1a64ac81b2f728a72d05 100644 GIT binary patch delta 55 zcmca0c14Ukk(ZZ?0SMeKJ8a~h&L|t^ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc{k%!P5{ia5&-}J delta 51 zcmca2c0r6gk(ZZ?0SJ-`?Kg5yXOs*|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yq|F@ FCjf*Y5ZwR( diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_generator.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_generator.cpython-39.pyc index 99dd34b66bd99366c51f592663c7e3007d8bff86..e1795692df7205374e8ac6eb9c263b247f17c7df 100644 GIT binary patch delta 55 zcmZ1>xJHmWk(ZZ?0SMeKJ8a}OVw8<_v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9L5;L4gjh85T5`5 delta 51 zcmZ1@xI&OSk(ZZ?0SJ-`?Kg58F-k_JSj7}n#uO#yrR3+v6enlo=jX&^W~U}@j$#aA F2LNP94|@Or diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_generator_nested.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_generator_nested.cpython-39.pyc index 8d80095f2949699d797b6c36c711fc970eea381c..bb6b38d97418fb03d639fbb3d6504bd63bcc0a74 100644 GIT binary patch delta 55 zcmX@Dd0vw{k(ZZ?0SMeKJ8b0M$tauRViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`7Yx-ApqKb643wv delta 51 zcmX@Fd0LY@k(ZZ?0SJ-`?Kg7oWRy%uv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{E+dT F5CD+85v>3K diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_greenlet.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_greenlet.cpython-39.pyc index 5a4391efe78bfc24c355a38b1480eaded91793d5..ece919beb1b6b837847dd5582f598ad7748f27f9 100644 GIT binary patch delta 57 zcmcb1i1F4TM(#vjUM>b8aJ%fVkvo!6Hpay&CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2tzb8NGi17$Q{Wj8IfWYQ&1UGl$e*2pBq!0oROcO6O);pnz*@< H@n$>##v&4D diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_leaks.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_leaks.cpython-39.pyc index 587498da7730b163e105579a20390065baeff0e7..b75667ad4dfea51b1cfd30c7a5dc82980ea13569 100644 GIT binary patch delta 55 zcmaDP@l1j{k(ZZ?0SMeKJ8a}W!YCW*ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`2}MY7XaLa5^Mkf delta 51 zcmaDR@koL@k(ZZ?0SJ-`?Kg5CVU!F_v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{D!fL F3jmUn5l8?4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_stack_saved.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_stack_saved.cpython-39.pyc index cabad9981af2a0e1065c7832e4457597d98bb35f..88a07e246af1c28cca65b708c0bf83a07d7c6cb5 100644 GIT binary patch delta 55 zcmcb@c7u&Ok(ZZ?0SMeKJ8a}`Vw8<{v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyo_-jBLKz15!nC$ delta 51 zcmcb?c7=^Qk(ZZ?0SJ-`?Kg5aF-k_KSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ud6bM F5deL_5VZgR diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_throw.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_throw.cpython-39.pyc index d33c01fabbd7915047f78e7a8e7e9e9212cbea08..74c3fae438963ed67930201d622a45f443ce2b84 100644 GIT binary patch delta 53 zcmZn=ZxQECZxH8BSd DXVwuO diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_version.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_version.cpython-39.pyc index 1e6b69ee494fb7e178910feea0a9d7a6b424e67a..c9726680aba55ec95b8d8010e4dd65ee92e62c75 100644 GIT binary patch delta 55 zcmeyu{ezo3k(ZZ?0SMeKJ8a~ZW|ob1v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|p%v2>`^Z5nTWP delta 51 zcmeyt{e_!5k(ZZ?0SJ-`?Kg5uGfRf2Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@c4pqn F1OR;`5IFz< diff --git a/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_weakref.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/greenlet/tests/__pycache__/test_weakref.cpython-39.pyc index 6f3838a63b0cef5d33d3ad6e1c2817a028631b93..a01f7b8db607f23a79963fc3c134defc0f87bd30 100644 GIT binary patch delta 55 zcmdnYx1EnWk(ZZ?0SMeKJ8a}GVU&$_v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJcDsID*(7Y5qJOq delta 51 zcmdnax0#PSk(ZZ?0SJ-`?Kg6lFiM7}Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2Iks F6##Ke5L5sF diff --git a/IKEA_scraper/.venv/Lib/site-packages/idna/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/idna/__pycache__/__init__.cpython-39.pyc index 59ef6aa0a87f1c3a8e99686cee10d3c77fa8c0a2..700f1362ccfce44b5b5b421ec8ef366ac631c6d8 100644 GIT binary patch delta 54 zcmdnawwsMRk(ZZ?0SIg^J8a}W$t3IRViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`7M(d0Im%YjsO4v delta 50 zcmdnZww;YTk(ZZ?0SKDo?Kg6tWRmnuv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{E^8E E0BaTyg8%>k diff --git a/IKEA_scraper/.venv/Lib/site-packages/idna/__pycache__/codec.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/idna/__pycache__/codec.cpython-39.pyc index ccae9bc3d0cc272db80e4070208a9c9fd1ab146d..23eb6677a806c5bb397206caf7ba17d8c9305ed2 100644 GIT binary patch delta 55 zcmZ1`wn~gUk(ZZ?0SIg^J8a~(V3PH6v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9K&>q0|2QQ5f1b8u(|B8k$aZEtgnkzOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;T<{!7>ZAu|*1 delta 53 zcmaF1hVjuFM(#vjUM>b8XpXnv$UVzn(lf;>rl2yWC^0W3KR2d0IU_$mCnhsHHF5JH H|0Qey)*ce$ diff --git a/IKEA_scraper/.venv/Lib/site-packages/idna/__pycache__/intranges.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/idna/__pycache__/intranges.cpython-39.pyc index f6e93d4f71d7cc69f86a066256c1ac7102c4e4ae..da9b7bb4693c08527f4ef19106dbcf6714f11808 100644 GIT binary patch delta 55 zcmZ3(w}Fp4k(ZZ?0SIg^J8a~>&MfQaViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8Ts6GXTLq5wQRO delta 51 zcmdnMw}y{9k(ZZ?0SKDo?Kg5?XO{Fzv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{GZv7 F832715T*bC diff --git a/IKEA_scraper/.venv/Lib/site-packages/idna/__pycache__/package_data.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/idna/__pycache__/package_data.cpython-39.pyc index 33cde9937124cd4e0449d8bf8ee39e08e2ae3733..a05f78d91a1196a6742f301016fbadc84400efbf 100644 GIT binary patch delta 52 zcmdnZxSx?bk(ZZ?0SIg^J51#Emko5WiV3L9D9O)@DN4*s$;V9R6cBU( delta 48 zcmdnbxSNqXk(ZZ?0SKDo?I&{kOZui*#S~P=6eZ@R!=UM>b8u(|B8k^3*Fte=ZjOh9EuNq$~TQDR<7er`-~az=iBPK>9w Tt7EewSGyt?<90!=UM>b8XpXnv$o-d7(ksO(rl2yWC^0W3KR2d0IU_$mCnhsHHL+Qh Pt6i0gal0xP(;))@k-Zdn diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/__pycache__/__init__.cpython-39.pyc index 86883c31e512a27ab4a3057367904dbf6b56dbce..e95128686ca90718dafc2b1844ef2d79acf8518d 100644 GIT binary patch delta 39 ucmZ3@xSnx>yKIPyRZKu-MoE5NOi^N9N`7ukaB@a|eol<1x2xmC1aANv2M$yK delta 35 qcmZ3_xSDZ-yJSF$RZKx;Oi^N9N`7ukadJj}eojngc533p6mJ0Owheax diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/__pycache__/fixer_util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/__pycache__/fixer_util.cpython-39.pyc index f9ae59e49e11aa4b5ba764da8662d3d6d1cda5f4..eaf59f8d8d8c7f3db44b3cd0a0868653ad89c3f4 100644 GIT binary patch delta 42 ycmdlMyDN6X23FZH7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp%_mvkY5)Loj1dd~ delta 38 ucmdlLyDfIZ23Eby0mP7i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)<_77roB(Qg5NQAa delta 38 tcmccUb=GS`y0oNEid9TOWlT|GUP^v$OmT8Xetu3&W_D`g<`(I*oB%S&4~zf+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/__init__.cpython-39.pyc index 7e17b6f303dcb75fb0680a16a9ed7ca4d8a4f7e2..bc8b5b8642100857ee3ca60fc79a0bfc4800f09d 100644 GIT binary patch delta 41 wcmdnZzn_1DJG*R@i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)+4wC=? delta 38 tcmdlWxJGaTFOy_cid9TOWlT|GUP^v$OmT8Xetu3&W_D`gW-X>RHUJ6S4YmLP diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_absolute_import.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_absolute_import.cpython-39.pyc index 6d701e8c02242c25da38f652625982068f8861e7..0682d8aa671b7f9652dbb39d64bb405a325339e0 100644 GIT binary patch delta 42 ycmdlbyia(;6;|0)7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&2L%HG6Mi)5fG99 delta 38 ucmdldyi0h)6;{c_6swqm%9x_Wyp;UhnBwG&{QR7l% delta 38 tcmbQkF@s}650hkgid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=9Nsvi~tj24qpHO diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_cmp.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_cmp.cpython-39.pyc index 76ba15a28da84c18e605bf68e56c7f06c76ac2fc..ab0377d5aad8d2cea7691df90fbca007b6b99fed 100644 GIT binary patch delta 42 xcmX@gagt-hVkX&07ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&3l+S839?h57+ypef>Eu(Cli&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)dxm$zStiNE6swqm%9x_Wyp;UhnBwG&{QR7l%bS) delta 38 tcmbQvF_~jS6O&|Sid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=J`w&i~tg(4p;yH diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_print.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_print.cpython-39.pyc index c0bbf0292c26585921469db8099cb31a45acc352..59a16a1e41d639eae8aaca6bd1f61a33bfd4c220 100644 GIT binary patch delta 42 xcmaDU^j2ttBCBk)i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)W-C^G764O~4&eX* delta 38 tcmaDW^ipVpBCBM0id9TOWlT|GUP^v$OmT8Xetu3&W_D`gW;<4W762Xz4g>%I diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_print_with_import.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_print_with_import.cpython-39.pyc index 4ba4d0b96f55f11bf29e186a80c9d3b98e8b84ce..d05c6dca5409f02c9a21eff3e395da111ad6f642 100644 GIT binary patch delta 42 xcmX@aevEyCJ(Fy@i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)<_M-NMgU3+4)*{6 delta 38 tcmX@ceu#a8J(FZ|id9TOWlT|GUP^v$OmT8Xetu3&W_D`g<`||dMgSFa4jKRe diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_raise.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_raise.cpython-39.pyc index 7284cb7a1e947c49081bbfe0483af66c680d91e2..2b787977735a0362abbc83961ebafb5f897c841d 100644 GIT binary patch delta 42 xcmX>md`fsj4x4PWi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=2kXGW&l+D4@Lk0 delta 38 tcmX>ld`x&l4x40nid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=1w+8W&j^h4ru@Y diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_remove_old__future__imports.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_remove_old__future__imports.cpython-39.pyc index 059f69acbaad1e9525c71080f8a2dfdc68e7a91e..3cd525b6b2e6e6997eca4d9a4b963a9ccc83ead3 100644 GIT binary patch delta 42 xcmaFB`Gj+WGqY@=i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)<{0J{MgUft4`l!V delta 38 tcmaFD`G9kSGqYrFid9TOWlT|GUP^v$OmT8Xetu3&W_D`g<^<*zMgSnj4u}8% diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_unicode_keep_u.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_unicode_keep_u.cpython-39.pyc index 00d156dc02a3f400f9ff18dd23f6f7bebcdbe8d8..625db52e25cdda5bf5929bc3e5a3d0167abdccb2 100644 GIT binary patch delta 42 xcmbQtIh}KZ6tirKi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)W@F|AMgTQk4oCn1 delta 38 tcmbQvIhk{V6tiSPid9TOWlT|GUP^v$OmT8Xetu3&W_D`gW^?8QMgRiI4Ql`Z diff --git a/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_unicode_literals_import.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libfuturize/fixes/__pycache__/fix_unicode_literals_import.cpython-39.pyc index a3c38da857858a31ba62d330708efe46db28e1ed..5f9d71ebb262bfa07bb5d008ae4f27b3165df5e7 100644 GIT binary patch delta 42 xcmZ3-wux=SEJoQ}7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&6^pk839tQ510S| delta 38 tcmdnQwvKJXEJn%96swqm%9x_Wyp;UhnBwG&{QR7l%zBLE9+4U_-? diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/__pycache__/__init__.cpython-39.pyc index 343f861905aec92c3a786bc90693595dda6b3622..7096771ef709422ce47d7caf6ee2038037015ec9 100644 GIT binary patch delta 39 ucmZ3>xRG&!yKIOV diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/feature_base.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/feature_base.cpython-39.pyc index e4c1fd44743f7a19737f9611f4d4b3c81e80e9c4..e2fc8545d11b3f9453155f43be3be816ef777dbc 100644 GIT binary patch delta 42 xcmca4a!q8z0Vdf57ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp%{Q4U*#T!75J3O{ delta 38 tcmca6a!F*v0Vc_q6swqm%9x_Wyp;UhnBwG&{QR7l% diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_annotations.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_annotations.cpython-39.pyc index 089ed017f2a231bedf51996d5db499157a93e07f..088306b0ed5c9d6ef05bb170a13fff648b28df7f 100644 GIT binary patch delta 42 xcmbQqJC}EZEu(C*i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)<}gNQRscPI4uk*z delta 38 tcmbQsJCk>VEu&<7id9TOWlT|GUP^v$OmT8Xetu3&W_D`g<|syIRsaeb4W|GA diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_division.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_division.cpython-39.pyc index 45bf77795f763395bd32f4777f6ff7010a7d7343..c6f129a074cd1ab73f5a0c8a6717abb8ebda18e6 100644 GIT binary patch delta 42 xcmX@jb)IX(Ge+427ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&HovFm;q-^5I6t; delta 38 tcmX@lb((9#Ge*gn6swqm%9x_Wyp;UhnBwG&{QR7l%Fw&cxtFPg82~?A4)p*4 delta 38 tcmZqWY2?{Z!X%lTVii+R8B>&)my(|wQ=FWUpPv(xnVp)rc_LE@GXM+F4j2Fc diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_getcwd.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_getcwd.cpython-39.pyc index c4dd6c4404880afddd5bb96039810551d242158f..1d1e0837aa6eb43a3ba2f3331cd93a6f70a7403a 100644 GIT binary patch delta 42 xcmaFF@r+{w6SHibi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)W@%=3MgU2L4wV1^ delta 38 tcmaFH@rYvs6SHJgid9TOWlT|GUP^v$OmT8Xetu3&W_D`gW_f0JMgSD~4Y&XR diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_imports.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_imports.cpython-39.pyc index 391d00da94867724ac1e959d6845c667d00c189b..fc0170e0381dc8c6f21ae84a66e9148f1f027d31 100644 GIT binary patch delta 42 xcmbO(Gh1fEQ%>1<7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp&Hp$hSpZzk56=Jq delta 38 tcmbO&GhJrGQ%=d~6swqm%9x_Wyp;UhnBwG&{QR7l%;P7G5EcLc delta 38 tcmZqIZ`R+iiC;1%#VV$tGNvdoFC{-WrZ_nxKR+iXGdneL^LhRq>;NFM4>i4ov_6 diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_memoryview.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_memoryview.cpython-39.pyc index 0accaa715c7ac3d4c313ecd31125853d2d18d210..050bad99f9868b5b70af5e7978d79f2c75a47343 100644 GIT binary patch delta 42 xcmZ3;zLb4~Ig@OXi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)<^ZNZMgTok4u=2$ delta 38 tcmZ3=zL0%`Ig?~uid9TOWlT|GUP^v$OmT8Xetu3&W_D`g<`AYpMgR%<4XOYD diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_metaclass.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_metaclass.cpython-39.pyc index 505d2909a83ef693f8b192583201fe28be63c74c..26783da4a27b8f73462eb3916af0dcfb48d2bdaf 100644 GIT binary patch delta 42 xcmaFL|B`=00JChOi&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=1k@q764iN4}bsw delta 38 tcmaFK|CE120JCIlid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=3M3)762pM4x<17 diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_newstyle.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_newstyle.cpython-39.pyc index df497d337adeb6d25f9dd39bd1987797f8cd0985..ee98c0a328b3bc9f314c7ab9ccc0a9ced43e8f86 100644 GIT binary patch delta 42 xcmdnTd5CjE3!`j;i&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=DCcD%m7l$4=n%y delta 38 tcmX@axsP*03!`LAid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=7o%k%m5uv4p0C9 diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_next.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_next.cpython-39.pyc index a3b62b5a634d14432ff8d1d70a76d2ddd4590121..08b676940874c34d499fe7873304bc0fdd4433b1 100644 GIT binary patch delta 42 xcmZqY>E_ws%OV@&ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&cIgMo@BLF%%4%Ywx delta 38 tcmeC?Y3JGC%OV+(Vii+R8B>&)my(|wQ=FWUpPv(xnVp)rIg4c>BLD|I4f+58 diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_printfunction.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_printfunction.cpython-39.pyc index d1df361d20a093284f5c772fbf1b4ab98d9ba791..4e4a55e5e0148e3ed298e5df4a6b7f51150f8c6f 100644 GIT binary patch delta 42 xcmZ3)wv27V9!A+z7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp%~u(H839t;4~_r; delta 38 tcmZ3+wuo)R9!AN;6swqm%9x_Wyp;UhnBwG&{QR7l%mMgTxg4yphE delta 38 tcmdnaxtVi=GP7i4id9TOWlT|GUP^v$OmT8Xetu3&W_D`gW(VeSMgR=54b1=m diff --git a/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_unpacking.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/libpasteurize/fixes/__pycache__/fix_unpacking.cpython-39.pyc index 0cd37e73df1c0d33e27a42aff70061f72ecac417..4252a9c03108fd2afebff201c40b6abd4921087c 100644 GIT binary patch delta 42 xcmbQQvsh str: + pass + + +__version__ = "2.0.1" + +_striptags_re = re.compile(r"(|<[^>]*>)") + + +def _simple_escaping_wrapper(name: str) -> t.Callable[..., "Markup"]: + orig = getattr(str, name) + + @functools.wraps(orig) + def wrapped(self: "Markup", *args: t.Any, **kwargs: t.Any) -> "Markup": + args = _escape_argspec(list(args), enumerate(args), self.escape) # type: ignore + _escape_argspec(kwargs, kwargs.items(), self.escape) + return self.__class__(orig(self, *args, **kwargs)) + + return wrapped + + +class Markup(str): + """A string that is ready to be safely inserted into an HTML or XML + document, either because it was escaped or because it was marked + safe. + + Passing an object to the constructor converts it to text and wraps + it to mark it safe without escaping. To escape the text, use the + :meth:`escape` class method instead. + + >>> Markup("Hello, World!") + Markup('Hello, World!') + >>> Markup(42) + Markup('42') + >>> Markup.escape("Hello, World!") + Markup('Hello <em>World</em>!') + + This implements the ``__html__()`` interface that some frameworks + use. Passing an object that implements ``__html__()`` will wrap the + output of that method, marking it safe. + + >>> class Foo: + ... def __html__(self): + ... return 'foo' + ... + >>> Markup(Foo()) + Markup('foo') + + This is a subclass of :class:`str`. It has the same methods, but + escapes their arguments and returns a ``Markup`` instance. + + >>> Markup("%s") % ("foo & bar",) + Markup('foo & bar') + >>> Markup("Hello ") + "" + Markup('Hello <foo>') + """ + + __slots__ = () + + def __new__( + cls, base: t.Any = "", encoding: t.Optional[str] = None, errors: str = "strict" + ) -> "Markup": + if hasattr(base, "__html__"): + base = base.__html__() + + if encoding is None: + return super().__new__(cls, base) + + return super().__new__(cls, base, encoding, errors) + + def __html__(self) -> "Markup": + return self + + def __add__(self, other: t.Union[str, "HasHTML"]) -> "Markup": + if isinstance(other, str) or hasattr(other, "__html__"): + return self.__class__(super().__add__(self.escape(other))) + + return NotImplemented + + def __radd__(self, other: t.Union[str, "HasHTML"]) -> "Markup": + if isinstance(other, str) or hasattr(other, "__html__"): + return self.escape(other).__add__(self) + + return NotImplemented + + def __mul__(self, num: int) -> "Markup": + if isinstance(num, int): + return self.__class__(super().__mul__(num)) + + return NotImplemented # type: ignore + + __rmul__ = __mul__ + + def __mod__(self, arg: t.Any) -> "Markup": + if isinstance(arg, tuple): + arg = tuple(_MarkupEscapeHelper(x, self.escape) for x in arg) + else: + arg = _MarkupEscapeHelper(arg, self.escape) + + return self.__class__(super().__mod__(arg)) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({super().__repr__()})" + + def join(self, seq: t.Iterable[t.Union[str, "HasHTML"]]) -> "Markup": + return self.__class__(super().join(map(self.escape, seq))) + + join.__doc__ = str.join.__doc__ + + def split( # type: ignore + self, sep: t.Optional[str] = None, maxsplit: int = -1 + ) -> t.List["Markup"]: + return [self.__class__(v) for v in super().split(sep, maxsplit)] + + split.__doc__ = str.split.__doc__ + + def rsplit( # type: ignore + self, sep: t.Optional[str] = None, maxsplit: int = -1 + ) -> t.List["Markup"]: + return [self.__class__(v) for v in super().rsplit(sep, maxsplit)] + + rsplit.__doc__ = str.rsplit.__doc__ + + def splitlines(self, keepends: bool = False) -> t.List["Markup"]: # type: ignore + return [self.__class__(v) for v in super().splitlines(keepends)] + + splitlines.__doc__ = str.splitlines.__doc__ + + def unescape(self) -> str: + """Convert escaped markup back into a text string. This replaces + HTML entities with the characters they represent. + + >>> Markup("Main » About").unescape() + 'Main » About' + """ + from html import unescape + + return unescape(str(self)) + + def striptags(self) -> str: + """:meth:`unescape` the markup, remove tags, and normalize + whitespace to single spaces. + + >>> Markup("Main »\tAbout").striptags() + 'Main » About' + """ + stripped = " ".join(_striptags_re.sub("", self).split()) + return Markup(stripped).unescape() + + @classmethod + def escape(cls, s: t.Any) -> "Markup": + """Escape a string. Calls :func:`escape` and ensures that for + subclasses the correct type is returned. + """ + rv = escape(s) + + if rv.__class__ is not cls: + return cls(rv) + + return rv + + for method in ( + "__getitem__", + "capitalize", + "title", + "lower", + "upper", + "replace", + "ljust", + "rjust", + "lstrip", + "rstrip", + "center", + "strip", + "translate", + "expandtabs", + "swapcase", + "zfill", + ): + locals()[method] = _simple_escaping_wrapper(method) + + del method + + def partition(self, sep: str) -> t.Tuple["Markup", "Markup", "Markup"]: + l, s, r = super().partition(self.escape(sep)) + cls = self.__class__ + return cls(l), cls(s), cls(r) + + def rpartition(self, sep: str) -> t.Tuple["Markup", "Markup", "Markup"]: + l, s, r = super().rpartition(self.escape(sep)) + cls = self.__class__ + return cls(l), cls(s), cls(r) + + def format(self, *args: t.Any, **kwargs: t.Any) -> "Markup": + formatter = EscapeFormatter(self.escape) + return self.__class__(formatter.vformat(self, args, kwargs)) + + def __html_format__(self, format_spec: str) -> "Markup": + if format_spec: + raise ValueError("Unsupported format specification for Markup.") + + return self + + +class EscapeFormatter(string.Formatter): + __slots__ = ("escape",) + + def __init__(self, escape: t.Callable[[t.Any], Markup]) -> None: + self.escape = escape + super().__init__() + + def format_field(self, value: t.Any, format_spec: str) -> str: + if hasattr(value, "__html_format__"): + rv = value.__html_format__(format_spec) + elif hasattr(value, "__html__"): + if format_spec: + raise ValueError( + f"Format specifier {format_spec} given, but {type(value)} does not" + " define __html_format__. A class that defines __html__ must define" + " __html_format__ to work with format specifiers." + ) + rv = value.__html__() + else: + # We need to make sure the format spec is str here as + # otherwise the wrong callback methods are invoked. + rv = string.Formatter.format_field(self, value, str(format_spec)) + return str(self.escape(rv)) + + +_ListOrDict = t.TypeVar("_ListOrDict", list, dict) + + +def _escape_argspec( + obj: _ListOrDict, iterable: t.Iterable[t.Any], escape: t.Callable[[t.Any], Markup] +) -> _ListOrDict: + """Helper for various string-wrapped functions.""" + for key, value in iterable: + if isinstance(value, str) or hasattr(value, "__html__"): + obj[key] = escape(value) + + return obj + + +class _MarkupEscapeHelper: + """Helper for :meth:`Markup.__mod__`.""" + + __slots__ = ("obj", "escape") + + def __init__(self, obj: t.Any, escape: t.Callable[[t.Any], Markup]) -> None: + self.obj = obj + self.escape = escape + + def __getitem__(self, item: t.Any) -> "_MarkupEscapeHelper": + return _MarkupEscapeHelper(self.obj[item], self.escape) + + def __str__(self) -> str: + return str(self.escape(self.obj)) + + def __repr__(self) -> str: + return str(self.escape(repr(self.obj))) + + def __int__(self) -> int: + return int(self.obj) + + def __float__(self) -> float: + return float(self.obj) + + +# circular import +try: + from ._speedups import escape as escape + from ._speedups import escape_silent as escape_silent + from ._speedups import soft_str as soft_str + from ._speedups import soft_unicode +except ImportError: + from ._native import escape as escape + from ._native import escape_silent as escape_silent # noqa: F401 + from ._native import soft_str as soft_str # noqa: F401 + from ._native import soft_unicode # noqa: F401 diff --git a/IKEA_scraper/.venv/Lib/site-packages/markupsafe/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/markupsafe/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b14513c40ad0152fcfadf9dff502f59e5eb8b35d GIT binary patch literal 10679 zcmc&)&2t+^cAqbN5ClI&(Ud65(vY?!!loeGtMxh(&6QRkw$?W7vSfRWl`|Zonl0z;z3v z1SxM)l~jP5Mo;(a*RS7u{rbJv@JB`p20l0c;gbI!&l<+R(o6p*kC#h$!f%^~Aq-*G zjf(y?D<;2N6^noEiX)wkjJm{c*-GwpLs-IoXb4;8HuBqcWk@)cf;4xAMP}Em6y*ru zM@4qp5V=Q|$cv$ePGtzo&p;;H)6jpLQ$rh)nt z>d#c3;rbEOPgG8D{V3`uD<@6kL!)`sF{Jx5^Zr%Spf6*X>BBJ7hhe4x&;hzgQ|+ zh^!s^Gh^2jW(1|DM?gT2oKKBa zQ`o|JSll)rm|G<3%#s?z*pj1YGsTXt*1|Y@XOn*S&q;I9oG0;wS5fes=C&DGTPU}T z4SU;uU`EE4wPo!%yM}Ht@w=1x4CNYT{WJ4DqXvjSH-BpGf(DfVqEa><^JG|sEIpdL zC9APhuZ2-OB%5ul-;ZRR)c|n@5^jX?kmptFei(XQ$!7A^Az)GyC`gS0Ra@&xACH|%tjVZPUc}^^1=|=MD96}e>eg&XNVzeS2AN{@G=|2 zfGUzfLeIz}i*;mFj6E#E2=41m%+-h-1@uG$eOOEadQ6U0#%Xr+JeBlJi6iJagc&d= zV?HXT(J}$J!~NKK_G8JYr^Ru=Ov?PmT=uh;Lx-=Rk=eUd6n>CNALp)Tf4HR8C`G zf0MVh{}(VDmt9yV=(QWI`;l7-XJSGn6Wl0u{9TO_z+f8z}cX zZ@*P=@ex54yRaF}yRsIoONFsjza2`q7P*^#=<1y*Xvjbh8DJ?G2~AcmaP?j6TcQb5 z1uGk}8WBA}>{f#&$Zca=DXQNCSs_hA-SU$N1BA@ZI|a}-;nisFz+tN z#^Q&8s*8nlsLjll7-a%<=3t;R8mJH3`Iq;OJOA=Nn6jqte=@Oqx*lDWjniww7g6@A=Rp1C5}OZ!k{7DRfR)oGf;Oz#sYSh z-2-IG8b{VuBOgG#S*zDsm|amoa4pC#Sk+T$AUKlXurfgv*5eyO0K>(du}xdW*1Q`obwmYr1i}hXL+J$8(`*PX65xMKwMYI7zFgDS?aNb>MM@)bgK10-$ixZM}BamV{ z=!MV(%gb8vSZHD7H>>G>>s!DqsqCqc^>w!7o^t1Av1a$QyW*?a`GJ)Ilso-K>mmX0 zsC~LQ$2eKp8NdbJ7u?we3|*XM`qK?TbN9iKMgoX5GC|76Wo#_PS+ZKysN}@XiXX~2 zFPqgsKnvgoC>5y0Jt4m+{ZO5bM{-lb3n<`-zzN#6)Wnv#W9}ModJqq^4K){8+s2N) zh5lXZCLE^p4UUVw3m^8ewZsk`rq4k#eCCsb7iYpY+|4)#uTXBn^KfFjS`XE8=u@Yt zIE~`5sg6>ekAC(6pU3MpJRu=5?1Guc5kG2mMm1yLaWXnZr0;R__PNSiaFy9*(%5qt zpliL!XpVRBq<-yKcM|RMvIh#!G82#~*KQuUlj(=*gqQjFA}Ykk2z(4D$01KPtB43i>`^aK!PIq0q_{ybAs?Z$OXs-N=}ANPLl8Dx+=InHzA=lzMI|L# z9S5maWP|yRW_&`d_N1BE*oN8O%j!lO@eUIV|CAg}^))I6So?Lfd3X|%3+6;WYZ(Vo z3={M#D82+FU5aNT?f)STd6?fauNvEk7ao|+A}Q2o6gOB8@Vnzg8LTQ%C-^b;(w^Nw zGNoNkgmV?d+{9%ilnZxrBE_014?lTZ~>nE7DW#tjR@u4gEfK>_7S&(I2AI6{(?~G z@3uvzBNbStk6+G4P;16^!*3-5(^`8O_y)E1Th!J^;BX=@!tnW*_>^p-uodSU{wHCp zUW+uXL|6KudUwAa#|y_7tg(>+iV?eRS-TeL?!lT#gAd~g$vmt<4j+%QQqw78{@l6? z31}-p+=Y326+f|gZ&3dV3l#WPgGOty0|<2yMJMq)%S?Np`gK8}R4m90Lp)9*;%kK9 zIu!$Y_HDFn;?WYdJH>=yJi7Y-#}@TE5z9K*wWaC?+P+Wi%!+g`s$a>AtOikU(%1n8 zyoI*k#FH{$Bw>Iaavd6-zawQ!HbvrT44x-@_S}9|*<~a5zn~~j`hi0`rZ*QcLvq0SsC~+Yh@8GCPO%O|r)f5qn5&uFw!NE|hbs8x2@__*U zUH6q=McBd~^L-kpWC*w!^VM6q)6c8Ryf%FhCBuU+Nunuq%-=pBq@&dm2w|Kf%MKYLf}y{JCSxwTt7+E zl-(20TS(B*uAvOPL>7a9 z=>tBn3rqVH$9?vBBxX9R$SGh&W3-}ff#vc+NG5wvTtItD ztZ&;7tOxc3La9ySMB zlUt46Tu*KWv z53u>M-L0k0{QKC&tyaM4R*eq!QdVoLwW?2gpd5uyY>49+(HNCsn% zHE|;%qcaUGh}Uuv&qX0b!YW;PMo>L z0UB*IMf$5+RD=XFlH4d&k=w&a;kfd}*1ZruED5;ZgfU z_E>f@>sV9y3Hv#_zNE+q#8ho zY!w{_OX;CNv+c1kq|@}Um7GKcfe>;8I*i+;yXJ1ZZR>5wkqAOcec_twEgw0|%I>~X zKLEOa!jo(|Si7SG8ymT?1dSbM?$KsYyaAX@A}Re)10lYGC)_|mXD=tKrYQXf0|JxM zyw0r_l7eq+S!yu?$F?j4$PVIBY*f@TzsT^0MIs0(L%TT{;qGN8N6Eq{PY1xR{lG@e z*cn2y5M#i}>=J7b>w4$Vb+$6;w#IEqr|7QLa6`=rUAOZaxKF`Z-3%hiRKs6Slhx_& zExVVKdk9XsYoIWN^4tc_%qI*bH;fYV+8Ndedz6IbQbA|oNZ}QQ%&`-}Ptd!Rldedy z4(S!p(OXPtTCK^t(7T%CnA+BDLc{X-kZQdx!@K2EwEZ)lkhF$OY7viPLhHYDG6iSS z>>MAIcK>vx;(+y0ZJ=Ru6X(fIVhiC?8|_P0CQTwutiDG@kD}ftCawQRJZvDbiLF_O zcLJOkGBod~t2*;+<8CU>!>7@vi1l}$+L8Z2jjVQL+9(sP8kd-WD)K4(I z`fVzR*4Vxy?<w%5lr`d;{@Gu`LU(BL5x_!F~_VqSb{b{$iA@z^|?*< z4RSI({KqBn@YL@B1c*3u+QT-$S+Zvq+?$>~JAOa{vS-uq{|@q*4|XPqFeYjO6{r&2 zqAhcpeqp~-$J5ri#x6yvwf!l^^l3lK{X1yO5_Pm({Nv^1!L)T9`GfBxy4p^>BC=py zL6SCw`tKZe&r)d4_cA)nFrtQB37qPlH`GVb(+5+;aC<^tjA7TE`9tPK6GC|gWRsC_ zBfG4LaeBnW4y6K~ND@0A#XfSLAUr~HKpM8IM1_PNa${2}Eba2JoSwi9l7|bn@pI!t*BjD0t>zc_fgfi9rJ$VdXt5tz3HjjEbItCMDDo z`CY1AqT)OiKd0jNsQ7&P4=%n>E}k%F?WQ24fHaOZ7vlWN|7Yo1qVzky{_Vd(FG@#x z9>$FtVhxTTDmna>ErK6%5NqT7g8p~gA~7(01x4QEua!jrF_Cesf<09n|1IOyiRn@2 VI2_*M@aQoMM>>7S;R5U0e*pqIboT%N literal 0 HcmV?d00001 diff --git a/IKEA_scraper/.venv/Lib/site-packages/markupsafe/__pycache__/_native.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/markupsafe/__pycache__/_native.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..150067513530e308e637012b6e298818309ec1c4 GIT binary patch literal 2326 zcmZ`*-EJF26y9C0ovo9U5}+zVLZcwXvD6wBxWNrpON&II4X9~_6j|7lopHR)de_X1 z9bAR0a?2ZV(caOQ;3c@*Tdw*FrBJ>zv##C0m3C%4d;aE}?>l3@zFzn6?EQ6_uScHu zH~m-ASRlNEe48}V_r1t}L*7zshgW#ceA9jszDkoSy2r2%D0p?It?OYQpc8;}Yy3}`za_^hk0moh$>JebJT_8k*6(li`{yz3xT)i&22DH@_^{dUvm~oCJfy3Q zO0q+CoR}f|`u5Em7c?JWSN=4SSuAyn-O=PE(JUFTSw3Nzl!BR@i9{oUnKLARHW1>5 zjgrHmVR4=ro@7i<;^A_1*diaTy4AWquo2`3cV%qYkZVMU0DHZm8Ku1*;v7jc%*A<@ z7={31o~H0k$3W!PgiAe}@^m6egljz+x%hahBo{MwfYZ>C2Dw^x-X0@oBc|KzO2*0% za4JY6_^DK;v@%Z+d6hcmV<}qJb=&!dK5NG*9Jl)p75%x2%_-%$)MEx|a>_+CKjjmD z>t1z>kH(jt_?>&<)}g^-2aA*z4Sf6P)6cQmw5!i9HLJx6QpJr?ikP5k7>WwYSga_A ziATN)vH8eTXD~gvb*Sw~KI-np!#q#B*T4PhN>9fMXHwnPRA$rejpU%K z6C*E-d3?kVrS6U_(kX)<_cCshscemBMa>~=elhlDcADbl4cn{fMi4z0OyP5wqc2!~W(~ti(zV!a>KJ1swNz87Z3_6Cc%nF^A325nl6=&XVDtbe zq+Y|Z(n)O1xQ2C}>6|2vlQcyjG=jPWR_YMiQJy$^oKsx*R+7+#a)|Da8-Z?Ht>%jmuw-B867^rNpASs$jYbv*7RtDf z>WNM=Z8&j)GERu2&+jpYAHo-2>iy!M_;+#V8r)hU z{H@}9?j8eTs=JCVzk5G6tdmKW#JP|S+ujc(sH0@Y%NFfKaKr`yMzTB=j6S-mqGn2t z@+k_6d&3cEk2?7$t&6S46d7*fI?fs&rE)6MW>`eWTxGzHE<#!r8`mT-7^7|F*$?iM zJtOEu9a5d6;Uy-mEyw*O1oUYP9?}!~0a{$}v{q9eV5hlS)XZ!QcZF{X&l0q#T*+p( v-4)SyWuvj|bH$+iTHPh5*1hF$v@^=ZB$XXXpr$`TQLt9oICt*M#=HLmiK}-u literal 0 HcmV?d00001 diff --git a/IKEA_scraper/.venv/Lib/site-packages/markupsafe/_native.py b/IKEA_scraper/.venv/Lib/site-packages/markupsafe/_native.py new file mode 100644 index 00000000..6f7eb7a8 --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/markupsafe/_native.py @@ -0,0 +1,75 @@ +import typing as t + +from . import Markup + + +def escape(s: t.Any) -> Markup: + """Replace the characters ``&``, ``<``, ``>``, ``'``, and ``"`` in + the string with HTML-safe sequences. Use this if you need to display + text that might contain such characters in HTML. + + If the object has an ``__html__`` method, it is called and the + return value is assumed to already be safe for HTML. + + :param s: An object to be converted to a string and escaped. + :return: A :class:`Markup` string with the escaped text. + """ + if hasattr(s, "__html__"): + return Markup(s.__html__()) + + return Markup( + str(s) + .replace("&", "&") + .replace(">", ">") + .replace("<", "<") + .replace("'", "'") + .replace('"', """) + ) + + +def escape_silent(s: t.Optional[t.Any]) -> Markup: + """Like :func:`escape` but treats ``None`` as the empty string. + Useful with optional values, as otherwise you get the string + ``'None'`` when the value is ``None``. + + >>> escape(None) + Markup('None') + >>> escape_silent(None) + Markup('') + """ + if s is None: + return Markup() + + return escape(s) + + +def soft_str(s: t.Any) -> str: + """Convert an object to a string if it isn't already. This preserves + a :class:`Markup` string rather than converting it back to a basic + string, so it will still be marked as safe and won't be escaped + again. + + >>> value = escape("") + >>> value + Markup('<User 1>') + >>> escape(str(value)) + Markup('&lt;User 1&gt;') + >>> escape(soft_str(value)) + Markup('<User 1>') + """ + if not isinstance(s, str): + return str(s) + + return s + + +def soft_unicode(s: t.Any) -> str: + import warnings + + warnings.warn( + "'soft_unicode' has been renamed to 'soft_str'. The old name" + " will be removed in MarkupSafe 2.1.", + DeprecationWarning, + stacklevel=2, + ) + return soft_str(s) diff --git a/IKEA_scraper/.venv/Lib/site-packages/markupsafe/_speedups.cp39-win_amd64.pyd b/IKEA_scraper/.venv/Lib/site-packages/markupsafe/_speedups.cp39-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..af5e727c136aa9d2ff78d54fc117f457465485f2 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/IKEA_scraper/.venv/Lib/site-packages/markupsafe/_speedups.pyi b/IKEA_scraper/.venv/Lib/site-packages/markupsafe/_speedups.pyi new file mode 100644 index 00000000..f673240f --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/markupsafe/_speedups.pyi @@ -0,0 +1,9 @@ +from typing import Any +from typing import Optional + +from . import Markup + +def escape(s: Any) -> Markup: ... +def escape_silent(s: Optional[Any]) -> Markup: ... +def soft_str(s: Any) -> str: ... +def soft_unicode(s: Any) -> str: ... diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/REQUESTED b/IKEA_scraper/.venv/Lib/site-packages/markupsafe/py.typed similarity index 100% rename from IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/REQUESTED rename to IKEA_scraper/.venv/Lib/site-packages/markupsafe/py.typed diff --git a/IKEA_scraper/.venv/Lib/site-packages/past/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/past/__pycache__/__init__.cpython-39.pyc index 2e86dabf9ec6ef54a14ccaaf1c13ab8588f86ee3..874b84aaa2f9a3592c9e081f94628a58fc366f0a 100644 GIT binary patch delta 41 wcmZ21v0P%q0d84e7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp$v3&Z07r}ulmGw# delta 37 scmZ23u~=fm0d7gp6swqm%9x_Wyp;UhnBwG&{QR7l%gv`1*eQ$|U@6swqm%9x_Wyp;UhnBwG&{QR7l%;Na_4m1D& diff --git a/IKEA_scraper/.venv/Lib/site-packages/past/builtins/__pycache__/noniterators.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/past/builtins/__pycache__/noniterators.cpython-39.pyc index 858f4081bcb2f63ffea84be373d7d1fa8b1e82f2..89bfaa35355d693222ae954af1474b2b3484eb25 100644 GIT binary patch delta 42 xcmX>ud0KMAYbMz!7ps_n%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp%`D7^IRR(X57Gbt delta 38 tcmX>td0cYCYbMFC6swqm%9x_Wyp;UhnBwG&{QR7l%sbX;hI7qe`Ti&acOWkyMUUQAJ9UP^v$OmK2Wetu4jr?;!)=49pvtN=~j4~zf+ delta 38 tcmX>ubXaJE7qg^aid9TOWlT|GUP^v$OmT8Xetu3&W_D`g=5*!Fw$` I`6%Nu0J^Rb?f?J) delta 50 zcmaFQ@|uM^k(ZZ?0SGGN?Kg5SWR&!9v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5e3Ee) E0CVyX#sB~S diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/__pycache__/__main__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/__pycache__/__main__.cpython-39.pyc index f575d1096f00441289763689b1ccb2087a4dc964..cdb60c6e580ac0837cf5cc68b1b7add1242cbff4 100644 GIT binary patch delta 54 zcmdnba+rlXk(ZZ?0SNRjJ8b0M$0+OLViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`4M9*0IZl1hX4Qo delta 50 zcmX@ivY&-Jk(ZZ?0SGGN?Kg7oW0dr8v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{ERUc E0A|P#UjP6A diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-39.pyc index 5d2374923a1e47b0b2820c09e55eb481d099eba0..1a6891bedb9bb6e8097b1dd5f19d299248ee6dfb 100644 GIT binary patch delta 60 zcmaFD`ht}^k(ZZ?0SNRjJ8a}Wz$hE$ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` P`3d6|##@tTGI;|4G)@$Z delta 56 zcmaFC`h=A`k(ZZ?0SGGN?Kg5CV3Z7Uv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{DN@{ KW7OoiOx^(Fs}kq{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-39.pyc index 8b77718223a3a463a057051fe80b9b4170418451..79da0e26b4ec5a1a3869b195c277270d7d764c00 100644 GIT binary patch delta 382 zcmezF_S=m+k(ZZ?0SNRjJ8a}uVUZ1Yv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ z?7^~9Q1ljiQEFj)aY@lFW+3AhOG;*O$*s+7V#Q3NbAcum%>WTIK}0r)n7z4AqMlg~ zs}xZF7E5ALdU4Tu5R*MEzbH4cq_}9)WNR5&sTCmY%Rz(&oX`ZZrcW-CnWZri#GD5t zZt)bCB$i|*=cblq*2`UH|&H|~J4I%%gah Sk#W`JS4tX;`z8x3rvLys%V(GX delta 331 zcmezE_T7y;k(ZZ?0SGGN?Kg6(ut)~GSj7}n#uO#yrR3+v6enlo=jX&^W~U}@_F-8m zC>q6Hlv)^HTvBw48OXTBl9E|m61AC2te8o3Hqex!X&_=ch{y&JGdE9?sAty0Dg~6k z#gbT*UR<;m#AHv)FUn0UDK6SD*M diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-39.pyc index bf1e4c125db9f5958a4e50cacbe5e388a2b52e99..3d110e990231d2954a41a5e535b86da7c8d98ae7 100644 GIT binary patch delta 55 zcmbPcJIj_kk(ZZ?0SNRjJ8a};W|j?hv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtj?S-4FIT>5QzW) delta 51 zcmbPbJI$6mk(ZZ?0SGGN?Kg5WGfVorSj7}n#uO#yrR3+v6enlo=jX&^W~U}@)@II^ F1^{E_4`BcR diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-39.pyc index e3fa82b7b6782eb45514cdccb33e60aa6c16da43..2b890fdd52625c6d560d451badae1c1fe5721673 100644 GIT binary patch delta 55 zcmdlLyf2tLk(ZZ?0SNRjJ8b0EW|56{v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?9Y;|3INE05nTWP delta 51 zcmdlNyepVHk(ZZ?0SGGN?Kg63vq*-!Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@4ra+# F1pt9Q5H$b* diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-39.pyc index 30a2e72f6b0edbd39fe4d20599a90f03d5d5d898..6b497f1bbbb82e4df78bfcde79db4e8f1f42cece 100644 GIT binary patch delta 55 zcmeCLnq0-5$ji&c00jD%9X4_|Gs{M}Sj7ZXW|ZXT#S|sxrR3+v1SeJq JUe26h2>{d`5)l9Z delta 51 zcmbPS)nCP($ji&c00fos_8YmInI%J9tYQi(V~P^Fw&c J`3&Q7ZUEd`5^n$i delta 51 zcmew^^;wELk(ZZ?0SGGN?Kg6-V3Z7Yv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e1UN} FHvp495k~+3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-39.pyc index 57234c0723bd22cc990e6b5fdd7f79a6c1ad0777..545c19f880827bbc7be334e2fb6b580868f224fd 100644 GIT binary patch delta 55 zcmaE^_*#)Wk(ZZ?0SNRjJ8a~RXOc~Hv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+{~212LR7^5uX46 delta 51 zcmaE@_*{`Yk(ZZ?0SGGN?Kg7AGfBp}Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Zf8p2 F0|1A65O)9o diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-39.pyc index 5acce8452d48109d168a3651c84e4346db51d643..5b23c972e528eaaed7dfa497087c5e259730029b 100644 GIT binary patch delta 55 zcmX@Fw&c J`7ukHGyvY15^ewh delta 51 zcmX@>aMFQ0k(ZZ?0SGGN?Kg7oXORqdv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{G26C F8UU3f5k>$2 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-39.pyc index 2fadcb5c808ac6bcf61134ca65f66619dc2b06a1..af44a400f71558777fec1e07fa993e756741e950 100644 GIT binary patch delta 52 zcmZo+>R{qd&nybz55 delta 48 zcmeBRYGL9|y CFArq^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc index c7dc26bbdc46bbc0f5312d0ae9dc09249cf1a23e..a17c04c48a7f1f22580840984d2b2be453ed7616 100644 GIT binary patch delta 55 zcmeyX-l)Ny$ji&c00jD%9X4`LWR*>Dv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyp`314*Jq Je!{j;006uu5&ZxF delta 51 zcmeCwZ`J2cb8(7)`kk=v0^Hpay&CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2twUxp_D0NxUx delta 53 zcmcb(p7HE@M(#vjUM>b8sEoJY$nD4{8R23TQ&1UGl$e*2pBq!0oROcO6O);pnz%WW HFT)c6wTlsV diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-39.pyc index 237098cb86fb8385397d6e49a5a71405358c4682..6d00d4cc97b42658eed7cbd674e19105530822b3 100644 GIT binary patch delta 55 zcmey(`Ja%_y7bViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`9I?yCII5l6Bz&i delta 51 zcmey*`J0nFk(ZZ?0SGGN?Kg7YW|WL|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*^zM F2>_J~5b^*3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-39.pyc index 8b8e01b40842a0105e419f5772191e865e6242e8..14e9d05fe0593f38f54feceace06f030ef800275 100644 GIT binary patch delta 55 zcmX@cb&88Sk(ZZ?0SNRjJ8a}GVU`VZv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJcD^1BLKRZ5sd%< delta 51 zcmX@bb&QKUk(ZZ?0SGGN?Kg6lFiQrxSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2NJ3 F5dd^D5M=-W diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-39.pyc index cc8c12d6c74cc85b8b3aa7d7c97756f3e751bf72..f5fa54d3469ac323e28791363912be67d93d0a91 100644 GIT binary patch delta 55 zcmaDX@LYg9k(ZZ?0SF8(J8a}GV3v(_v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJcao@3joRs5%&N9 delta 51 zcmaDZ@K}I5k(ZZ?0SGGN?Kg54FiS?dSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p22*c F1ptCo5Y7Mq diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-39.pyc index 4f9815f39bb2a3614e5bca4fb9c8609e599be2c4..1d1feb311d69569e4dfe55664ea6e9a162e774a2 100644 GIT binary patch delta 55 zcmX@@d)}8jk(ZZ?0SF8(J8b0M$}AhFw&c J`6lxxB>>~}69)hQ delta 51 zcmX@_d)k*fk(ZZ?0SGGN?Kg67WtI$av5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3$u? F5&)VO5#9g* diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-39.pyc index fd026f57abcd9e8d256dea476beea16224f6a969..0782c8c900818d3118a8e856d99d489abadcf79d 100644 GIT binary patch delta 55 zcmdmPz1x~Qk(ZZ?0SF8(J8a}W%q$!4ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8o3iNdVUG60-mR delta 51 zcmdmOz1^BSk(ZZ?0SGGN?Kg5CW|oY0v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{F?cK FBmj-=5sCl+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-39.pyc index 5ec3ef67fef22ed2ed820e62473c495a38b9dfe7..216112ca2298e1fa885d755dfb3fa39b82352ba4 100644 GIT binary patch delta 55 zcmeB*>x<(~Jq J-oxgn0RYO%5!wI% delta 51 zcmeB+>x$z}sk(ZZ?0SF8(J8a|@V3Lh;v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{JAR2mrI$5NH4Z delta 51 zcmX@6c1Vpok(ZZ?0SGGN?Kg4@FiD2FSj7}n#uO#yrR3+v6enlo=jX&^W~U}@wqW8D F1ORRe4?h3^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-39.pyc index 76ffe2992dbca443bc2b486fe24262ea5e175250..40099d9aef59b8ca2f5a44d9e48f2ccaa7089131 100644 GIT binary patch delta 52 zcmcc2be)Mik(ZZ?0SF8(J51!hARFgm6%$aIQIek*QFw$`*^e`w z*8-?alc@--U1#zk&N+6LAoE#s^2<|;iZnrNmh9BZVohd<8n7&1a!!76YJ74&&<%Mh z#YG^yAcXnkIb8aJb|6CqZ?VV6r{pKc#~0~MzQYw`3O0M*}QKcqJk;de`9GYw( z(ITzMZ#ZNbbtZFhs>zuG1%5@lSj7}n#uO#yrR3+v6enlo=jX&^W~U}j4&qGbH3uru zWGVt{)t-EebB??P$ZXb}{PNVIA`K9mB|EjUSd$r|#$s|Kmk2k=;36<#HhBS;zMw70 p6v12U@$o77$?@?;x|1Jp#V~42w&j+R0@+XmQUK9_thJDP1pvWXI)VTI diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-39.pyc index 786c0c7a64e1312576bce99c7cbebe30510e47ec..88193c3d790bfe29f78c361ae8dde022fcb9d0a3 100644 GIT binary patch delta 55 zcmeCu@6+c_Jq JzQDRm5CFRX5%vH8 delta 51 zcmeCv@6zW^#4H=*ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`5Ut=69BZ$5nccQ delta 51 zcmbQvGnt1wk(ZZ?0SGGN?Kg5?VwQ|>v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{EJzZ F2>@<05H$b* diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-39.pyc index ef35d8424140234e0250e83181dc58f470fca40f..44147250bbb3735dfe1805c2e560d91801f369f8 100644 GIT binary patch delta 55 zcmdlYu|tA8k(ZZ?0SF8(J8b0kWS32Jv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoXdWk1pu^M5nliR delta 51 zcmdlXu| F0swAW5H%B*Sj7ZXW|ZXT#S|sxrR3+v1SeJq JKFhIB900@k5-tD$ delta 51 zcmeBo>~`c%+5d{DM diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-39.pyc index be51a3e8f78201fb5a433a20f9163522ef4136c3..bc19656c3cf671fbe5fa78894fc2c193e941f02f 100644 GIT binary patch delta 163 zcmexk++f0;$ji&c00ah?9X4|FGRwxeSj7ZXW|ZXT#S|sxrR3+v1SeJq zHe|lQ%NRA8Nidf&dvk%{9Tv81px&bV$w6Z7+(jT}Ac!cLyhLmTWAS8PaS5qLkbnd# nAqnEZid5&ZX E06bDHZvX%Q diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-39.pyc index fc0d7fa92946266ed7c7d20a0ecf39b0c8e870fc..16335b5bc7d79b94640cc07d1a19e64561d981da 100644 GIT binary patch delta 55 zcmZpd@0RCIJq JmgLA|2LQU_5flIb delta 51 zcmeB{ZzV=N4CSYDsB9Nq&A# z@h#?p%!1^Jf|8pZ7-zG{#=2O=1XN~}b7P8=Gk{8CGP6??H~(ODX8`~_#v+{n diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-39.pyc index 91b84b2c8ca9d6e50969056322bd1d6363d8c12d..d0e51ade8005c6d0aefb3ad6779bb91ae6ca3a0f 100644 GIT binary patch delta 55 zcmX>qa8iIfk(ZZ?0SF8(J8a}`WtNS0v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jypnki3jn|t5wHLN delta 51 zcmX>pa8!Uhk(ZZ?0SGGN?Kg6_GE0WLSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Udud( F1ps*j5QhK& diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-39.pyc index 98033608a4d59b389328fbd4b63a4791d5541323..2feb75d257a4b03beb617d854e4455b174038dd3 100644 GIT binary patch delta 55 zcmeC?>gVE4gM83Fw&c J`5ns!9st7z5-|V( delta 51 zcmZ3aJWrWBk(ZZ?0SGGN?Kg6tVv&q+v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{E1}) F4*+|35eNVP diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-39.pyc index ae6381b70a9faa20bd3485cc53148536dc96f568..96a89f797ffb941771f6b1e94e941a2b0d94c305 100644 GIT binary patch delta 57 zcmaFU$@rm@kvox>mx}=i3@$rt5{$U6w#*Iy_`(u- delta 53 zcmey+$@r#|kvox>mx}=iD&y@pax1Y(M!8tU6ja6(CFZ5%=f)H#XXNMS#AIftCT{j( HTV@9Ut{@Rm diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-39.pyc index 1f182303f3b2293ff46eb5b3b930c5a034502c6f..17af596e62cf67f998c01af021e67742066d78ca 100644 GIT binary patch delta 55 zcmccRd(W3Uk(ZZ?0SF8(J8a}GVUdk?v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJcGqa2>{;=5%>TA delta 51 zcmccTd&`$Qk(ZZ?0SGGN?Kg6lutlE diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-39.pyc index 99dc2db0ee1280d6fd9fb62b175fae651191a8f6..80dba6412df5c3ae11169b5363fd45360b646c8d 100644 GIT binary patch delta 88 zcmZ4IxXF<_k(ZZ?0SF8(J8b0s!z>%^ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c rS%GD-FypPwN5sRK7;jCMk&0z3-&`g2f|;>yao9m=rFf-OpPM0%aY~DOWPKpTtYRDT0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-39.pyc index d7ffd1815ff4a7357a7459472d9876718cd8e34c..1da6a22f30fc38d699a3839bf36a574a51331325 100644 GIT binary patch delta 55 zcmeB`m?*)W$ji&c00ah?9X4`rXO&HGv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Je4EvX4FI$55mf*H delta 51 zcmbOz(JR57$ji&c00fos_8Ymkvr5LeSj7}n#uO#yrR3+v6enlo=jX&^W~U}@zRzmJ F1^{h%5G()y diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-39.pyc index 187214dca7b547aad2e33a79ea28d4cb6de21bdf..d2ac84fc04b5c3d542a3bcdf3f009373bfa5f051 100644 GIT binary patch delta 55 zcmeyM`bCvHk(ZZ?0SF8(J8a~h#wi=)ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc^9V{Cji~*5&i%G delta 51 zcmeyO`azXDk(ZZ?0SGGN?Kg5yJq JUdNco2mq#H5di=I delta 51 zcmbQt*3ZVB$ji&c00fos_8Ymo7$p;2tYQi(V~P^Yj F1OQ!7Q8LViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`44jyGXUY95|#h} delta 50 zcmeyx_l=J`k(ZZ?0SGGN?Kg7YV3v$=v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*#8Sl! E0E5O5Z2$lO diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-39.pyc index 9743b81d8d4893b299193761e35008a133c131ae..40482e42396c83dc4699397b5a595cd728a47b57 100644 GIT binary patch delta 54 zcmX@hd6APlk(ZZ?0SF8(J1pd8l1+87iV3L9D9O)@DN4*s$Fw&c J`6&|{Hvrwp5&r-H delta 51 zcmaDa{aTtkk(ZZ?0SGGN?Kg5CWRi?^v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{E~@{ F8vv9l5Y_+y diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-39.pyc index d3f0fc9ba232b8bbad489a46b0124c4ac3098f88..f680ebd2149c8e6fcb1bdb38a4433951cba3b8b5 100644 GIT binary patch delta 55 zcmbQkvw(*?k(ZZ?0SF8(J8a}OWtL5Jv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9Lao`2>_vL5a9p- delta 51 zcmZ3$Glz#ek(ZZ?0SGGN?Kg6pGE2s~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@j%7Z~ F1OQy<54ZpT diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-39.pyc index b72c7062a375167a3bd709440a8426476959a48a..ef732987ce4078272eee7d7a9d154285c7b5bd2c 100644 GIT binary patch delta 52 zcmcb{c#Dxck(ZZ?0SF8(J51z`myL0;iV3L9D9O)@DN4*s$b8Fu3fnkvp10Hp#^*CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2t@hixhV5H}L_ delta 53 zcmX?bn{m%=M(#vjUM>b8sEoJY$Q{ig8RudZQ&1UGl$e*2pBq!0oROcO6O);pnz*@{ H!!{KF!+H_S diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-39.pyc index 4921d726f88a6a05e7e783a0a2c19971ac4a3a1c..8706cca97c92c23a386caf11fd4426c4dfc0686d 100644 GIT binary patch delta 55 zcmeCS=(pfbJq Je#oRH2>`$_5uE@4 delta 51 zcmeCT=(gZaX`(`q!7SdF*l4|L&8~rf zXp!K+r3X5V5V^sLoKWQpRYCj#NPyH!c?WXoC92dT9EuQc)_@=a2_HV5oi{(;erNXn z#Dj^T8VWUiBYy*b9r!)?x2NNDb~rz|P_j)U52~S=mHc$EWSV;Z(Aem~`fE=QV*)#U zCs=>|k}tzpKi=~{X1noHzzB&Zjh`u43zp3*0$&DZ*l>NUsa0v)D;tP)TG_H|c3HQ! zlLhcrd){ zy}yxh1n0xUY#Q%`m*jQ#N0Mv`PeeMpM=0#DgmCHHNV{Q%?0~MF<6xCd1AfF?k&)KC z^rqdyW$K!68T>qq75SLNQPrU)U8@R3pK}g@VpjcRy8y`FL)a>D(PtG)yu!CjodjNqP4A&OO3jW_ z#DK)IB7z#9Q){|ikg7LS{Al=y8lUH z>}wN6cMr?ro9-3)0xx=EL(bN|>)!sM$ePC2>A+FdD;Ii8@6GT5@;LA9e1}u`wD%$V z6@TfQWCeWD*WTjnx$oG)A0`e>d=JObo7#G$Una>f6l#T{Dwha$QxQ_8F7fa5XX7z_$!XdCJrI76G}ds%8^M!ECNAPjR_?(X-t41%3|tlyf3h@-d$$b z#O6XPwLp$Ahe}92^iTv67w`p%azH&sDxhAfm8xEgxN)S1_RYE=6ajnqX*6$U-n{wG z{!(~Qh^g^->n8ElOP}A1{SoXf9@ty7>qSsa&8ifg@>$C=iu!r3-VY5irr>Z`VVTC| zaF($QHX`e65-&&1xYDZe<&sl(TwYP|RdkWe#m6XOL?A7}IL75Z;UATE%DZ0s{X;l} z=jFX@0dL7SMTfbLK32f5JNgHwDQs523mDu?x4;o$D^Wwc$idMq6OQ7K9W$LLgg4#d z1uR4J0w!ODJihFB5&Md=PZIL@cjqBi!ffJTGA|s9X$B=q3c%YzkGm3hD>2MeTu=0F z%~3!Q%2Yrja6%6MN!-jRWS$}v1-zDXmTtZymI9982fUzRl~n_5;d(An^acMA zDCT*D>;P2AKSUT6xD*!a!7F@B%tOKNdX7zzUSc+j6!EFR9Z894d_}DqZb?kHIW5u? zJ|Rp9>|?_CvLW|oS!juz%a~85Lw<>AtR=Hz!R{tUc93*%oG?S!E#L*+s%>x}{a}F{ zA=S3IsVVqxvTr{r1peSUK_~ltBk@I6khDHH$#N(S z{WV9amt-6GieBT|4qGgcp)ZSGXi;9*?0r*nLl583fj{4nSnJI25AtW^@n1YmRsnw> ze#EZe^^X_QwDDe;n-_JkOfPVTyI%0X7yFOTHvfR|iQLgbzAy`m*g7&gpP}fe0o77j m6)OglRF3A<6rZ$is_swL7us)*x`7nImtiYeYxwQR!~XzEUoQv% diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-39.pyc index 0e1e486728ebfa783e4433a1a97a63065677348e..5e91d8b8116201d44128b26ab9cd642cd08789d3 100644 GIT binary patch delta 55 zcmZ3hvQdRQk(ZZ?0SF8(J8a}Wz$%;MViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3b8h4*v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{DRe! F2LOOg5VZgR diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-39.pyc index 901f83f169d6ab4287a53dfb6946958eff3a3c93..a96445618b412009ce6eea824acd8c7174fd869c 100644 GIT binary patch delta 55 zcmaE2@WOyQk(ZZ?0SF8(J8a}GV3SR9v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJcaFoAOP6q5>fyF delta 51 zcmaE1@Wg;Sk(ZZ?0SGGN?Kg54ut~H`46vls3F diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-39.pyc index e4df13fdcc745763174d03f946df99e7839bb8b9..63037bcbdce0083a50550c36bcad3c35277665ad 100644 GIT binary patch delta 55 zcmZ3@x1NtXk(ZZ?0SF8(J8a}$!Xz8-ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`2$Rr!>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`76_BMF8_e6LJ6m delta 51 zcmaFk`NESsk(ZZ?0SGGN?Kg5?WReVbv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FCXk FA^@l+5=j66 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-39.pyc index 3d824e9789d52d1f1e7ce2dc8b21835e51d73fd6..2d611d783327fcafdad7846a63e8bb71f69022c7 100644 GIT binary patch delta 55 zcmZoQ=rrI?@H5LW;I delta 51 zcmbQiJ%yV)k(ZZ?0SGGN?Kg6JGD$|cSj7}n#uO#yrR3+v6enlo=jX&^W~U}@E@VJq J-otcU0sy!=5#ay; delta 51 zcmZoSZ#L&n(w5 p-vtsa2N4n=q7p=aG~D9MDJqRmPE5{7Eh+*DP6iP=VC|>XZ2)+@EOr0@ delta 150 zcmeAUXb<2{)U#Rxt&YF-3`aDfziE#mO1@`8hF}*{O+}L%BO7 z7^61dQ*LEsY?+**>de?Td4*~uZy!*%CR5P_AXPMR@z^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JypG9)5dg?*5p@6n delta 51 zcmaFH{)nABk(ZZ?0SGGN?Kg6FF-eBISj7}n#uO#yrR3+v6enlo=jX&^W~U}@-o#|W F2mpYo5KI67 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-39.pyc index c14de1b7246767b90274fd1ecc21772585b10c56..9c0818386fe9b2bb620aa65501bbbca15648d6d8 100644 GIT binary patch delta 55 zcmeB{?w96HFw&c J`2|ZCBLLj95_SLp delta 51 zcmeyy^NEK$k(ZZ?0SGGN?Kg5CVUbL5v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{D!5A F5df1l5lsL9 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-39.pyc index 5812536fa8567106cec1fd27488a0f44d0b10adc..29c42d083155a0816e63cf0193bb6eea4964257e 100644 GIT binary patch delta 55 zcmX>hbw-Lik(ZZ?0SF8(J8a}W%_f`VViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8``C8vxOh5+VQq delta 51 zcmX>jbwY|ek(ZZ?0SGGN?Kg6tW|NF_v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FyD1 F4FHJQ5cvQA diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-39.pyc index e45e85415e40f53eb71ccea57479bc149c6f0f76..48bee713200998ff262e61db2cff859c99d1c095 100644 GIT binary patch delta 55 zcmaE%_(qXCk(ZZ?0SF8(J8a}mV3Cb-v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+`^K=0|3vI5uX46 delta 51 zcmaE(_(G98k(ZZ?0SGGN?Kg5Kutb2rda^lcFw&c J`2(XLCjiPA5$^y1 delta 51 zcmX>kwoi;Zk(ZZ?0SGGN?Kg6tVU!Gav5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{Dskv F699qw5XJxi diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-39.pyc index 005afe85635b512d1455a858490ffcdb113361a3..2fc595d3bcff509c653fd669516c236eb7e2da48 100644 GIT binary patch delta 55 zcmcbubzh4+k(ZZ?0SF8(J8a~RVwR0_v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*rJ@5CG0J5(@wT delta 51 zcmcbwbz6%&k(ZZ?0SGGN?Kg5qF-u0dSj7}n#uO#yrR3+v6enlo=jX&^W~U}@ZeqSG F2mppc5aIv; diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-39.pyc index f87a3b117e8a83020eb984206d3235a663741aa6..adf6b96d4698c76e610d557e9575607a09c05017 100644 GIT binary patch delta 55 zcmeBmoao4%$ji&c00ah?9X4`bWs*&Bv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J{F7;lEC9+J5>@~J delta 51 zcmbQ}*z3rh$ji&c00fos_8YmcGD*g`Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@{>wB) F765_r5iI}! diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-39.pyc index 4cd66b6110b2499e7f2af0a49a03c0ae7dea2f09..bc99f816db1674b93db89ed2f4d9cfabd2ef0a60 100644 GIT binary patch delta 1273 zcmZvcU2F_d6vy3dcT2mi)$Ue5wk@rt8`4ljRV1V;$^%;Qpk=$d)9tc$Hg{%1#giAY z_3>~XNJ^-9ph&CJ5?Yi8MQB1LVp0-MJcu;$;9K1POoJ?&%y0j5?m6e)bN8G*Uw@%K zBbb?)K1F;Mj;*?y@zP$jeNA=KruH^fjy3UMEF|w~YG`SbYsFP;``M@B(E|^!9fP*U-3I$X& zgcJ(2$%-nv#{7Mg4}iG4z&%=7xWJWE`vbkb(8;nN!C_dyZ?m#IqZ8ixtf#_aI22jq zEfOEmKY4rDx}ETvYB-{DI4p4^H4RQ`$%l~(7zfGKTnkjEmiu-|F9zt&%r z7BZ_NC#(EXwq-5a-=E4g@nwxdKNQBpZ?^(J!$5!)29i?=<1 z`xsz0>L^sIfZ=SAS~MZOP5 zMns1m%1DAJ?PBRf?N-)9T2#;lB4~n$>Y>NzPC<13Gm>E~%x}N*-Ol;G`OfsWoNmcg z^73+~h+mhyY$*4Ir*z|rrq)zfD=CR+vZGaxv?r7CR&ATASj^ktWnsR=*UZA!E?=co z6%}!|Cu(-2^iU2(#ELXvHIU$G|NKDMN2YE>u6U_WpGILM>QUF8qTz+O{Q}|HZUC+=BJ7(Yp+0bQd|(yC-LY$foW4ECb1kA zWYQ11;8wMbUF7j#Q}rc;Tm~$_$>8+INi)pHf{lx>!ZOjciCxmd@Jl@Z?vfU}d=sxY zRMH%{j_@16O<=^@S)wyG!atPCUPpb0ZzyYIL;O(L>;-$^asnt3u(K4?XeSh5ds; zHwA*}DKN@ER?TJ)d9b=aAAzB%6CQRJXVnGP+v?+z|AnyGUeZ%>%^;f}nAH?~237WU zg%VmK7V^1qFRhoe%9%T*@IEMN2nnmF;xIY1$d3*>dOThN6QzIs+Ye|b~39_Lt20jBb0q3G#gY>`2%J4|- zQkLO;wG}Im!s#90d?m8u$(TqQqhnCj11his=my#aY@bQ-xVEJ}rI4=Dt0Q&ItixJS zmm{?~m7t66b@~eFJ3{gJ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-39.pyc index 83e5cc2074683a85aabfa941a6090e1248d3d9e6..d313b7d4b1ba76a53919ce27c16f116f0b58c160 100644 GIT binary patch delta 55 zcmZqU?&9W7Jq J{=wA81OTtn5wrjR delta 51 zcmeC;ZsX=oJq Jj$u|31pvNg5aa*= delta 51 zcmZoN{Aa+O$ji&c00fos_8Yk^m?fiKtYQi(V~P^Jq Je#<)55CGRB5}yD7 delta 51 zcmZq6Z_4LRFw&c JS&lh~5dhwV5uN}5 delta 51 zcmeyu@qvRok(ZZ?0SGGN?Kg7&VvFw&c JS(e$35dhTj5nBKN delta 51 zcmcc5ahroXk(ZZ?0SGGN?Kg7&WRgs9v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*tjKJ~ F2mp(J5HbJ& diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-39.pyc index cc4382935033e29f8c0bac0490c40cd6af3b0880..03eec4fb2e90d51700f7b37c968b6da3d1e48aba 100644 GIT binary patch delta 54 zcmX>rd{LM?k(ZZ?0SF8(J8a}$$t0WYViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c I_$(7U0J(q>a{vGU delta 50 zcmca8d{&q{k(ZZ?0SGGN?Kg6-WRgsGv5G0Ej44XYOUciTDNfGF&(Dd;%uY>Qe36MA E0CIB>N&o-= diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-39.pyc index cd40e5d255f0b89277e381e1544dc4c534c57b2e..2567339919e5634ed9c12c3dcc13918973aeda3a 100644 GIT binary patch delta 52 zcmeyt_=k}@k(ZZ?0SF8(J51y*kgVE4gM83+kMa0CM(#vjUM>b8Fu3fnk-LLUHqFH;kMZz4M(#vjUM>b8sEoJY$lbvvndD*>Q&1UGl$e*2pBq!0oROcO6O);pnz(rb H+jI{AwS*D( diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-39.pyc index 725a30674f624a01fe56ef2ccb28b7acada99676..e6df7ae720d67ea85b50dbe925a07664c5d04406 100644 GIT binary patch delta 55 zcmew?{9Twkk(ZZ?0SF8(J8a}mV3Lh;v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+`^R44gk(C5t{%2 delta 51 zcmew^{8^Ygk(ZZ?0SGGN?Kg5KFiD2FSj7}n#uO#yrR3+v6enlo=jX&^W~U}@?qJGi F2LOgK5OM$j diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-39.pyc index 5864f2977755db9d3491b617831ee49febf4626e..0d59d46af1e9a03a5e43b647bcddaca892aeaebd 100644 GIT binary patch delta 55 zcmeB=o*d1c$ji&c00ah?9X4`rWRs0^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Je3fmN8UWCt5_b8Fu3fnkz0mcHrB-|CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4@}yPgjK1T_*u delta 53 zcmeygjPczvM(#vjUM>b8sEoJY$SuPz8R=pbQ&1UGl$e*2pBq!0oROcO6O);pnz-48 HUC##qxTFyo diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-39.pyc index 93391c26dac7447f4fb664184b251c47b7f207f5..28b23c6dab23c2034cae9d82d7bbb0e9ead52b53 100644 GIT binary patch delta 55 zcmeyP+n~pt$ji&c00ah?9X4_^GRsD~Sj7ZXW|ZXT#S|sxrR3+v1SeJq JR%N~}3;?tp5g7mg delta 51 zcmZqB`=iU9$ji&c00fos_8YkwnI%JAtYQi(V~P^Fw&c JS(jrkXEo@_O8Cy4N%=nmFlYyWSU4$^9(p}pN>u7K5xp%-o z|7Zje6O}W*RR%GLNI{|XdC}+kx~+^6<(iSmq@&NryEB4m9P%`yk2gt5&EuV7Zecak#EXUXtlQpR zSm9zZadh%w)+0KKt5{lC#dFvT;$U${K@!$#aE$qg;7^DGQ-fC`umh>LY4%NOUA*Kq3rp*-%Cf730&&0P1?Nt6yx z$g`uY*HXQ@c|Rx9;#?QL(oh+)cJk6%*73(;YjrDW>FHQZogj1VD2*~p94}qYw%G0| zw_U+iQdd@?N`81Xfbv5o1;J^|5NdFx+6(?G0IEPYsJ<~>M@gD%k||v+kmipCXOzDI z2~0UfF(bp%am~~dF{qgQP4QRoJ<(NLYWJ7@=$g6&W8cJ0W%~x9-fwc;AN6l-F&Zjcltjw z5rE@CeN4w2PwAS`o24rV12^9R93aEzs*W?ZTlCaa2eyHG1b3BQBb7AP@sGtoO%$vv4Q$yfLn?={0pHFKc!43h4HOKQWfhtd~{KYF4)?=aO=%5C@wA zY@eu`^(fmfR?j-B5WAWJo37q%LH!*?-d0Q8!hgVM^q7V z8k>(qboO+4&-2Dt@*x#l!rRFM%J zhXETTI11O1m+H$o{sDp!QQHt=!<5^o=xJEWM#R~MJ4y$Ho#IqzOKr{*&H=#xK4f?~ zEpT&Xc)9WSML)@-bU__bAQAwI8LNa!k&Ctjn)mxnpjP=!!Vqw1n*x_nPj^ zqa@EjM)759C};d zBajsm9Jic9gWkR48# zmwr`f?$=Hz`8)D-|#1vxwZcuF(Pv~G2065P$i&Baq(d`O&bt!6_) zt1S_KwsuaqEH#(P+FcY&+j``FI1zbR4*k`(FuNojY1( z*Bvj{vnegEb1#!(gfrHLOQ^B97zweR_P>$8SxpRg-6%*dUlj&t1L6{*@`>=Y$Zzjj zMun#NP++tQD)eZ!Ny_nV(72H_*784anlM&mll!2oL-`p<6y1nt688fe6+`V)r_uAf z3!w*L$Q`B|)FJuUFc71*dtoCBPnL$3sotEy@!_LjPQgAr^HQlbmg`-*J}5RXYE>WT zA3Y0d9rcRZMEx7Yk_vN_f1b?U^hv_UiabSylgf#!HuDG^Jr1BE+yeEhUH_!TTF4Cr dM;^#z9pudb%wldY(3+qZ*$>_j;Ieex^&b}uGRgn| delta 1999 zcmZ8hYiv_x80PENcC1twTiH6;CTzeu7~O#Ar3p*^F8_H=%ygDu7^ z8c;M*!(J{!4T1)|W)4p#q8SV@1X&V*DjPye7sN62IpyqY3B7llQ#$+xMRD z6KDE_NAr5~$EmNUEp*b;;Ph`=zNodcr&Vf3G?i>MBe7H}(Hh^OYgW7SCzserjT7D% z>#biW1RYhHvXgZRY?qmmX+0`8<0nTmdStz#0y(mUmQJh`?W9et72B-WCzd!0Ld4@<(_vE?aX*xc6oi_$=RWK9Mpq#>^8O|nf9C8Z{7W&0jx?K2N^%ljlMf8Il z+Z~NdLrdy11>OEStG(!5`Iy{M!lqL{X8rD}axCyq6-lb~Zw#cte-^-XZ3ERk zrfa+6W=A}s2fV65gZ`OiyCH!qds3T`lF5i>>d`i+nDQn1)4xyjS-VSraTFhbVm2^* zt4#W>-m+_A`kN5G1y=rjI+D{lK;0E{9_)t}$I6ZATGY-MCIF{ zj{^<@W-73qGO7A4OBEf+mHo7T`X95AknN18^`vRLBMDtIx;oheX~FU}z!B@?8RvvJ zNJdp6@x|T%6P)>Yn-h z!o%S10%UXk2){6uLkjG?PMPY|Wx7Xx2HvT0bSzXXh?-_qI7x9L`wINl3$r?ezXj^< zHmP@XnYx|RnU2YFm=KBTA{Q4_PW7`2#bF9o&lhh{OSp`Bt6vrUmNzg(lwlyYOYe@G zX;YqqB|P$LkY^}dbvEZ26GjCpIsC=Jj1%e5B57Fsl|jJ^xTr)Q#pR|vQlM`f4Mv^Li{#ES2gP`T%+ zxS-ev;Cyi}xS&j?MbNxEUrzH|$X^D$!pU5r)Ag&xe!Ar>qT=~C7mYx43c$Hopm;=& zff@v0=Gk)9@!+0kY8#^E3kEzR(BS(e->{N7wE|)k-7Y~zJ|y33hZ39Y6ic0J5Q=-r8Zo*o$9Q_JLO61 z=OsjcU+EdLq0%v)&iE2Z!m0@B&&FE~U!G zsEE$P(_aOi`;U=hCR{hGfSjJvC7k0=V=0M&6SP$Tr W%nzI25l)sI23$gFw&c Jc|W5$69Ch=5yJog delta 51 zcmeyx{*9eGk(ZZ?0SGGN?Kg7IW|WL{v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3;Rk F2>^=@5Sjo0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-39.pyc index 019ce265608b230f412cdddd8dfaa37f0f0c0fa0..3d8f5b82dac650f374c85216e1d93b2300f30f0e 100644 GIT binary patch delta 52 zcmdnbc$kqpk(ZZ?0SF8(J51!ZkXdnuMXk(ZZ?0SF8(J8b0E;*`yBv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ z?8jNiq`;S-ms6>mnWmeUnwpZD@{7MDU$;21B(pfJQWqq(`9Al4HePd}p>9PMKr*Dr ZZ1ZZN0#-(|%`y_(IT+11Us3qQ3jiy8DOCUf delta 122 zcmcZ%h4Io9M(#vjUM>b8Fu3fnk^2>kY@Ul%Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK()qRtHxA4VDs- delta 53 zcmcaKh4I`JM(#vjUM>b8sEoJY$o+~%GRws(rl2yWC^0W3KR2d0IU_$mCnhsHHF2{L HtAi^5z$FoA diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-39.pyc index 6d196af52a3fa46f682be64f92c0ef3559233610..c3ccc7c0458a53cbcc2bcb68f01a77052d045d9d 100644 GIT binary patch delta 1677 zcmZXUYfM~K5XU{c%Uxh0WxFk}vMtXo%cDYyh^;NqLfS%Oj5RSB%(^U>_LkkdaCXrY zKM+lfED{P%V`H@>ZJL;Ng{s#_>Z_!_V}M#TO>a>@_@UOQO;Z!~gW~z0TMLQ%;dkfE znVEBD&dfeH&YmAz3l}ZQ0WK;GqNYsNTtgdUrI^xi54e8Vz^u zX>V;da-8Q}%rw4Uy~vb=@Zuw6tl_ssqjGJIT^WITn0DuG%sK*5n)O1OFotrQnKA+S z1^O)S+MN*j?d)Y*%Fk5}V{e4K>xznB5u)kn8PG$1g+C>IfED5B@paSLSet1*JUXcA zF*VL_M=ve#(?bQGdpYi4IyA2K^OxX%251rRJ6A;g-%XDe4A@*}VJnYL8aW#rww+eW za8}Heu%`FM_#xQHYrh7m6j&oIxJ>$ODBb~{2Ks5HGKU6=`by-+ZlN>XnjVTq`hsz- zOABjpO^sO&WTY0KXKa$bD7jXc6qctM{{TU7eclQj7dXL$FiG>JJGOoV-AMsI;~nC2 z+F?b)S!Tw6#{{(Q7{|%{JYWT)y=86ebvjzs_P|@Pw(l3kl=;fMWEIZA+zU(tR;h*L z&sdSG4E!GUW!6M@`|{l5SR)0~5fWX+r>Mi{Wi#}oZ96?66C!qkMVv)*aEDmI6Yk6M+hiKYQKqwxN4vsm#Hvmb zXHt6Q9J@qUDjQd$C}z5NPc;@0T^ZqXR8iGluzU6xB2^SeR`v4zKltPu+?i?q4~)tHluUTZQsH?##*J-3 z+mNi+O&F{KWKik;HiT}W8e<~QxR<)3C3mq{7PZ+XaFt&-vQqP*}#v$b)W!{MZw!~SqeKOIbj)$Dt4O6r%;@t^p=G3 Xxey;Mq?wj%<7~^fHa1Gn?t125n{2}7 delta 1701 zcmZXUYitx%6vw&S?d-y~_PuTG0)4QhTiS}Yl7f#yTvBZ@G0{YZ@PZQ^|R&6)GM z=bn4+jAhtJhI!Qd{AEk%84Pv2>$$E}_60ZeCI@@D8jmDmy{YhyL?YU&_iL(I>*3#_*@vuQFrYu)d<%X_C`O64Ni<+vM+6nkL;S*5!E}05gw2FvS9r5Cu zQt`x)7EfsgpI@}W7ht=^qrUQcET_)3oqQjHCxIX#;98XOf7MU;1{|Iv@RjRMnN=&D zj`emM5Ug0aQ9a(D;)C#!H6Mbs3MiExTsC3`ilbs{%^o%*uGILHqfoqJ=GC5HY`-{L z_p^VBG?R>f1OqDLn}Ih72N((aNf>Gq*}7VBV^vkUeLQWcSUFFPT2)sM4j)4e*61>Yk}puozHsYZB5 zD5mm$ji>mS4AtY?6S7Xr^`BuU8TbZZQM<*~hK(L9!DoTb&4Ufc8JiVqqqj^JS`T$4 z@C7g`#v50#^WsqB^43pD5pdgkoFlnsX*dy$YGFf*SWLGIcO`jZTU3kLJ)06Y8!xe} zxVWaH7;Unag%dF?6{4|=@mbN*)a^Tuq`7ud*-48Oc5%~UZ__rG5r0WO-8{fX&201I z4tn|5wzJkV@O%wW36@8XhXzvA65Y^vBWZdHNrSIYQVsX3eOju=%-p@!!P4SnYl%m$ z)`9R*@m*_e;ZG3d<&>5mL{ZzT3J!*Mh-`D2IMwzx`-N_0jTpbTOOXTCAuhJB5w3Mx z8f4suaF)ZkFp(dVZnJ~*GT=c3m~X9%Fg7YY?JL?)zNMrRoSJAKr8~@ZLl3J_%lT|V zkMna#T0x-eEHB5Dc&7b=@)FdKpfK}^^-ntL<%Eae=8zN4e}zL5SSaQT9ID ze2bo;+-jP*YKpiFzds3dKW>UM_y1lmkKy*!c_EgQi9fO_E^7WQ9Y@88}z!o2i@8qm3z+gQ|K z9~46W0dB$WHn`r`M-ySW<|Tg4%-i%F8yxck(ZZ?0SF8(J8a~xW|1v%v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJfB674*IzbGZO z=oW85Vo_>dNqkCbK}kmOt;ziYMvM-d4++RHGTz#JU(k-3(P6TjXa!^R11@A^i%gtJR7EFdwYz3Kld8sK;Y^8Z=MX9M#{6(pSrK!awsVVXKMJcI8QM?6- zMX7lu@hPbVB^kw0lP3!pG1_lFCLqJe7`6GapdB-#{bVK43dWGhvqhD8LxJwlWWB{) zTvAlzGWoQqlv*%Yq(}ou73qVB5D)=UR}>B+WI%-dWNxuYM$gHqVgXXIAOTOf6j)vs z#EqMLUQ7?D=%3g^MytsS#1nvQMu{2RQ6Nbk5aBX;iG+^4KZpskwul8p#DIu65Wx;2 Q5;wn>5Cpn?GNV)k0HP;TxBvhE diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-39.pyc index 403224dcf6320f942e4355f74b5c7347fb892509..7f35d800673d245376f202180f158c9bde6d7837 100644 GIT binary patch delta 55 zcmew)`Aw2Lk(ZZ?0SF8(J8a}$%PgDYViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`69C-Cjj1s5(fYP delta 51 zcmew+`AL#Hk(ZZ?0SGGN?Kg6-WtPlvv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3e;| F69AOo5Z(X) diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-39.pyc index 165300e375b22c46a08f923ce6198efe5ae39481..3ed298eba638d39f5de4153d99ec45e92a145bf6 100644 GIT binary patch delta 55 zcmeCRo@mXT$ji&c00ah?9X4_YFv%9USj7ZXW|ZXT#S|sxrR3+v1SeJq JE@6_C1^}~r5Yqqv delta 51 zcmbPe-D}OA$ji&c00fos_8Ykam?U#ttYQi(V~P^Fw&c*^aG+mGRc*!`#mp8E;Kq z#e0a+V{$IvPR5MQ>ikyBj9HVDggW`WftKE4E6y(}Nlhv8ocvSBhC2f&R8$Tk3MM-U zzh?6QF&icuinOqSMe{fB7P-#MQ3({*WG?EMJWE1N2_$igr692+;}&aKW^raoQ2|Jo z35YNS5tAlAk_c041u?-InIJag!&OayE3KFuCn?QW0px2k-(txuNzE-P*xW8z&FD4- zqy}uTBU~TCiaMYeDx-UK` m&7=x)&n?dM)Dj<{WNJ}SBamMd3L@G-1jr3Vb(5dTW&r@ncXMn2 delta 438 zcmca&bHRo?k(ZZ?0SGGN?Kg6Bu_*AD3NU-b0M; zlMDHFGNw)5FCx0xfnSxGF=KL?P$!=k(9&CM#rZ`gsVPMslm80YaHj!# z0THGkV#4HS5@G($ASPHN6U2sGxT-$5(lQ|HIuIB00SN|SHbxdEIerdi0Y(9)B9NRW z^DUOllGI$F^FW?iAeqL zPtVLtFLIgeBVEDf1{8~un>z;v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJdMeV834sA5nccQ delta 51 zcmaFD{eYW0k(ZZ?0SGGN?Kg54F-eBFSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2g(F F3;=z_5H$b* diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-39.pyc index 5315c9583fbb7d9779962982cfa2314b6632d78d..ec1b22cc0b63c2454c6bee9bd5775e4e590e0ace 100644 GIT binary patch delta 55 zcmZ3=wUUcFk(ZZ?0SF8(J8a|@VUmq@v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{B%F2>_mY5YGSr delta 51 zcmZ3$S51-ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c o_$wo`6h~rFdO>1Qaq2Dh^5XQ&qSUloYz37i8TomW`B_f`0HIDD`2YX_ delta 81 zcmcb|eT$nrk(ZZ?0SGGN?Kg5?WRwhZv5G0Ej44XYOUciTDNfGF&(Dd;%uY>Q{F9Mc jimjlsBqKlX7Dr-HdO>1Qaq2Dh^5XQ&qSUm>!mOtOI0PKj diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-39.pyc index 680c17e5fa3fb8d517fd8334062ef42dc8c5d593..85f654de5fd432ee126d8c67ddd77d3fc5994152 100644 GIT binary patch delta 55 zcmZovXjR}&Jq J{=~%33jnqC5nliR delta 51 zcmZowXjI@%2tYQi(V~P^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe IY{$3-0IK2<3jhEB delta 50 zcmeyy{E3-6k(ZZ?0SGGN?Kg5uF-k_bSj7}n#uO#yrR3+v6enlo=jX&^W~U}jc4FKD E0A;BU;s5{u diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-39.pyc index 537dcbfa8da787eec59cb0626e7e12afd3fababd..2787d226c697e6d0e6f26d5453aa1aea6a47f98a 100644 GIT binary patch delta 55 zcmbOzK2@AMk(ZZ?0SF8(J8b0UXOfL~v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|IqL2>_Z95HkP( delta 51 zcmbO#K2e-Ik(ZZ?0SGGN?Kg7sGf76fSj7}n#uO#yrR3+v6enlo=jX&^W~U}@HfM_C F1OQet4+;PP diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-39.pyc index ed4e70444792074dd8557d91a4a2a232e9a9d579..2d7c5a512b81b2415b0911fcd56df7fb3268c12e 100644 GIT binary patch delta 55 zcmbQhH-(Qok(ZZ?0SF8(J8b0M%OsoTViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`5}`&3jnfH5l#RA delta 51 zcmbQjH-V2kk(ZZ?0SGGN?Kg7oWs*#Cv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FF(b F1psUD5G4Qr diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-39.pyc index befda7ce687d09023cef03302c483c17a87f242b..238de4dfeeb20b178bd540e881c95c2fc8d39a18 100644 GIT binary patch delta 55 zcmdnPae#w6k(ZZ?0SF8(J8b0UW|mEIv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtk2BL2mqx$5Dx$V delta 51 zcmX@Wv4?{@k(ZZ?0SGGN?Kg6BGfT#~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@HfH8! F1OQ-v4(0#= diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-39.pyc index 9ad3450d4084d4081fd474705822fac02058340b..b527416200f81e4bafaf664e5dce2ae73b9635f7 100644 GIT binary patch delta 55 zcmeC+>fz!}KtYQKxGfMLFVu}*;Qu1?Sf|E1y^K)W6yfqu|gD22>g3{1O<8UL E06#7dF#rGn diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-39.pyc index 1a121febbcf5ac4fb8c4a970485b952ded01d17b..6ad1f2c3b431ba09b7fb335e02c747f67a098b9d 100644 GIT binary patch delta 55 zcmZqG=+xj&Jq Je$1>S006hn5orJb delta 51 zcmeCwXw~3OFw&c J`3a*jBLJ};5l8?4 delta 51 zcmbQuHl2+-k(ZZ?0SGGN?Kg5CV3dq>v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{DRS# F5ddo75FY>l diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-39.pyc index 3f8e42d8e0b52a8b9bdb800cb84a951f75c003da..a4d19eb024ae5285615565713ebb679d1a1b0af1 100644 GIT binary patch delta 55 zcmX@ebCicWk(ZZ?0SF8(J8a}OW|WO|v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9M1TP1pu$65kvq0 delta 51 zcmX@gbC8ESk(ZZ?0SGGN?Kg58GfIZKSj7}n#uO#yrR3+v6enlo=jX&^W~U}@j%Iwt F0sv|(5E}ph diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-39.pyc index 5c296a9f9e7c89e303b6edf466242fc0d2708cec..f05fb1a461923db001a8963bc3bc2e8c0751fdd2 100644 GIT binary patch delta 55 zcmeya_FIiRk(ZZ?0SF8(J8b06VU~?@v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJc0Q+KLFau5@P@W delta 51 zcmeyZ_FauTk(ZZ?0SGGN?Kg7gFiVEHSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2GZ` F9{`cw5jp?> diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-39.pyc index 644e52cfabc02f82149295c30919b59c6594406a..e044839cd03ce87ae3cb5c866a624c00ac1942c2 100644 GIT binary patch delta 54 zcmdnNzK5MVk(ZZ?0SF8(J8a}W!X%sJViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`32Jj0I+is9{>OV delta 50 zcmdnPzJr}Rk(ZZ?0SGGN?Kg5CVUkR9v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{D$cQ E0BQyh_5c6? diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-39.pyc index b03e64f63ac80a8e6a4cc85519c1877dc3b4f1d6..1fea39c3c27c713abb2a541f5b8d2415bd5c5937 100644 GIT binary patch delta 55 zcmX@%cE*i6k(ZZ?0SF8(J8a|*WtNS0v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*-W19stmX5)c3Y delta 51 zcmX@(cEXK2k(ZZ?0SGGN?Kg6VGE0WLSj7}n#uO#yrR3+v6enlo=jX&^W~U}@u4O(i F4*-a55a$2@ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-39.pyc index 2334d15c03832b5ba3077f08465efc1c5a2f4731..00cf8ad9bc68e8e70b11d121583d74ef6c20afe0 100644 GIT binary patch delta 57 zcmbQTl5xgLM(#vjUM>b8Fu3fnk^3>5Y=nzdOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK(*N_Fi8A`Zp4M delta 53 zcmbQSl5xsPM(#vjUM>b8sEoJY$o-g2GQ`Cyrl2yWC^0W3KR2d0IU_$mCnhsHHE}aH Hd#^75u4xfd diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-39.pyc index eedb3e23107fb174d27f5c80e2a64cb69fce57d7..99a2b51107c10c2e756eaff7f4a71349d438b027 100644 GIT binary patch delta 54 zcmcc3cb|_tk(ZZ?0SF8(J8a~>!zdf&ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Ii7A>D0KlgaK>z>% delta 51 zcmcc5cbktpk(ZZ?0SGGN?Kg7YVU!GWv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%)%7S F3IK?S5E%df diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-39.pyc index 558da2b749194d0408c0d1dc1dbbcac61d547f5a..5ba8d9c4fea6a713fb3b99cd7a1ef460f3f7e2fd 100644 GIT binary patch delta 55 zcmX>td|sG4k(ZZ?0SF8(J8a}W%Pbq~ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`6Kf!Rshf?5|aP` delta 51 zcmX>vd|H@0k(ZZ?0SGGN?Kg6tWtNO|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FV6@ FD*%V15o!Pc diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/parallel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/parallel.cpython-39.pyc index 033433797c30fe5348abb9ba5b3b27081f166ee9..a56ed72273956faee75cb15031c920274988a07c 100644 GIT binary patch delta 55 zcmca0enp%+k(ZZ?0SF8(J8a~B#v&WzViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTz!p8vxVG5yk)j delta 51 zcmca2enFf&k(ZZ?0SGGN?Kg5iW08z-v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*T3+ F4FHOr5S;)3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/pkg_resources.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/pkg_resources.cpython-39.pyc index 6f3032d7c1c9da03badcacb874f3fef5c8bf6151..016fab9dd361178583588ba793b96515d33af06f 100644 GIT binary patch delta 55 zcmZ3yONhXk(ZZ?0SGGN?Kg6FGfKv~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@-pu%m F1psdL5VZgR diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-39.pyc index 62b915315228fe7075df09a0f49dbfe3eda6ad60..af62e225840a218c42bc45f90e742cef602254a4 100644 GIT binary patch delta 55 zcmZn_?-b`wRxt&YF-3`aDfziE#mO1@`8hF}*{O+}lUUT* E0azsu7ytkO diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-39.pyc index 38b0e4aa9678dbc835080087b2dc74c915501d23..6e29a2078bbeb579daf8424d15f110204485f0f2 100644 GIT binary patch delta 55 zcmdm{vrC6Nk(ZZ?0SF8(J8a}`VUmq=v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyn?Au7y!j%5y}7n delta 51 zcmdm`vrUIPk(ZZ?0SGGN?Kg6_FiA$aSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Uc=NU F3;=!Q5TO77 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-39.pyc index e182909b638376e6edc94bcf86f838494209ff3a..a1d40458faba90ab1637044adc85c413749b5b28 100644 GIT binary patch delta 55 zcmZ2(y4sXGk(ZZ?0SF8(J8a~h%p@D*ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc{|ewaR9}%5v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yqoER FH~@Y!5f=ae diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-39.pyc index 733800479fbe65f37928f8bd01c0336b6ed8dd14..29143f967cfd62362b5c43555bf320c19ac462fb 100644 GIT binary patch delta 55 zcmX?XbliwLk(ZZ?0SF8(J8b0s&LkV_ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS(;fx3;^2R5pw_l delta 51 zcmX?Zbl8YHk(ZZ?0SGGN?Kg6NXOfI`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EYGYV F1^|%&5J~_5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-39.pyc index 1e4f0e792577ca263510e653a8bf93d1c97081d8..977e3db652006cbeca9d4423c5091aacad6bbb55 100644 GIT binary patch delta 55 zcmey&{hgaTk(ZZ?0SF8(J8b0UV3dt;v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JtiyPm1pvJX5i9@z delta 51 zcmey){h6CPk(ZZ?0SGGN?Kg6BFiM8FSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Hefu? F0swZm5CZ@J diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-39.pyc index abee97d2c437618f0b62400b219cda21218027cc..852d5c1a5f9a1e46686a21dea4bfb2686a7a8945 100644 GIT binary patch delta 55 zcmZpYY?I_pJq J{>j+M1pu^E5zYVr delta 51 zcmZpZY?9%obN~PV delta 50 zcmeyx{EeAAk(ZZ?0SGGN?Kg5)GD?QISj7}n#uO#yrR3+v6enlo=jX&^W~U}jUdR{; E0CSlTO8@`> diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-39.pyc index 23c4e6ecdeefc07255d7fa9197fe4994d38acc14..4e53a69005159089e6b11d0a48077092237fba74 100644 GIT binary patch delta 55 zcmZ1@zCoNjk(ZZ?0SF8(J8a}`Vv>z;v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyo`yB69BeB5byv1 delta 51 zcmdlWzDArok(ZZ?0SGGN?Kg5aF-eBFSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ud6=5 F2>@@~561ui diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-39.pyc index 728220417b1be92f40943e4b4c94a9e03a792e8e..4bddfdb2155f10386fd12f1aeb938a57e6aa821a 100644 GIT binary patch delta 234 zcmdlUy*rvak(ZZ?0SF8(J8a~>!z>%>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c ziDkPKzT{)VtYLNtuOl$>dD6&x{i$ z$Ev?$?4InSVZzumxltpWaq;Av8i@jHf!d11L4*W|*tpqClbOkQ3W&V~MC5@*LBw_- zaf>%TJ~=0`xHvgACnr80q7kfn?c@gS`HXWXE9krwn*~z72&9}dJ+;IqKRrFQsA$Jz HdEFTRRz*o$ delta 231 zcmdlTy*-*ck(ZZ?0SGGN?Kg7YVU`SZv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%)+u= ziZN>Q9=Q*Uj9r`8Ds(amcL6n4aq8-(XO`%uWEQ!F6!mQOR8nSPTs%2f?K5Nl z$0z3`78fU{=H$f3Lo|YQubJGUJ)d#TWEGv4VlzR?7lM>?rl*$pFw&c J`5BWbKLEdh5ugA7 delta 51 zcmbQQGFyc^k(ZZ?0SGGN?Kg5CVv-DZv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{EEqx F9{_kS5O)9o diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-39.pyc index bb063b973f05e4e4d90567be3807f4424ea7b777..cdaae715dc997f4169886ab8a45723fd52e6e574 100644 GIT binary patch delta 55 zcmeCRn`pb8Fu3fnk$W+-Y=VnbOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;V5%$^j@Hy delta 53 zcmbO-gK@$PM(#vjUM>b8sEoJY$i0|ZGRDO!rl2yWC^0W3KR2d0IU_$mCnhsHHF5K4 HW={_QpwAIu diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-39.pyc index baa73e50f4f139295964690cc5971aa4e72a4089..4a699a461c2b803dcb72efde7713ecbe3295904f 100644 GIT binary patch delta 62 zcmX>uc3O-(k(ZZ?0SF8(J8a}mWswbWv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Q+{rSFmGRbQ6)t5)06}~cS^xk5 delta 58 zcmX>tc3g}*k(ZZ?0SGGN?Kg6#vPcHFSj7}n#uO#yrR3+v6enlo=jX&^W~U}@?q!+9 M${4j-gG-qa0Pmy`wEzGB diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/__pycache__/appdirs.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/__pycache__/appdirs.cpython-39.pyc index 4d184107da1a991aae761fc47aeb9d48de13649b..9f5f4099c1d1494264226ef7a68ba7cdc80d24af 100644 GIT binary patch delta 57 zcmeBP&e*@4kvox>mx}=i3@$rt5{$3tIN delta 53 zcmeBQ&e*-2kvox>mx}=iD&y@payKzc`ny=g6ja6(CFZ5%=f)H#XXNMS#AIftCT?EE H{L~)+pQ{nc diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/__pycache__/distro.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/__pycache__/distro.cpython-39.pyc index 5923f22e9c985d3fc1a0f221f1f1dc29e90cb0fc..3bb1a7a83d3201d96488803b0ee212864e5ab86f 100644 GIT binary patch delta 57 zcmZo#z|^*Yi93;(mx}=i3@$rtbUt9mqsf9>je_R delta 53 zcmZo$z|^#Wi93;(mx}=iD&y@pa&P03^mDO_DX5GoO3X{i&y6Wg&dATtiOI}PP27Bs HOQRJ4pu-WF diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-39.pyc index 64d1699976af76e4ae30599b1afff0bf9bf1065d..c48a9ea6a4dda4c04297c64f09a188a1dafb9ecf 100644 GIT binary patch delta 69 zcmZ2}jc@feKJG+bUM>b8Fu3fnk=sm4Hq^x`CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; W)v-BBsy#}I5r~<#M@ccCod5v%<`!B2 delta 65 zcmZ2|jc@riKJG+bUM>b8sEoJY$ZaMi8R%jaQ&1UGl$e*2pBq!0oROcO6O);pn%EpC S)gC9s2*ga=b8Fu3fnk$a|qtiOv@Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;Uq0;{6{Dw`A^ delta 53 zcmaEJjq$}bM(#vjUM>b8sEoJY$URd)(%Z!Fw$` Ic`IWI0GQ?w{r~^~ delta 50 zcmbQsGLwZnk(ZZ?0SGGN?Kg5yWR#3`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5ypu5n E091Vs)c^nh diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-39.pyc index 53d01dd5f87fcf5f5ed4e0a3bec58186d2925265..898e5339fb395bc2e038056cd803e242d2cb0f0c 100644 GIT binary patch delta 55 zcmbQnGmD2ik(ZZ?0SF8(J8a}`WR#6{v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyp*w!1puj*5fuOc delta 51 zcmbQmGmVEkk(ZZ?0SGGN?Kg5aGD=3eSj7}n#uO#yrR3+v6enlo=jX&^W~U}@UddR< F0sv$z59|N{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-39.pyc index 91a641e208c91720c38281cb71ddddad5e054fc2..266ffbf6b60b119e68f43d85922f773e70071607 100644 GIT binary patch delta 55 zcmew^{#%?ok(ZZ?0SF8(J8b0M%p{xOViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8tyVCjj395()qS delta 51 zcmew@{#~3qk(ZZ?0SGGN?Kg67W|E9?v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e49yu F69AQ95a9p- diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-39.pyc index fdfdf1c272bac9b81a8d59488d71edae29feee3b..4d8edd43ab9745aec31d66e34b1b3ef0c296416d 100644 GIT binary patch delta 55 zcmbQlH;s=wk(ZZ?0SF8(J8a~xV3dt>v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJcqH26#%Dp5e5JN delta 51 zcmbQnH;Iosk(ZZ?0SGGN?Kg5)FiJ+bSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ucgw! F3IJj}58VI& diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-39.pyc index dd5361c5afd7c882a8a07809b85f64e89856fbae..659a4e37182f81cbe6b9c74fe21ca7b795ccb7f3 100644 GIT binary patch delta 54 zcmcb|`iPY~k(ZZ?0SF8(J8a~(W0H+`v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe IoWxWE0I4<*`~Uy| delta 50 zcmaFFdXJSmk(ZZ?0SGGN?Kg7UF-bFw&c JS&li76#(G`5v%|J delta 51 zcmew?@LqsBk(ZZ?0SGGN?Kg7&VvlE diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-39.pyc index 49779d73834be979477e33be4fae0556faaefde3..1a97bf051b8166e6c9703c86f63e9aad3fa421a4 100644 GIT binary patch delta 54 zcmbQrI+K+Fw$` Ic^~6-0GU@2d;kCd delta 50 zcmbQqI+c|>k(ZZ?0SGGN?Kg7IVw8+=v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5e2DQn E0957>Qvd(} diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-39.pyc index 14908cafafd0c4d8984389735a107463d828ca40..d35481e831c395f833e938aabb19f950d03aaae0 100644 GIT binary patch delta 52 zcmbQqG?$4xk(ZZ?0SF8(J51!BBAel26%$aIQIek*QSp3jcVgf2NO7in!iW2iu@^fQ?lQZ)3b7DNbT^%QG G3IzamH4vBp delta 48 zcmeBXYG>k3Fw&c J`5dDz3jov5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJeTPZ3joNK5$yl~ delta 51 zcmaFNcb|_tk(ZZ?0SGGN?Kg5)GD$|bSj7}n#uO#yrR3+v6enlo=jX&^W~U}@UdVKa F1pt8a5X1lg diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-39.pyc index 75f5d9c5f4093e19c229ef83acd8ef615f5b578a..9f5d517c12bebdf657d6f2d7ddff98696c6dcc0e 100644 GIT binary patch delta 56 zcmbPtg>lgpM(#vjUM>b8Fu3fnk$Z8bY>bOlOh9EuNq$~TQDR<7er`-~az=iBPK>9w KtK;P3nc)BhU=xf0 delta 52 zcmZ2l{$M(#vjUM>b8sEoJY$h|mIGQ!0wrl2yWC^0W3KR2d0IU_$mCnhsHHF5Ik G%y0m>XcA)p diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-39.pyc index 636e92a825979ed7606c448bea0beb3b5ce8a00d..b315bd732f3ebf08e833efdc016be47423d1c1e9 100644 GIT binary patch delta 55 zcmaFJ@sxu*k(ZZ?0SF8(J8a~Bz$hE%ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnT08q2>{Z>5lsL9 delta 51 zcmaFL@sNW%k(ZZ?0SGGN?Kg5iV3dqFw&c JS%yVf1OVBL5o-Vd delta 51 zcmX?Xu-||?k(ZZ?0SGGN?Kg7&V3tg9v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*tiYly F0sxP?5JCU| diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-39.pyc index 245fb0c79d92411637539a30fb4937d7396f1a78..d3d70b637a06df20d78863b1e3c23443c7807243 100644 GIT binary patch delta 55 zcmX>hct(&rk(ZZ?0SF8(J8b0M#VDKRViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`5xmdHUP{A5_tds delta 51 zcmX>jctVgnk(ZZ?0SGGN?Kg7oVw6mBv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{D|=t F8vujd5l{dC diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-39.pyc index c86609721dbb7af907c503851269695e9d14ff33..4be0fd247d0541b658a3a132a5801429af733204 100644 GIT binary patch delta 55 zcmeB^o+Qnk$ji&c00ah?9X4_=W0XyFv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Je2Vc1HvqGa5z7Do delta 51 zcmbOv-6zeR$ji&c00fos_8YmEF-pd|Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@KF4^3 F8vt!c5TXD8 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-39.pyc index a45a3857adb969db89f971c785d272f6fc341e50..c02a3bf348d1b222f14bce12c8c563e054d23a06 100644 GIT binary patch delta 55 zcmca8c2$f!k(ZZ?0SF8(J8b0kWRp#Ev5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoXhrv1pvT-5w!pS delta 51 zcmcaAc2SHwk(ZZ?0SGGN?Kg6JvPmYnSj7}n#uO#yrR3+v6enlo=jX&^W~U}@E@XSc F0swiJ5R3o- diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-39.pyc index 24d1d775f06b4c9290fc57bf8e88d6093ee840c4..71494215694454a4c122692eb17f664e81d9467b 100644 GIT binary patch delta 53 zcmZo-Ze!+7Fw&c JnVl(-2>{kz5oQ1Y delta 51 zcmaFE@q&Xpk(ZZ?0SGGN?Kg5iW|WL}v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*~X@ F1OSZl5Iq0@ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-39.pyc index 319395396b276be7ba832ed3b08a1444017a7ea2..80471eab725bd55bef66da3fc6fd3de7eac1803a 100644 GIT binary patch delta 55 zcmX>ta$bZxk(ZZ?0SF8(J8b0UVUmq>v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY``SV0RXRj5K#aC delta 51 zcmX>va$1Btk(ZZ?0SGGN?Kg7sFiD2GSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Her(H F003$V4=4Zt diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-39.pyc index b31702791493573d2bcc98bdf52fc791bd792fb9..f97845066c787b02ff2a73c574142ec5acb32675 100644 GIT binary patch delta 55 zcmdlZazKPTk(ZZ?0SF8(J8a|@WRZ<^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|6sU1^}v|5HA1# delta 51 zcmX>gvPXnFk(ZZ?0SGGN?Kg4@vPed{Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@wq#*v F0{~@v4+a1L diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-39.pyc index 559d4ecc7ceb9b3c8eb2632f105748414e6fdce4..f9d099894aec91453dfad9065e4c66eef56879c3 100644 GIT binary patch delta 54 zcmbPhzR;XIk(ZZ?0SF8(J8a}$C?y-|ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`KZ(l0JOgnDgXcg delta 50 zcmZ2zKG&Q(k(ZZ?0SGGN?Kg5Sl#&c}v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5d{XKL E0B#x)0RR91 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-39.pyc index 005a408e031cdc0b2358968c602e65ce849e925c..dc328c5f8019ee9693964d62236eea13eb480ddd 100644 GIT binary patch delta 55 zcmZn?ZWHECFw$` Id6!-U0Kr5N_y7O^ delta 50 zcmbOhHz|%gk(ZZ?0SGGN?Kg5y)02#Jv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5yiYFz E0C|fL&j0`b diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-39.pyc index e81fca0c5ae660f528d1fbf8902ebdedd0534d78..f40aa00fbb1a866dc78ecdb1caa2de5d5b9ed351 100644 GIT binary patch delta 55 zcmaFK@s@)-k(ZZ?0SF8(J8a~B%qSc0ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnVl(#2>{m15orJb delta 51 zcmaFM@sfi(k(ZZ?0SGGN?Kg5iW|WL}v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*~X< F1OSa$5I_I` diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-39.pyc index c238e35bd03d2e2a5f3da2ea3e6707ce985b1425..b02ccbd28f2e1a51d6a442cdd0cee6e47cabe14b 100644 GIT binary patch delta 56 zcmZ2l&xM(#vjUM>b8Fu3fnk$YLDY^;k_Oh9EuNq$~TQDR<7er`-~az=iBPK>9w KtK;NTnGpa7s}r06 delta 52 zcmZ2>g>lgpM(#vjUM>b8sEoJY$h|C6GSbB=rl2yWC^0W3KR2d0IU_$mCnhsHHF5H} G%m@IwgA#K9 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-39.pyc index ec88c677b668f2f9b526d2ec27dd1c59cf74b074..c87dd508de076ebf38da91abc390b65b8d0fe8e8 100644 GIT binary patch delta 55 zcmaFK@s@)-k(ZZ?0SF8(J8a~B%qSc0ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnVl(#2>{m15orJb delta 51 zcmaFM@sfi(k(ZZ?0SGGN?Kg5iW|WL}v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*~X< F1OSa$5I_I` diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-39.pyc index b816ccab7710cd96525b213493f264e3b877b7ec..2b0b6a6ab7947f8b373b7524b5b76ced21234886 100644 GIT binary patch delta 56 zcmbO>m2uWoM(#vjUM>b8Fu3fnkz3MBHqON=CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; K)p4?|S0n(=R}ruP delta 52 zcmbO=m2uisM(#vjUM>b8sEoJY$Svt58RcRXQ&1UGl$e*2pBq!0oROcO6O);pnmF0f GD-r;PLJ)@l diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-39.pyc index e7deac82efd06fc5887113b2f037178aaff4ff8d..8642ccadf0afe7b1cfd508a77847474cb2ea0a86 100644 GIT binary patch delta 55 zcmey!@s)!+k(ZZ?0SF8(J8a~B#weTMViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTsi%2>{yC5rqH% delta 51 zcmey$@sWc&k(ZZ?0SGGN?Kg5iW0Z_>v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*T|@ F1OSl`5L^HN diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-39.pyc index eff466862d31cfbdc416f22f0dd92fa59ffcbe59..e5f4ee106fa67991ea6a41609ac080bc600c2421 100644 GIT binary patch delta 55 zcmdlden^}Fw&c J`3Tc54gkfT5=#I8 delta 51 zcmX>kzE7Mxk(ZZ?0SGGN?Kg5SV3Le+v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e1hp0 F2LOH$5h4Hp diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-39.pyc index 03c2d1adb58996f994805ce7f65f15b2f433c8ac..92e3a3d73c19fd0122fd1514d3836b9a7160154e 100644 GIT binary patch delta 56 zcmaF0hVk7RM(#vjUM>b8Fu3fnk^4iaY_yA2Oh9EuNq$~TQDR<7er`-~az=iBPK>9w KtK(#murL4`yAwqK delta 52 zcmaF2hVj)JM(#vjUM>b8sEoJY$o(NyGTg-~rl2yWC^0W3KR2d0IU_$mCnhsHHF2^; GSQr4y!x9_- diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-39.pyc index b6cb00da0953a24c793997c0a543dde60cd3d4ee..3340f4cbe59190465808b28048f5131be6f6b696 100644 GIT binary patch delta 57 zcmcb;lb8Fu3fnk=w0ZHp;~+CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2uHdm%Rf77r6| delta 53 zcmcb=lb8sEoJY$nDlH8RlXYQ&1UGl$e*2pBq!0oROcO6O);pnz%Wy Hy^tFK$a)e+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-39.pyc index 0fd1964a90f05c138cd9b93ecc20626b856336de..054ad45389624ca8f218bd4f9a8a81fcc09b90fd 100644 GIT binary patch delta 57 zcmZ3wigD#CM(#vjUM>b8Fu3fnk-NY^HqFHGM(#vjUM>b8sEoJY$X#F{ndD*>Q&1UGl$e*2pBq!0oROcO6O);pnz(s} H!9*1RutX8f diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-39.pyc index 98d04c10c72d7e8c8bfa4d45c367399fa72a1f53..425453067670b1dd63eb85880813666de8f42ffe 100644 GIT binary patch delta 57 zcmex4pYiW}M(#vjUM>b8Fu3fnk=sRAHp#^*CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2u%?nEU36L%9N delta 53 zcmex6pYi8>M(#vjUM>b8sEoJY$nByl8RudZQ&1UGl$e*2pBq!0oROcO6O);pnz%Vf HccKyi#(EL^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-39.pyc index 70768c9f8886a0f7c5a47c95da0dcdddfc31c9c5..90af566ab8b5c594109353462331cfc25709a663 100644 GIT binary patch delta 57 zcmdnHfbrl0M(#vjUM>b8Fu3fnk$b7GY_f}0Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;UAx+O{g2~iVN delta 53 zcmX@OfN}2vM(#vjUM>b8sEoJY$h}loGTy~1rl2yWC^0W3KR2d0IU_$mCnhsHHF5J< H-4Z1LyrdE< diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-39.pyc index 7737872d2173e847b0d7ceac9935b5494dc16e98..c2dd8c1d83a4d9ee005df299fa065c073bfb87bf 100644 GIT binary patch delta 57 zcmaF2lJV0@M(#vjUM>b8Fu3fnk=xQhHqFHb8sEoJY$ZcsLndD*>Q&1UGl$e*2pBq!0oROcO6O);pnz%X9 HV4?~D#Y++I diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-39.pyc index 032b96030d557fa9eb0e133f801e38435a307594..aeb09f71053278b6a49159d9bfae314496e79c53 100644 GIT binary patch delta 57 zcmaEPmhtUbM(#vjUM>b8Fu3fnk^7vbY>JCjOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;TRmfv*%IVBYS delta 53 zcmaERmht6TM(#vjUM>b8sEoJY$bHUIGQq_vrl2yWC^0W3KR2d0IU_$mCnhsHHF5Jd H%kMe>=-3n0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-39.pyc index 1e044711675037ea5cc33c9f8ce0d5e8758b5b3b..f66bbb87fc0cea94b0f23f3afee51163c6b485fa 100644 GIT binary patch delta 57 zcmaF6kn!U}M(#vjUM>b8Fu3fnkvm*ZHqpf@CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2vRUXc<25$_Wi delta 53 zcmeykkn!z8M(#vjUM>b8sEoJY$Q`aH8S7#dQ&1UGl$e*2pBq!0oROcO6O);pnz*@M HuSf|1#P$*I diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-39.pyc index 6980e5f5d9195c8e25c2884585320e9c4a24acc7..d9c1d675443c4692adfe61501b67b539485cf285 100644 GIT binary patch delta 57 zcmX@Rfbrr2M(#vjUM>b8Fu3fnk$a1-Y>JCjOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;Syx}{1063i2n delta 53 zcmcb(fbr}CM(#vjUM>b8sEoJY$h}2ZGQq_vrl2yWC^0W3KR2d0IU_$mCnhsHHF5JD H-BKk0#a|L@ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-39.pyc index 66795d262ef10193b7c630f24c280c1421af2c34..996fd0c2aec7f096ce910f3b58b2ac8188ae500a 100644 GIT binary patch delta 55 zcmew-)+ElI$ji&c00ah?9X4|7u*xR5Sj7ZXW|ZXT#S|sxrR3+v1SeJq J4q(+|0|2rw5Sjo0 delta 51 zcmZn?|0l+s$ji&c00fos_8Yl%SS4dztYQi(V~P^pcvg@*k(ZZ?0SF8(J8b0s$0(cZViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS&3;m8vxR75xxKb delta 51 zcmX>rcv6r%k(ZZ?0SGGN?Kg7&W0Z_{v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*tj4sQ F4FHKa5S0J` diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-39.pyc index e9377afbdae18d1ce6bbc4011d147f7cb5981b0e..961ee83b9bc7f3212286ca5433a86db78878cb8f 100644 GIT binary patch delta 55 zcmcb|@rZ*vk(ZZ?0SF8(J8a}mXOc~Jv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+|6{E5dg#35zqht delta 51 zcmaFFagT#Lk(ZZ?0SGGN?Kg6#GfBp~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@?q|Bp F2mpMV5T^hD diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-39.pyc index 4abe3caf7908c1705f8eaca4724a14e3a1756866..3cc1e1a843543614e6e724bad4a6f0bdd31e0529 100644 GIT binary patch delta 55 zcmcavb+?K;k(ZZ?0SF8(J8a}$U@aTvViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`H1yYMgRdJ6Gs35 delta 51 zcmcaxb+d{)k(ZZ?0SGGN?Kg5Su$BySv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e8PGv FBLK9>5*`2m diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-39.pyc index be0d8b9350cbafd5f73db482d32c61e97bb34e91..f4ce0555e27ba8f3eac896031f9d2d5b18f7519a 100644 GIT binary patch delta 55 zcmbOyu}FeDk(ZZ?0SF8(J8a~(VwO#Iv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9LIcs0|2N?5extT delta 51 zcmZ1^F;9X!k(ZZ?0SGGN?Kg5;F-yj~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@PGUa5 F0RUq?590s; diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-39.pyc index 7352cd9aeeffa7a006523c7194377c1cfcea9505..07b8b010ed1d5359b1e672efb47687fbcf2c6a01 100644 GIT binary patch delta 55 zcmbQvJDZm~k(ZZ?0SF8(J8a~(WsyyGv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoXBFv1OT8>5MTfR delta 51 zcmbQuJDrz1k(ZZ?0SGGN?Kg7UvPj0eSj7}n#uO#yrR3+v6enlo=jX&^W~U}@PGvD; F0svdX4>te+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-39.pyc index 95a2ef95a480b8234bbbc2a682996be576a28a3b..1ecbc42d9f76aa6ae82a1dd4ecf313d8e2fbb530 100644 GIT binary patch delta 55 zcmZ1`yh@lmk(ZZ?0SF8(J8b06VUmq=v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJb_7!9RRO&5X1lg delta 51 zcmZ1_yiAxok(ZZ?0SGGN?Kg7gFiA$aSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p28%? F4ghJN51Rl0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-39.pyc index fa4ae2320c4f6ea185f2ba326ce0f0488b3aeded..a928fdfd14e9d5847bdfcbee0cd097764363f216 100644 GIT binary patch delta 55 zcmdm`yHA%pk(ZZ?0SF8(J8a~h#3q~SViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc^eyx007D^5pn<4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-39.pyc index 57b6f5cce1894015594761a2f06d5ec839f32593..d324e79af51dcdb00b83f73c13e58f38cc710a8f 100644 GIT binary patch delta 55 zcmdnZzn`Bwk(ZZ?0SF8(J8b0s&L|t_ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS(<49D*(yb5rY5# delta 51 zcmdnbznh;sk(ZZ?0SGGN?Kg6NXOxU`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EYGxn F6##)$5Ly5L diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-39.pyc index 2035396c8a4fa3edb52daea5f82da28063a0f5e3..902d6378f6163b9a2a8656d375fc792c92c182a5 100644 GIT binary patch delta 54 zcmZ3*ypEYWk(ZZ?0SF8(J8a}OV3dt^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe I9Ksj|0FUhuNB{r; delta 50 zcmZ3-yo#ASk(ZZ?0SGGN?Kg58FiM8ISj7}n#uO#yrR3+v6enlo=jX&^W~U}jj$jM} E08F3{9{>OV diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-39.pyc index 0a651f7d97279cda24dc397937fdbbc58d1101dc..9dd5f573e8a5939f170b92da6dbaa5f341c64a8b 100644 GIT binary patch delta 52 zcmdnaxSNqXk(ZZ?0SF8(J51!Zkxg*1iV3L9D9O)@DN4*s$kwD~ delta 48 zcmdnZxSf$Zk(ZZ?0SGGN?I&{ENXEEW#S~P=6eZ@R C+Yc`Q diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-39.pyc index b885d23777a3bb2594f0f1a2c1f647a67ed3f4a2..d6d3890db7a63b82b4f5cd3f7f9555ad46ad2ba3 100644 GIT binary patch delta 61 zcmew=@>7I6k(ZZ?0SF8(J8b0cVUbO8v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Pyn%(EmGRc(1Dsm{N|h9k delta 57 zcmew<@>PU8k(ZZ?0SGGN?Kg7wut>(aSj7}n#uO#yrR3+v6enlo=jX&^W~U}@-onDq L${02I2Fw&c J`2?rBC;;m25>EgC delta 51 zcmext``(s2k(ZZ?0SGGN?Kg5S;gn2rv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e1=n9 F6ab)P5heft diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-39.pyc index e0f11d5a0c66bafb628d9a68d6adc5e0007b74cf..d96b8498d3de77064839d55efb927559ba4aca63 100644 GIT binary patch delta 54 zcmZ3_yqTFhk(ZZ?0SF8(J8a}OWR#6{v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe I9Lg940FrDFS^xk5 delta 50 zcmdnYyq=jmk(ZZ?0SGGN?Kg58GD=3eSj7}n#uO#yrR3+v6enlo=jX&^W~U}jj%17i E08Z-Fw&c J`55CVE&#FV5x@Wd delta 51 zcmbOtIYE*;k(ZZ?0SGGN?Kg5SVw4PZv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e2VcD F7XWM15SIV| diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-39.pyc index 911d2834b737241ce7d57995640cd5b51687ec6b..a2a9151643f605c3b303ace95d6a042b400a6a65 100644 GIT binary patch delta 55 zcmZp&X|v%@mSj7ZXW|ZXT#S|sxrR3+v1SeJq JW@KiR1^~Z_5V8OO delta 51 zcmZp(X|mx?vPOkFk(ZZ?0SGGN?Kg5qGfGCdSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Zf0C7 F003~@5JLa} diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-39.pyc index b7c624f329cb5f90d15e55c118ccd18e9539342e..516b98d3903b409f8cbf045bad8f7d52eba2bcd3 100644 GIT binary patch delta 55 zcmbQjF@u9Uk(ZZ?0SF8(J8a|@V3dt_M15R(7^ delta 51 zcmbQiF@=LWk(ZZ?0SGGN?Kg4@FiJ+aSj7}n#uO#yrR3+v6enlo=jX&^W~U}@wqSg~ F1OQS+4{87a diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-39.pyc index 49e245fde00666dc3064e5b108e55fd6b85dfe3d..441f840dc5d50a88bf6ebc7282cb1962caa8e6d9 100644 GIT binary patch delta 57 zcmbRAn{nE2M(#vjUM>b8Fu3fnk$W9w LtK;VF9JfmV6x0*; delta 53 zcmbRCn{m=_M(#vjUM>b8sEoJY$UT`uGR(y)rl2yWC^0W3KR2d0IU_$mCnhsHHF5K9 Hj@u;w$EOm_ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-39.pyc index 6afee52e81cbd36fb9307ce5b8155ac11b43caeb..c84bfd5d2eb656d4d2bbde37a2265311d8c2b0a6 100644 GIT binary patch delta 57 zcmaEIn(4)9ChkODUM>b8Fu3fnkz0pVHpay&CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2tG>y!lm6H60M delta 53 zcmaEHn(4`DChkODUM>b8sEoJY$gRUF8R23TQ&1UGl$e*2pBq!0oROcO6O);pnz%WH Hb;<$&#-5{$b8Fu3fnk^3#HY>bOlOh9EuNq$~TQDR<7er`-~az=iBPK>9w ztK()twh5_>w>B@zUd+VkJlQQzo6&W0yob!>zPvR+mUaGqQD;U5hE>cA48?3fLpc~( zSa`UKoHz3qursT90Htnmlx=suaVLYmQivued!Mn*T+tlZdYfE1Z$q0n=igOzFn46J`}_Uy94Z^ zcn}wCR|JUVGI{m{bGC30GiCCP30918lZ7YdFeXiIm?+1XIC=g=N8wnY}YhLML(g03ch71sE9uK#ict;Nsxm=Mdr$;E>?Z fC<@qYIC(0g7%0Y|@c?2S1lbV)(l0jo)0BJw44#Z& delta 598 zcmXw0K~EDw7~OBXY$&BCk&S^0#zfP2@nXPUij|b=!3u&vS*V+~!KT|CnB8D|;lKex z;-Tf!11C*LJTzc5^8*YguEvW=7rsS3IeCqE*PHYAZh~>y#BY8@|#yCI@Q}2F37UPW}$ckj+2;iCc-5fB+ zr^z})@Sgmyh$V>4O4c=brOq}gNi)3k8x2+o=EU92&yn;J*(XRiBA^|oprkcJ7-CY8ls=B}zMq=!m*Ul~(mv zXsim%6MKrET4N@q@Dl!MrC=GYwma%bp=$)J%nI?U=Le4K7RyyX@WV!L@Sy$VhD|2$ z_%0Qhqlg*&-@Y7DX{w_7Fw&c JS&(J3G63e<5;On+ delta 51 zcmX@%f5e|Vk(ZZ?0SGGN?Kg72WtNO^v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EXuN3 F833F#5eonS diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-39.pyc index c9f1c987f1f325e3f8b5e0434cd84390bb9f6079..fb2ba57cb05c13235c4bc40cbb196783558d4ce2 100644 GIT binary patch delta 55 zcmX@1bVi9gk(ZZ?0SF8(J8a~hz$hE-ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc?;tdegMio5$^y1 delta 51 zcmX@3bV7+ck(ZZ?0SGGN?Kg5yV3Z7Zv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yn}HH FKLCPY5XJxi diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-39.pyc index d630b37fb37d010ceaf44a7094cd8d321c17d8c3..203bdb1878ce4c877f274cbe58122846e320a8ac 100644 GIT binary patch delta 57 zcmX?qp7HW|M(#vjUM>b8Fu3fnk(-Z2Hpay&CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4^C%iLrD23Zoh delta 53 zcmcb7p7H#7M(#vjUM>b8sEoJY$j!$h8R23TQ&1UGl$e*2pBq!0oROcO6O);pnz-4F HWo|M6y1)^T diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-39.pyc index d09e4bf17aec9955edac89f3952990dd6f9544fb..86b38ace5444c89c1453908367c5caf09e9251b8 100644 GIT binary patch delta 55 zcmews`YV(>k(ZZ?0SF8(J8a|@W|ob0v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|gx29RT0I5&!@I delta 51 zcmewr`Yn_@k(ZZ?0SGGN?Kg4@GfPIgSj7}n#uO#yrR3+v6enlo=jX&^W~U}@wr1Y1 F4gi+D5Z3?z diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-39.pyc index 74a20c6aa264b902cb8b59948a3685c992e1571d..02cdf54c73eba43a9bb6593cce3df6da8a3193a5 100644 GIT binary patch delta 55 zcmX>Zb~cPVk(ZZ?0SF8(J8b0EVU>+`v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9KiZh6#&ty5)=Rc delta 51 zcmX>bb~21Rk(ZZ?0SGGN?Kg7kuu6uzSj7}n#uO#yrR3+v6enlo=jX&^W~U}@4q^SN F3IK_u5bFQ{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-39.pyc index 944702b48c2910d36af1a0cc741ad7451d15d152..fa760fd1083ccb2cc0b908bf1b664ded26f445e9 100644 GIT binary patch delta 81 zcmaDpi~02|X6{5@UM>b8Fu3fnk^3)~Y=nzdOh9EuNq$~TQDR<7er`-~az=iBPK>9w ltK()x?n8SSZ%ux3!iVwZX2X-B%#1fDFI*|UIqnQ6BLIw`9-{yN delta 77 zcmaDoi~0F1X6{5@UM>b8sEoJY$o-c~GQ`Cyrl2yWC^0W3KR2d0IU_$mCnhsHHF2{l h_o2OvQIlVs@L{~M+4Q6+GvkfPg8RicC!OJB1OO9p9Etz{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-39.pyc index faaa953600adc0f6af1e92689fe2e4518a0a53cf..dd543d6076d35cf18eafb6e49350cfc85b102ff1 100644 GIT binary patch delta 57 zcmaDqkMZ+7M(#vjUM>b8Fu3fnk=vg|HrmB1CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2t%%O5WQ3P=-P delta 53 zcmex7kMaFHM(#vjUM>b8sEoJY$nDP}8SY{gQ&1UGl$e*2pBq!0oROcO6O);pnz*@~ H<&PHtzBdvz diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-39.pyc index 515818224a96d777787f16f80b180e659a6c94f2..f1478a67cb8b1678427e7cf912041a69a1f3ccd5 100644 GIT binary patch delta 57 zcmX?ch4IW4M(#vjUM>b8Fu3fnk^2LyY@~}-Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK()7Hj@+pB$g8q delta 53 zcmX?eh4I7{M(#vjUM>b8sEoJY$o+v;GStN?rl2yWC^0W3KR2d0IU_$mCnhsHHF2{9 Hn@I`))r}G8 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-39.pyc index bd543a83fd083a32e5858f80256684fcb30d96d0..c07c9061180b392bdd5fbe6bf676fa2413789724 100644 GIT binary patch delta 54 zcmcc4e4Cj&k(ZZ?0SF8(J8a|*W0XyEv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe IT*Vj*0IACn00000 delta 50 zcmcc3e4Uv)k(ZZ?0SGGN?Kg6VF-j)6Sj7}n#uO#yrR3+v6enlo=jX&^W~U}ju49Y^ E0Ax}R*8l(j diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-39.pyc index 12a5107efb54f7627824a2098b8dffc3da5c4e36..0e740e5b2930edee6a704d7a337ce03ced20eda5 100644 GIT binary patch delta 55 zcmX@iah!uYk(ZZ?0SF8(J8a~hz$lyKViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc?)Ad69B$75vBkD delta 51 zcmX@kahQWUk(ZZ?0SGGN?Kg5yV3dq=v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yo0fy F2>^F95Pbju diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-39.pyc index a6043759eb75a7881e52a808726810475d03e217..14373a7bd3e9bae66984ff288237085ede395ec2 100644 GIT binary patch delta 57 zcmZ3ul5y!uM(#vjUM>b8Fu3fnk$VxVY>JCjOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;TlthfCD`+O5@ delta 53 zcmZ3wl5ycmM(#vjUM>b8sEoJY$i0YFGQq_vrl2yWC^0W3KR2d0IU_$mCnhsHHF5JP H*4usnupSaa diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-39.pyc index 3acddea5c8a0aab22875165d08d549995648d418..45787e1c3fbc59a94759a7d466b0cbaec5396aa8 100644 GIT binary patch delta 1052 zcmYk5U1$_n6vuPT>~7++W!DeVNV6u^D4Uq7O&quBt~8A?2E}MLEv=+3<7RXxot;_E zZv03WOe^{<9Fq2>NK_gG5#l_kK?GZc7D^knLAeh;+CKHc79Z+M@BbpDm*K~`|9kG? zoHOS>u05$mtypYjom$%-f3OgJ+h{qyyLas1>0;IQ#>n!<{nA*jQ1pFwY-ry=UodFQ z#)RZ&iATZ<7FN9si;H}yZ4KXP{;}CnQDh>2@YDRq10%Vi;RE^H-r7u7FD~)(mKou2ExBJT20tbL5F1a! zdrCnzkZp~-j%U*}G!ys=ILphe8{;!DXMwMQZ-U0Q2}Ar4RNL`S*_F@hiBu z4nQMlj*oOE*DS)kt{@{PY^pfEM;>43+}TFyk$oixzKDdx@B63VzAtGDe}e>CH*6|QUyo91m|{a5-PcC=H`(X zN|E7HX)|y3$dKbzZ8ud4A;nhYt;>`58_^L?o=aQjX( zfdFp30+yk|u)DMMjCMfSsfPASm;O?%)T9JT1G+!I!Ab#W1)WonA=f`?zn%@$LSF*< zr~dcfX&RadgaO^58mz0p`MSEnI%!}wWT@c!6`Pu&KLySx$jC9r8@F7Sc0sxayaSxo zhb8M&#hJ2G3A)cC>CH_@Q$|Wwp{OQJhRJsGWYa8PNVf?NZluFPT;YXm6ED3tC+;!z zekNjd$FjQ2%h<@F{6&rK`27)V7v>Z=|2BTsoia_fwgC-tBk3x26?qtt5UEO>6*czRb?^7u6Fi!^diNv8iyT<{4X4!08bQQ9`zr zcAcC}$Dx_P55NgNSG#7(IKm0w3~)9qUp1t$U&6xLyIP$qB~jwJRxn`swkY)|KV+xW zh9+^GcyB|ZZditWi`v_II<{`#)wZLD0tgGG!w>tP`R#@#7Vwu1gY6e_Z#jTQs4}9W zEeOaN7!K_Bu9qPb2d02)5+ZuYCf~{DD9gt`-_Ywoiwx(itgY;bi0`>hK+5t=oTyi|l!L8Vu~Yl%MXpcOP3MIz#PDYIE= zA|f@j+0Z^Z`$k>h#wIg{0&cMcmL|(^Z&U4YbpT~YOV;|0>N9HT|9+{SK9YGd0Cb6d zln@a&f7t#oPw+xxfEtAVX62&^(UDcnJA&v6AltZOfzU8dB9e0RzD-roXMtl9B6`rt zr7hQ`&5)*n^}q=U5zSf!-x;-y7~SK0f_>0f+)~*RUi3 E08b?ksQ>@~ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-39.pyc index 566070f388b7ea6a2e280cec64cd1cb7f3d8f407..dfddf330bfb6a4780efcfd3dc24518bf2b4112e9 100644 GIT binary patch delta 55 zcmdm=eK?ytk(ZZ?0SF8(J8a}$Cng)`ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`I6XMIRNd{6F>j} delta 51 zcmX?{y+4~fk(ZZ?0SGGN?Kg6-6O)W`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*d`;}F F8~~#p5*Gjf diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-39.pyc index dc18f5b20458127dbc10b735a73b2c84ade1b8c0..d734cc32fe3d9e93a7f7387b1b1309dbe31a392f 100644 GIT binary patch delta 57 zcmeygg7Mo5M(#vjUM>b8Fu3fnk(+~AHqpf@CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4^9vs)kl1Go}D delta 53 zcmeyig7MP|M(#vjUM>b8sEoJY$j!kl8S7#dQ&1UGl$e*2pBq!0oROcO6O);pnz-43 H*)0$NxJMBd diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-39.pyc index 2672615f88bab864a819e3c7fe0ccf10a0c6aae0..ac6a73c2dccc38e99eb1d6a550006d6b5ac8c500 100644 GIT binary patch delta 57 zcmZ3ujcMsNChkODUM>b8Fu3fnk^2OjY`lwAOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;T3Y^GBH1`HE% delta 53 zcmZ3wjcMUFChkODUM>b8sEoJY$bEuMGTOx|rl2yWC^0W3KR2d0IU_$mCnhsHHF5I? HHq$8pxu+6H diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-39.pyc index 24db4f316e429f40cefa9eed7befc4ad066ac26e..6cc31312c14d9a8e67afee1e5cc40e809a627325 100644 GIT binary patch delta 55 zcmdm{x=WQik(ZZ?0SF8(J8b0kWtEL~v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*&Im3jnz#5dr`J delta 51 zcmdm`x=ockk(ZZ?0SGGN?Kg7!vPy=#Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@E@gG) F1psop57__! diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-39.pyc index 2c2b8b6cb469050486aa90391e51f98d9834d17a..3234db4e5aced36b03f9a3b8f244ded2e53b706f 100644 GIT binary patch delta 57 zcmbQy#xkdkg*%a#mx}=i3@$rt5{$_1R_;VzUM>b8Fu3fnk$V%XY=VnbOh9EuNq$~TQDR<7er`-~az=iBPK>9w ot7G#u*6r6=87qwi(-M(^b delta 81 zcmex;jP?65R_;VzUM>b8sEoJY$i0bGGRDO!rl2yWC^0W3KR2d0IU_$mCnhsHHL>{? k>-Jl$jFrZM#hF#9w^)<&bMlLBv7{v?r*2QNWE9r|0E@dF1ONa4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-39.pyc index 9d689e133bdb0e3ca1e2253f4b68bbd36ccf0566..1ad5e47fdc86241d3a94e0ac62434a1ae9d7e8d1 100644 GIT binary patch delta 55 zcmdlOvNeP|k(ZZ?0SF8(J8a~xW0j3}v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyoj}51pw2F5*+{l delta 51 zcmdlQvN41^k(ZZ?0SGGN?Kg7Qu}Vg}Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@UdGz5 F0sxBr5cB{5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-39.pyc index 50bb918051d81da8dfeb9b9084c507fd449a517f..4c47812dbc7894a92b480b832ec68312a7c6e2f8 100644 GIT binary patch delta 52 zcmcb@bc2aIk(ZZ?0SF8(J51!hB%ADF6%$aIQIek*QFw&c JS%^uF1pvXu5Yzww delta 51 zcmdnOvw?>@k(ZZ?0SGGN?Kg72W0Z_>v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EXE|q F0swi;532wG diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-39.pyc index cfe22cdfc3b55787536781af6a5c86009733aeb2..5c18642d4a7dd9eef5c6c1eae33750fac6871e29 100644 GIT binary patch delta 55 zcmX>qcv6r%k(ZZ?0SF8(J8a};WRi__v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtje^24FIcy5U>CM delta 51 zcmX>pcvO%(k(ZZ?0SGGN?Kg5WGD$|dSj7}n#uO#yrR3+v6enlo=jX&^W~U}@)?`}1 F1^{Mt4~GB% diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-39.pyc index 429fba93770682df6f78e4060a38bc4b01a80102..2640f0c713acd6bbda56df65e8203cf0712b77a1 100644 GIT binary patch delta 52 zcmdnPcz}^Rk(ZZ?0SF8(J51!Zkxg~6iV3L9D9O)@DN4*s$_oR5Y+$x delta 51 zcmZ3)HIIusk(ZZ?0SGGN?Kg6ZGfC#VSj7}n#uO#yrR3+v6enlo=jX&^W~U}@wr6_G F1OQsk53B$H diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-39.pyc index 6fa006ea6a66072453be11789f470a7646e02460..e8ab5343a8c96f047db6fb82dba3be25ad59f895 100644 GIT binary patch delta 55 zcmcb`c8`rak(ZZ?0SF8(J8a|@XOvBJv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|SXo1OT$K5N!Ye delta 51 zcmcb|c8iTWk(ZZ?0SGGN?Kg6ZGfKv~Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@wr7-Q F0sw6A4@3X} diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-39.pyc index 78e03a908c36b88d1bd1e44d20b29b237fddf4ea..5434c2468fa2d356b86ee1d364d48305452fae59 100644 GIT binary patch delta 55 zcmX@XcZQEUk(ZZ?0SF8(J8b0UXOb;&v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|JFe3IMM*5K{mE delta 51 zcmX@ZcY=>Qk(ZZ?0SGGN?Kg7sGfC#SSj7}n#uO#yrR3+v6enlo=jX&^W~U}@HfIuL F1psNJ4=Mlv diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-39.pyc index e261fc2af5849e239f0a28f1435f87022c913b41..9e0a5674b7459c28fb5d6759ddceb157293ad63b 100644 GIT binary patch delta 55 zcmZ1{vPpzHk(ZZ?0SF8(J8b0s%p{xWViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS)5s%9RS5i5a|E_ delta 51 zcmdlavQC6Mk(ZZ?0SGGN?Kg6NW|E9`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EX^#= F4gh@v55NEb diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-39.pyc index 55cdb9c9676dffe781a6bb57f1e4fc2d49916948..3587bebbc73db2ffdd0c4f95d14a75843e9c3347 100644 GIT binary patch delta 55 zcmdlldRUY@k(ZZ?0SF8(J8a}W$S9lXViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`6=Tq4gkwa5^?|l delta 51 zcmX>sx?hw#k(ZZ?0SGGN?Kg5CWRy&Gv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{F3n& F2LOX05lH|5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-39.pyc index fd01b19c45b641a85bbf2f52cd0612277e75e1f5..84dce3da5db479f33ae8e1658ecd3cd361562c36 100644 GIT binary patch delta 57 zcmaFW%=oUEkvox>mx}=i3@$rt?n|38>5{$mx}=iD&y@pa_bpLCb?L}6ja6(CFZ5%=f)H#XXNMS#AIftCT~!NvlS6} diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-39.pyc index d9ac4e24d7f6a296ab527f3dba5faf2ea8d921a7..4fd54e3426b712d4cc5ac1301802eea70e8fa8b0 100644 GIT binary patch delta 55 zcmX@Zb%BdJk(ZZ?0SF8(J8a~ZW|mENv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|qTg1OTuM5Lo~K delta 51 zcmcb>b%u*Ok(ZZ?0SGGN?Kg5uGfO7BSj7}n#uO#yrR3+v6enlo=jX&^W~U}@c4p>f F0sv}i4=?}# diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-39.pyc index 8cf6fe3d095f63203aba981f34a31af4b06fc0bd..18395caf1ff923962704cb1e0c54aeab4f468d67 100644 GIT binary patch delta 54 zcmbQszL1?ek(ZZ?0SF8(J8b0UV3y5tv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe ItixOg0ElN06aWAK delta 50 zcmZ3;K9`+4k(ZZ?0SGGN?Kg6BFiWPnSj7}n#uO#yrR3+v6enlo=jX&^W~U}jHefCU E07bqI>i_@% diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-39.pyc index 6ee2d3b21874461ba2f06f3f5a33e12d53164115..2045884ee8c0ae2fa5c00433caff3925adf40dc1 100644 GIT binary patch delta 55 zcmey%-N?h8$ji&c00ah?9X4`bW|qxxv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J{GFMN2>{4q5vTwF delta 51 zcmZqV`OD3n$ji&c00fos_8Yk`GfSqpSj7}n#uO#yrR3+v6enlo=jX&^W~U}@{>{wB F1OR_Z5Ptvw diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-39.pyc index c5db35fe5e8e33723e4a407d49e1bacc20d9d1cd..0719c4bebaf39c8cd3e52901e51fd111727e0a2a 100644 GIT binary patch delta 55 zcmZ3(y@8uMk(ZZ?0SF8(J8a~3WsyyFv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoXO(M2mq=65TpPA delta 51 zcmdnMy@s1Rk(ZZ?0SGGN?Kg6}vPdSnSj7}n#uO#yrR3+v6enlo=jX&^W~U}@&Si0C F1OQ~P4|@Or diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-39.pyc index 2bb39a80edf3ef64d894dbb847697d79bbb0f0a6..eb3004e086ef5dc9320b146bb87c9227c1b74f32 100644 GIT binary patch delta 54 zcmew%`A3pFk(ZZ?0SF8(J8a~>$}OAaViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`6u^(0M=F$CIA2c delta 50 zcmew(`9qRBk(ZZ?0SGGN?Kg5?<(5oyv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{FnPb E0F3bw{Qv*} diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-39.pyc index 4ea24f8dd7e64cae5fa663df260f4888e0dfc26c..603089cb16115fb49edc37ac817ffc733052e852 100644 GIT binary patch delta 55 zcmZ1xu_l5$k(ZZ?0SF8(J8a}GW|mEJv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJe_%>1_01Z5(WSO delta 51 zcmZ1zu_A&yk(ZZ?0SGGN?Kg54GfO79Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@p3OW_ F0|1Bq5ZwR( diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-39.pyc index 3d276076c6ed2ee5e3691d00acdcf946aea247d7..ee7e9e0d831b685ea625a866b02d4929554e7505 100644 GIT binary patch delta 55 zcmaFp`P7p;k(ZZ?0SF8(J8b0M$RwNUViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`6?5S5&-JA5=a05 delta 51 zcmaFr`OuR)k(ZZ?0SGGN?Kg67WRgsDv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3OYs F2>_re5gz~m diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-39.pyc index 5fd04b872243e87490a9835cb1997558a4eb2ff5..ca714dcb4d31bf3d7255427bd5c465c093544f42 100644 GIT binary patch delta 55 zcmZ1&vowY~k(ZZ?0SF8(J8a~RW|2*Iv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT+gyd69CJU5#;~? delta 51 zcmZ1)voMA`k(ZZ?0SGGN?Kg5qvq&bpSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Zf04e F2>^q(5WD~Y diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-39.pyc index d83311a90755548bc83d6d8c5b175a2f82fbf34b..b29ef655e5098645fa7738ee8dd49807a827d88b 100644 GIT binary patch delta 55 zcmX?*dL)%Qk(ZZ?0SF8(J8a}GWRcBrv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJe5UT4*=h(5%d56 delta 51 zcmX?-dLWfMk(ZZ?0SGGN?Kg54vPfpQSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2?!E F2LP5I5X%4n diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-39.pyc index dd4dddc5eadeebe419f8e6af41ca4447b4957e6a..f22cc0db991f9e46d6318490d355c6534762864a 100644 GIT binary patch delta 55 zcmbOvKTV!Hk(ZZ?0SF8(J8a~RXP3=%v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+|16;0RXHN5UBtF delta 51 zcmbOxKS`cDk(ZZ?0SGGN?Kg7AvrDGBSj7}n#uO#yrR3+v6enlo=jX&^W~U}@ZfED` F003rk4}bsw diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-39.pyc index 6e54b5848b7b77d06d7298373215d696ee15b07d..2f29324d643074c11f7ec37ffc2258d58973a269 100644 GIT binary patch delta 55 zcmX?UcGiqLk(ZZ?0SF8(J8a}OW|mELv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9M1en901015z_zw delta 51 zcmX?WcG8SHk(ZZ?0SGGN?Kg58GfO7ASj7}n#uO#yrR3+v6enlo=jX&^W~U}@j%NNO F4gh~K5UKzG diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-39.pyc index fbb941fb863c4ec471cd3b7aae8e5d6e13141dbe..c231d973b5fb81148909bef9801ddf53b8e53c74 100644 GIT binary patch delta 55 zcmdnNyN8!Mk(ZZ?0SF8(J8a}`VU|sCv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JynFw&c J`4HO;HUPNh5%B;3 delta 51 zcmbOyJxiK9k(ZZ?0SGGN?Kg7IW0OpBv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e2nb| F8vt@R5Xb-k diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-39.pyc index d98c209298c8ecfad079343a248e88580111e0a8..7f257ae8beb1ef676f091628713a40df8ba4697b 100644 GIT binary patch delta 55 zcmca@eBYQmk(ZZ?0SF8(J8a~B&M2GhViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnVac?H~{6|5;_0? delta 51 zcmca_eA}2ik(ZZ?0SGGN?Kg5iXOv8Lv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%+GW| F8~~d{5fK0Y diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-39.pyc index ea16420637a1c89248919d2d4922dca01bd3c43f..9d4bd95eff6def994a43e4c0b7053d48c15ae034 100644 GIT binary patch delta 55 zcmcb@cY}{Rk(ZZ?0SF8(J8a~xVUkUEv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jynty73joE&5!wI% delta 51 zcmcb?cZH8Tk(ZZ?0SGGN?Kg7QFi9r6Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Uc$76 F1pt0T5U~IN diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-39.pyc index 9b8587b2c211d204f1c179faa7d8e1d78f96fb53..9d44ca1167991d38c1ea7562cc038683e716af7f 100644 GIT binary patch delta 54 zcmX@icASknk(ZZ?0SF8(J8a}W$s`-;ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`7Kiz0J5i2wiq diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-39.pyc index 91b2d515d48644ac853843b578bea9013b4dd24c..3d0730627fc44dd240016ebcf9c40139dfb823b6 100644 GIT binary patch delta 55 zcmdlawoQyXk(ZZ?0SF8(J8a~(V3G}Uv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9K&>t0|2ey5iaTk(ZZ?0SGGN?Kg5;Fi8fvSj7}n#uO#yrR3+v6enlo=jX&^W~U}@PGGvm F0RU)%5DEYQ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-39.pyc index ee773e726477c233655d142b61fc6e8303b2fe26..7d6a52dbbc63c172972600eda00e704068a3c0ea 100644 GIT binary patch delta 53 zcmZ3$x`dTGk(ZZ?0SF8(J51z0BpdEx6%$aIQIek*QjSiYcg!DN4*s$Bs1)8u|7C&sCh TFDa#SSAgWehW1T%Q7!-g1*b<| delta 242 zcmdntzQvt8k(ZZ?0SGGN?Kg6#Fi8fwSj7}n#uO#yrR3+v6enlo=jX&^W~U}@?qPZ> z#uzoZO46UPeDf*Ebw#D^LBuQ|F}YAdbh43B0%POk$x2R)Qzlb8Fu3fnk$aZEY@~}-Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;T<{u|f;CLa_M delta 53 zcmeyghVk7RM(#vjUM>b8sEoJY$UVznGStN?rl2yWC^0W3KR2d0IU_$mCnhsHHF5JH H{|#&a*H#kg diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-39.pyc index f34223857e5d419e90d9c71dc9b432675337ae1a..b6e9d0c8f5b9a0ce955f989955e22fa9b1a26454 100644 GIT binary patch delta 55 zcmdnNw}+2Ak(ZZ?0SF8(J8a~>&MX_{ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8TsIGXTa15!Cu} C#1C%( diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-39.pyc index f12c2abe4774afd87ddc3d302b53e2927888da6b..1e69f7e5e07f020799bfa7d49bb8333af8acb01b 100644 GIT binary patch delta 65 zcmaF=mE-eQ4(>!=UM>b8Fu3fnk^3*FY?O;tOh9EuNq$~TQDR<7er`-~az=iBPK>9w Tt7EewSGyt?<90!=UM>b8sEoJY$o-d7GR(y)rl2yWC^0W3KR2d0IU_$mCnhsHHL+Qh Pt6i0gal0xP(>VhGlEoB$ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-39.pyc index 5939fce996d68cec8c592e304819d0daf3889e14..3f788db8ed1a2dd60465d9a9a8c1445eccbdcb8f 100644 GIT binary patch delta 55 zcmeyx^^c1?k(ZZ?0SF8(J8a}OVv>z8k(ZZ?0SF8(J8a~B!6+N&ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTJV*6#&6)5YYet delta 51 zcmdnOw}Fp4k(ZZ?0SGGN?Kg72V3dqJq Jp2hS?6adG?5)uFa delta 51 zcmZoL{A0kK$ji&c00fos_8Ym&m?VQ;tYQi(V~P^b8Fu3fnkvo`4Hpay&CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2t<)8kYC7T6P? delta 53 zcmcb2f$`P_M(#vjUM>b8sEoJY$Q{fi8R23TQ&1UGl$e*2pBq!0oROcO6O);pnz*@| H>2WFm$c diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-39.pyc index 4c9edb223f9214c773f2b09c5a8637e3b12efd33..dab6b885a6ce59d1c8d436588cbd459669251029 100644 GIT binary patch delta 54 zcmX@aa*TyLk(ZZ?0SF8(J8b0M!6+N=ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`3_?m0I!h|o&W#< delta 50 zcmX@ca)^aHk(ZZ?0SGGN?Kg7oV3dq@v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{D3hH E0BKARbpQYW diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-39.pyc index 689d21060080b2e41b96c56eb759f3ff00fe3f1c..59d0da997b26db01326c9402bd97e6f4a30fb82e 100644 GIT binary patch delta 54 zcmdnQyp5SVk(ZZ?0SF8(J8a}OXOxX|v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe I9L*RG0F<&2Y5)KL delta 50 zcmdnSyos4Rk(ZZ?0SGGN?Kg6pGfGCeSj7}n#uO#yrR3+v6enlo=jX&^W~U}jj%N%9 E08sr8K>z>% diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-39.pyc index c66ec658066c9d493a5058eb6abba8598bcb46e4..4c75fea87d751407ec5d7fbc2d8ad4ba24ea0c84 100644 GIT binary patch delta 107 zcmexl@y&uek(ZZ?0SF8(J8a}OVU|sBv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ z9Kn2wQ=PTg*wUcl7JFi1QF4Zv$t~7`f@C1Y4yJNaZ?RQan8ll!Z1&{s=V46Td{c5J F697wSBdq`c delta 103 zcmexn@yUWak(ZZ?0SGGN?Kg6pFiXa`Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@j$uB< zsm@+dkZfj>lX{C4%(%r?VPO_;W^#)?F|jB)1IS=4HnudV*zC*O&%+qM`L5(lCIH9i BB8mV2 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-39.pyc index 55b2848b0018b54beebce9e733a6f2622174c048..98756f15ccbd87f8c59c5803a317de81ddbd9ac5 100644 GIT binary patch delta 606 zcmXw0Jx|+U5azY9W1Jc}N~tO;IuNxq1==w1(NwAc5wO)N5M}9*#snv6P(Ey(Z3$1P zs?>p@L*E}#p{$iE@fSK&dMDPbAciva&ViHs_&%Pyd(OVe{mZ2rhM`ZO75;3Vr!S?s z!<}O7Ant_TpazXW)9cr&ZpZU_HT!*OYd9%iN~c0zS=%m;Cb26ZI4ynH6|!a7BZg64 z7AYIevMiyILzb6;YA{2Py<=4>m3tPtXm_lUgoKeoENR>^O9>g_mQ4ums_`SCw48Q7 z6pDZUI&Pi_ex)vEh3Y$D?6-vGJ6^jTv_ioPsqbu^|4#kPZs3$Xd=lk4(->?Fzi2U2 zUtkipe(3Y8#B=(RNjt})NiRI*jy`LUeiZeFGDZGPpMOa6;2nZcK7$wec*7?DrQ57L zRMTH2+?sy&na=-tizhao`m-s8A=8 z9K=D=3ePZvA_2+3eGb(%tUJ_;x)#h;*5see-D#R|%a+Gq@sOXJk6%`aJ=Kl|Ziv4% zfE>o~oWLeX6MQ5%;@9TNYdQ@w1nUIJxpa+~>OthV4Y$)u1VWR_Z+SJd#`gJHru!e= C{Fqe$ delta 607 zcmXw$-;2{g5Xar-n&eU{tu3NRv9yBbay==Y=OKbzskKFsR*w_bz!K8bEB%o$N#J@f zKFGcJ(3kx~MEVa1g8zchr+d9WKt-RNS#=>r2W)E!R(Z)IxdnLgK=d#x828`u#O-aUEV;aa!byI>gE8aH}q z-ENngv>>xJpd6G4SN>HE1_MbL_8$ZQQsj`^Kz*(J{3#Qj-?5^CfYHVNLwzeOX>4#E8 zV&EF$w0smmJPzm8JMPf2-5uqWVmkxdRMwCmtXi3-KohafzJ)N2@NDIfYdCo_`!D&2UKR9r?Pr K$69h(ocsZ&<&X~m diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-39.pyc index f438798841c663d7ddd4cc6e5a059569b1170458..2dd8580694a7abd56b610aa50841877cd41437ee 100644 GIT binary patch delta 55 zcmew--Xy`D$ji&c00ah?9X4{OGRh{pSj7ZXW|ZXT#S|sxrR3+v1SeJq J?qn?G0syFw&c QnUig+4CAfM`<0ZK0DM*y(aSj7}n#uO#yrR3+v6enlo=jX&^W~U}@4q*Ag c#u&BPlbef?%^#?vC}46VPbyGkKhJ(90C5%vh43^~;wpbPpTZ!g{Q4ze6 zK7&Ozc}W8+g65sFY^Gwm(5JGTm}w`qY+`au$NJLbOjGB7kgN~AAAa*c&*i-5@|@?L zLAp3dW~apx8X&*y%lU7aSDI|KE04D913ctnOR?{MMp*QKyHeGDw;pl97%=jUi$cz9n7toDc zG3$snvLh}vR+$T7UIAnPxqyqQD$D4P`!0w!@hPi~PbV&=1Dm#rEgM>rtF`Tm8m0kFH)xgYEj)#2Y`dX zA>c4@gqNk+%zGhYfmYs<_7Ju5i)qe?UTLrg-CLB@JSQoEXQ!ve)WZ=dDv=NYbV-~i zahw~{^`sV9766MSWZZG+7l0VxdA^lCpH3Kw8B2(IjZL${r|lAOv`P3wU0zR%)90>h z(uEJ!r+}w{XMn9hyM%wLQ`EVA!YSJAA$J3JI>a`(wgb-sJAj?QE{VG)hr=QEN#!z0 zOnyO9gaq)Qc8hD0Ahd;cgG|p{0%5h5Lp>9G;gW(^uuSlg=Y~F{t@7hxU--d8gn;Tw*FG*Jr2mJJrDt*Qm9t-g%NlYnxZfqGq{@?rZFQH;?l;0+)W z(0TXrBUHmJ)_Bg$x9L4FJ_j5HjsXlffIQ#?@ZY-?ufg{JwFPek@B!fA!TesO4D_7(h>ag^oXNZBf*#29P@SS0+EZ4VI* z7@h^r0j~mYO87N*vupxBzscj=>Yw6jbh?{mfqV)7CEin%MMFGXWRpzHh%&AhWd_n` z9A2DGW4y3Vz{3(zKr8PlPNAztfAKb=>pYwm#fwU_=^9oV`nila ztyao=OXr2Zf=RSCukh*hVw^`x1&zzD6>Y3pol6l{FkKb!6EM!bYm(>&Us&_0`MztM z@63qilaF-LEve$UaP6ZSwkN|oW?K2e+FCWGmFKOy_^(C$II)P}vK(z3(O=-Vyt%CY zUIkq(3!_@u*Rq3!6aG3?vo2n={@bu$rD5%a`5MQS$EsZg%O@ztczJnAtS560x8KQx2RHT~SkXgW!_$6mn_BnpRa1oFOqyx8s zDZoYgFAI{v^l>oa04pGud;XX@RV6Ig~v=!PQ@_J+91RZUgGDqlw*XU$+w>9H)v z>wzgiCD5#Qni)osQ+t&)5KK_9&c?JajvM zrvo|qEj$mF-L#`%mvs-sy)-dt5)BvGsHkvLys5WvXS`Zdv?pF2E{epfn~Tq`Zb!Na zfGoEY(mr56Z~%A}=n^m-UawD6!eO7PXS_E9Mu8m8F>E7y`Q?PTb&o~=RQDb^D4xPmd=Zo_(hPB+$^TiyH#v8 z5Nz*{>oxxbIcn+8>dZr~^VOdUO_Yvi8z~s&U^w#kEPsZ`kAOiy_E+gzzIM)PD1)npz-mt1l|B`5pWuq2>5AN&B3^HM$>C2s|VqE4d@15 z2Mz%)U>q7@r_VMx+NvqtzL51Ph!1#Q~eO@ z_#Oe5N2A7idPUf_h!^pza5BIlV6YiwNxTK>d%*j^2f%=UVGXp4nS^>gO?e&)!(Foy{>GKsEW!g-dy>jrrrTsWkntfG;HHNj{ z%94~-{yIk1Ux z8_&3Yh4>gy0+a%`fCQi#xD9B)6rd7l2b!rPr<`4*|-Q5ryZ#Bnt>Zl1En#Q#aJF0Gv183t&pQ{L0x> Luri&(Pb~TiE=cXF diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-39.pyc index f4afce6bd9df1fd557ba019e940236e379554e0b..e8be85646010eb558c7d9009984983f38f0645f4 100644 GIT binary patch delta 170 zcmeww|1+LDk(ZZ?0SF8(J8b0EVUvw=v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ z9Kcp0&2x)2u_)Kfq-YUP+vE$1GHmmJjG{%GKPmdLG2WW&sFB5Zc=8&JTE-)jwKO-g z9R|rBnS75+V)Jj!Ys`$NCtuRt3{=;qH$xsG2U5@pA|`-{i69~mM4Sd{5}zERzYqZZ C{y5zL delta 187 zcmewv|23XFk(ZZ?0SGGN?Kg7kut|owSj7}n#uO#yrR3+v6enlo=jX&^W~U}@4q+>i z)+<^BRC|jxu_)Kf z(BusowUgIth)#CWoX>U$B!76aqrUj&f11~s8Ba~Vrn?!avP*AG ML>`DZ1=O?y03fY9%m4rY diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-39.pyc index cf5a5665bd52867d8fe495a9868363ec572abf24..ea53f2e48291f079c34fce39b34726676b99b89e 100644 GIT binary patch delta 77 zcmeB|nJmMd$ji&c00ah?9X4|3Fv&){Sj7ZXW|ZXT#S|sxrR3+v1SeJq ep1`Ea#dvG-Hl9kx(8&h8(|}|zv-sqDyoLaDs2E!S delta 73 zcmbO%(=WrF$ji&c00fos_8Yl#m?XnptYQi(V~P^Hz?WU>kGG$1*VS$y&%UPAy2*cQM5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-39.pyc index 859951784f150c5489b511bfcb31cfe4d2e89d0f..300d4f52c594a401e9a2da6558954015411926d0 100644 GIT binary patch delta 123 zcmcbTb|Z~Dk(ZZ?0SF8(J8a~>#v&W*ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c z`4`Jg9gADMo_T4Rd6^}tA(aKG#YHwi?M0SA;uc>(QEEVbafwT68A$3DPjG3HPkwS@ S4wyHY+enh})@D^BeMSIRs4Fu7 delta 119 zcmcbSb|sBFk(ZZ?0SGGN?Kg5?W08z>v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{Ey|P zjztu&XI@%nUS>&ZNM%84aghyBYmp_8h~f(TQfO(Vo OjU*YPHftK`GXel`<0p~; diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/__init__.cpython-39.pyc index e003229316796bcb08ccbda550b9af165499238b..a075bf6686ae1bf2f24654692f0deb29b179c1f8 100644 GIT binary patch delta 52 zcmZ3>w2_HBk(ZZ?0SF8(J51!>EF0}&6%$aIQIek*QFw&c J`6JU`E&$=P6AAzT delta 51 zcmew){Z5)Yk(ZZ?0SGGN?Kg6tWs(eWv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{FUi1 F7XX*>5#ay; diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/check.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/check.cpython-39.pyc index 8cd82f73bb10ffbfbc4f594741065fbe7ed53d1b..6e31d3974124ed598467e9e2cd240a3cd6c7bef7 100644 GIT binary patch delta 55 zcmeyV{#Ttlk(ZZ?0SF8(J8a}OW0#F^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9K}AL2LRJ45x4*V delta 51 zcmeyX{!^Vhk(ZZ?0SGGN?Kg6pu}g-ySj7}n#uO#yrR3+v6enlo=jX&^W~U}@j$@zC F0|1Km5RU)= diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/colorlog.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/colorlog.cpython-39.pyc index 6ab317e6b285199f93d6075a9297305b284a7cc1..5c530e314a09ed7fe52275d20184f9f305758df3 100644 GIT binary patch delta 55 zcmaDS_DPI8k(ZZ?0SF8(J8a}W#3&o>ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`59veCji|t5_JFo delta 51 zcmew)_D+mDk(ZZ?0SGGN?Kg5CVw4Pbv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{ED%I F69ALE5ljF8 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/compat.cpython-39.pyc index c68516df16ecc77cc742923ab9bd7c86fa2d266d..6e23aa3ab6fc4d72fbd59336ee06815bf69111ed 100644 GIT binary patch delta 93 zcmZqVYUSciJq pKFoN8NimA0BtJK&NEE2+7AJ@qpOc@MQX~!J7s-GGC$C_M1OO2g99;ka delta 89 zcmZqWYUJWhFw&c J`7G0AJ^;RL5)%Lb delta 51 zcmZ3Yyg->dk(ZZ?0SGGN?Kg6-WReVbv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e39ug F9{_h>5b6K` diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/meta.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/meta.cpython-39.pyc index e50467421bf60af88a33b9c23d76bc21ef0c5e41..5bcf869164c4eacb492481914af0de161fc94aee 100644 GIT binary patch delta 55 zcmca3_CSm~k(ZZ?0SF8(J8a|@VUZ1Yv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{8Fw&c z`7+ZT6~h*4u(bho6}3-hp9Sj7ZXW|ZXT#S|sxrR3+v1SeJq J{?FLK2mrA65xxKb delta 51 zcmeBXZ)fLDFw&c znT_R!tcpKSc~KaM2n7-0AR-n-RDg&W5K*(4NhySh@z&;W6;4LR-pProcey)361^Zo Nb@Bub@yQ8l@c?MFBP0L- delta 117 zcmX@?yWf{Pk(ZZ?0SGGN?Kg5iVwOyGv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*Ap; zRwWjww5S3^_=AWV5D^L@!a+m~hzQ%vrWC@&7_~WCg_Du7XL73QUA7L8M9*XowQ2yL CqaUgO diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-39.pyc index 6efc6846b829439ca0b381d4e5980647271785bb..437cccabdef6f914769d23635be86a2a029b8c96 100644 GIT binary patch delta 61 zcmccL&-S>VjXRN-mx}=i3@$rte&2+XZsf(#@AHJwj delta 57 zcmaFd&vw6`jXRN-mx}=iD&y@pa$n$)jB~MyDX5GoO3X{i&y6Wg&dATtiOI}PO>F+b Lv;7ATJq J&SVs21OTpa5QYE% delta 51 zcmZo-{l~(c$ji&c00fos_8Ylf86^{3tYQi(V~P^(4_yEN diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-39.pyc index 1a607de56320dc1b1e32429bf8b71e2183da53a6..10a8886dc02f8fee961c479a31d957601d0c6a70 100644 GIT binary patch delta 55 zcmeCxnW)2^$ji&c00ah?9X4|BW|ob0v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Je4klQ2mrh)5rzN& delta 51 zcmbQJ)2qXs$ji&c00fos_8Yl(GfPIgSj7}n#uO#yrR3+v6enlo=jX&^W~U}@e$1>V F1ORmy5M2NO diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-39.pyc index 4212f2e0fd3957edcfdf3b52d991c27590e26c36..e7546795884e99079593681e8677d24f53f1dfb3 100644 GIT binary patch delta 55 zcmX>sa$JNvk(ZZ?0SF8(J8a~h%p@D(ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc{@`NI{?CZ5xxKb delta 51 zcmX>ua#(~rk(ZZ?0SGGN?Kg5yW|9nXv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yql?q F9RPbU5S0J` diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-39.pyc index 6f06ac6ddb1173d704fe9c522991c93f220d6345..06bd1987683eab84eea68d504db639d8c77405c6 100644 GIT binary patch delta 55 zcmdnWy_1_ek(ZZ?0SF8(J8a|*V3dtFw$` Ic^hLU0Gn+Q5C8xG delta 50 zcmZ3?GM|Mzk(ZZ?0SGGN?Kg5yVw8+=v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5yo)gt E09Mow=Kufz diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-39.pyc index c4802dbdb79d1fd9ed476f88783d6d7d168e7bf4..d3ac29c4ae483971057076aa11cc97a853436f84 100644 GIT binary patch delta 55 zcmeC;>f_>0f+)~mx}=i3@$rtbQ9uYqt#m^=lH@ delta 53 zcmX@w!g#QSkvox>mx}=iD&y@pa!+EFjC8SzDX5GoO3X{i&y6Wg&dATtiOI}PP29YT Hwc7>&s*w?} diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-39.pyc index acf83507b98164b778612b001a48fea39781f553..96e2c493c4f3a1c1e29449f9e398c789d2aa2b56 100644 GIT binary patch delta 55 zcmdmNvfYF`k(ZZ?0SF8(J8a~>&n+9_ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnVH9c4*=2E5i|e* delta 51 zcmdmPve|??k(ZZ?0SGGN?Kg7Y=avj{v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%+6!L F2LOn<5DNeR diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-39.pyc index 83559982467aabd08acb20dd0e70d8cdfcd87d10..ce3c432ef515889b324d0162358da2f79fb8abba 100644 GIT binary patch delta 55 zcmezG(Co;a$ji&c00ah?9X4|RVUdk=v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JtiT#C4FKS@5zYVr delta 51 zcmZp6{O`b>$ji&c00fos_8YnXutFw$` IS&S(h0LFt6RR910 delta 50 zcmey!@|J}=k(ZZ?0SGGN?Kg6NVw4PXv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5EX5QK E0Dck>EC2ui diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-39.pyc index e1e0b118d9e32164a4af15e69a18990a87ba779e..f181ac26e6da45782cf5058c5ba1302424161285 100644 GIT binary patch delta 54 zcmX@WbA*RGk(ZZ?0SF8(J8a}`W0j3|v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe Iyoz-i0IHu6dH?_b delta 50 zcmX@YbAX3Ck(ZZ?0SGGN?Kg6_u}X%!Sj7}n#uO#yrR3+v6enlo=jX&^W~U}jUdK8O E0A%tIQ2+n{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-39.pyc index 1935de8fea9cbc7491ce661103cac9bc24aeab16..332ce557071cd1cf77bb92fe0782a8564acb76a8 100644 GIT binary patch delta 57 zcmex0iSgegM(#vjUM>b8Fu3fnkvoo6Hpay&CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2tZ>knrD43ZOa delta 53 zcmex2iSgGYM(#vjUM>b8sEoJY$Q{Qj8R23TQ&1UGl$e*2pBq!0oROcO6O);pnz*@* H^@lS6z(o>C diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-39.pyc index e31500442f5b88586453582ac64ebb2fc0b30d96..23f04695f4b167dacdd73ed05178b1d89911e47e 100644 GIT binary patch delta 55 zcmbQJHC2l{k(ZZ?0SF8(J8a|@VUdk@v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{7C<005*05a|E_ delta 51 zcmbQLHBpN@k(ZZ?0SGGN?Kg6Zut-L`Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@wqdy` F003Wf55NEb diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-39.pyc index 42a813000036c0385df3080fa2f36ab2f79db560..27d2eeb9bae7ec2ba264d40f796338822d450be9 100644 GIT binary patch delta 55 zcmX>oc2tZzk(ZZ?0SF8(J8b0UXO)d~v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|P5X1^}$=5Iz6^ delta 51 zcmX>qc2JBvk(ZZ?0SGGN?Kg7svr2}#Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@HfQBy F0{~~D4;26a diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-39.pyc index 8f2df1e70271371f03c283c63293e5b8ce742403..8148c1da4cf9d5fc61fb4ae56ca18be1856c8b1d 100644 GIT binary patch delta 55 zcmcb_evO?wk(ZZ?0SF8(J8a~xW0Z|@v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyok|&2>`!u5jOw; delta 51 zcmcb{eumx}=i3@$rtbUtl+wKSe`wmx}=iD&y@pa<68S40o}LDX5GoO3X{i&y6Wg&dATtiOI}PP27B$ HZFd9!ueTC5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-39.pyc index a94f8931d2025e1911f2f5fb85d911ba73b4318a..92bca247182c2ec9e2fd19cc83156b3b40bd9a24 100644 GIT binary patch delta 54 zcmaFG{EnGBk(ZZ?0SF8(J8a}mVU&$^v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe I+`*Ux0J5hMJ^%m! delta 50 zcmaFI{EC@7k(ZZ?0SGGN?Kg6#FiJ+cSj7}n#uO#yrR3+v6enlo=jX&^W~U}j?qN&< E0BnK~6#xJL diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-39.pyc index f287ec6ff9f1f1f39997db17e411141dd00914ee..76c48952d5d3027665c6f9ac177912439f83c0dd 100644 GIT binary patch delta 57 zcmZpj&Dc4ckvox>mx}=i3@$rt5{$mx}=iD&y@pa<{NaM!HzV6ja6(CFZ5%=f)H#XXNMS#AIftCT?EC HcGnF6noAL= diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-39.pyc index ead2519cc093980926f23fddc63c0ddaa330c885..118270f01cdcc1aff15b7c99a726a8fcb8540d01 100644 GIT binary patch delta 55 zcmZoxY**w?Fw&c JnUyV?8vx!25s?4@ delta 51 zcmaE&^gxL_k(ZZ?0SGGN?Kg5iWR;9|v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*htb F4FHq|5NH4Z diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-39.pyc index 3eb4ce6b4b18ec5c88274c22544ea91bb24541a7..6bf3df70d5bd8a17c9adc26a9ce8bb0a4ddaa37a 100644 GIT binary patch delta 1477 zcmZ9MeN0#9&@w0mS2hQ01{+eI6W8&vIcX7S z#l-lBCMHMuNB@{{jAb7Xi;@r({~#HQ;5~OUCN|A4=bn4M z?z!i_*Qeo)X-E&*Y@3qA&%JnXGX18-*;V^^chg8Dp=;eNq=oh2?xTGXT_5W9AMsW5 zHOs6G44ld70p!jt&qAJ&nHY`*!)m;bMPmt_8CF_rp<&hF6I;uZ;T)c}I&foa+Ekw1 z1n**&GbjCwNXXoTF?2f}a28?nX6$el!+CznIhPFM=r8cYB*y|{&eaK5aNTt$b(-S7FYC%ucEVL&rd%_@EMM7u5?~6ol4peZFC{80 zkUQ^rv;^`N$mbIQCE2h<)KFMuarQYW=VhQj%2RM=PZ`|cf95NT~Dy?-Sc5f}( z_C0Cr2^LkuK~)o$QEed3zP(@2Az0$26_q9!L(TIXtjfczdpuxUr3`rjBE||H+TR0f z{GI)enZSZZ=hn_5(i1=Di1A25~h@2ZNBq{nc-pU<>|O6M|)|t}U+5q?)n`76DPP&JwIkgf*VUO4@)YwJP)PCR?~HE?73lZ#M_R{xCPoWC9R@g4OaL-{gAC9e}HPgLc*cCsl7lp^Pe zRnVrKec24UWl_jDIvNVI=f%P>4@I>>_63=JDX+G>p$01X>4x0^UcBB|0E_s0qer~m zqCg$kaX9b_)brJV3$h-js)xw4pD>RlO;14ppKtm(Ro1kO{mqJvS|KJu9%~oA-CPYV z{DG%H4>gZ57bPuebdK z1wo-vpice+3b4Jjju@6;Fs%0lgUrCM+IOVOX`qo~qj;y?FEZ40JOURn*6}G+pr_LX zh{4WnFPtNj^MpwPC(w6*T_Id0%o60wm9Og-EpHQ+1dOzPrk_x?xSC*pl2X2kHIit4 z{hY@5heL22=Qk6LP4nsb{eI{7 zJ?EZ#PG6aWi8)A+t=9M`{EYkR-%VJwr1dpD(myud&tx^AjrNEAK}{R!4-G4_@u%gQ z6}56v(o6w8xR#0 z7KMn-jZU=K!4B*U#+)agg8gub+w$x@rEn$YBIy~ZR|#{5({V+DtHy8Jo&}iYtoTWE zUoBSPx=44Rq!==;lmEvEhbdwSDsn(!VfGnq&Woh3Y_EbF#`^YHfOGt>(jeUA!LpxW zNhl1Kr%D4~qqD~m&${W-V}uU~HwX&^QP0b0MG||}kY5WZ&5UV`ou#d~p7F7JYpm1v zw6jTPAtm5bRP+p~hr;YTk;tzVJ7LAxQCTCwBxlZNU`?bTRXM@BMqx4#sBxRSst>@r z@pg5U1SY=FYv*e<-?rZo!9uE{`&3<%+3&PAkIDXFhZHf7%Hd%ag+*qyBqdNs)&}BL z35#z=BMJ-8Hn3@iVn~kN<=%3*A0}{E zW5dkCv+A3{Y7EvN1AHsD8+?##xEoJMa35dZCBrIjZYr#Zr8(P`%Ran9N@`$5AccR!SodL@;D@xL*ARv5p9k9Q@G9L zgj}Q5B?F}Kvn?+}5wB|f21oDRPbuk>K&E^r#to!bDa`GPwezT#_cCoJ-Z zJT6G!Pk3GgmvPrq0JeO}dW3Ec66SeX*KTO%&vz}yh@4jWP`ATM&yO7-9&0N<+1&^p z<5qWzlu8E?vyPpHvv-XY#tBorvBv{@_(abF)?4n~n*RSdC+wgVS`D|}C^cf4i zx1i&3+;xCUd_4|e#k3AaEIwaA^ZR^kkwV7%HC0!h)<;4Etb?@N1W_o_Ak>8H1pi}i z8^&+hR|GR$-!~6syk>vF(c`3$^pC=*tjdQJ#$KWu(}Yum^Mnfo`j=pr2y=w11TouU z4sX(OiLio*#0@g-h@yrSo&7?aVt&@iqBavv&yN1vd!oZcz$hEFw$` I`3qwl0J+f-<^TWy delta 50 zcmcb{a*2gIk(ZZ?0SGGN?Kg5?V3dq@v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{DUzL E0CKDly#N3J diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-39.pyc index af603d5e1a5ef33d47dcba5a8fe01e32d03bfc72..7b94e6a06b6f829b1814edef35ae24803fdd617e 100644 GIT binary patch delta 55 zcmexl^v#Gnk(ZZ?0SF8(J8a~ZWs*&Bv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?8sy&4gk4gk!75s?4@ delta 51 zcmew+_(_mEk(ZZ?0SGGN?Kg5qGD^m{Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ze%QF F2LObl5NH4Z diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-39.pyc index 2b05605bc80c3acb154c2854b8330e103c6af6e4..8353760c666b6d56e5c26b78d3bece4952f292b7 100644 GIT binary patch delta 55 zcmZ2lwz7;nk(ZZ?0SF8(J8a~B!6cjDViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTJ`@0s!b?5w`#U delta 51 zcmZ2kwzP~pk(ZZ?0SGGN?Kg72V3Le+v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EWj*j F0RWwY5RL!< diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-39.pyc index c11fd7a04044e19c3a3b6570f2c5547e9dd3a5f0..a9226689059416c60db485b5838c27f4b9ec4aae 100644 GIT binary patch delta 55 zcmaEC@!Wztk(ZZ?0SF8(J8a~>$0!@;ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTaV;3IOLy5y=1m delta 51 zcmaEE@z{bpk(ZZ?0SGGN?Kg7YW0Z_?v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*K=` F1pu6&5TF16 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-39.pyc index 2d54dd9c5ec03faafcd75a09ae838200a60016ee..bcd503d0c4d08440984b1ebb74036dae5df6f361 100644 GIT binary patch delta 52 zcmdnXc#x4hk(ZZ?0SF8(J51!Zkxg^4iV3L9D9O)@DN4*s$h#S~P=6eZ@RY Cy$?qK diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-39.pyc index 0f39a9b7d6b0494ef29bca510aa869b32be4e904..d704e7a40a42ee8df288e2662e97586036e6c445 100644 GIT binary patch delta 52 zcmaFO^qz@3k(ZZ?0SF8(J51!hEt~6N6%$aIQIek*Qv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JyoM=@9RRK&5itM& delta 51 zcmbOwGEIa#k(ZZ?0SGGN?Kg6FFiA$bSj7}n#uO#yrR3+v6enlo=jX&^W~U}@-oTW_ F4ghFZ5C{MO diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-39.pyc index 25527a76124ea5d2f444df00e8994eaf88b57112..f935dd2a341571156c83fd98a8ea2cbb50be884f 100644 GIT binary patch delta 55 zcmX@id7P6wk(ZZ?0SF8(J8b06VU&$_v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJb}@e834C75dHuF delta 51 zcmX@kd6<(sk(ZZ?0SGGN?Kg7gFiM8ISj7}n#uO#yrR3+v6enlo=jX&^W~U}@p2BF% F3;=N057htw diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-39.pyc index 47170c656f8dd7521120961f29088e065677649d..91bfdd827e4d3afe917b4eae2e6054b93c64bf67 100644 GIT binary patch delta 55 zcmZ3-xrviIk(ZZ?0SF8(J8b0EV3dt=v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?8BJE3;?6D5PARr delta 51 zcmdnQxsH=Nk(ZZ?0SGGN?Kg63FiM8GSj7}n#uO#yrR3+v6enlo=jX&^W~U}@4q!}T F1^{0W4^aRB diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-39.pyc index 4ccf796390930d2bb017a6b26ab974be3c9f6ba4..39dd4bf04f594b85a3910076c9edd25bb50f7228 100644 GIT binary patch delta 55 zcmdnTafpLEk(ZZ?0SF8(J8a}uWt5F}v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?8*3*2>`0p5hVZs delta 51 zcmX@av5$j0k(ZZ?0SGGN?Kg6(GD?QKSj7}n#uO#yrR3+v6enlo=jX&^W~U}@_GSFa F1OR2i5BvZC diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-39.pyc index 6d502b1fe8ac63447e43fd16243e5aada3e3f92d..383d59d6ca81a296e07a71fb43c12a65870dc5f2 100644 GIT binary patch delta 55 zcmaFF^^A)9k(ZZ?0SF8(J8a}mWt5F@v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+{q}+3;?A45Ptvw delta 51 zcmZ3$Ifs)wk(ZZ?0SGGN?Kg6#GD?QHSj7}n#uO#yrR3+v6enlo=jX&^W~U}@?qw8a F1^{3G4^{vG diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-39.pyc index 930d90e13e25efcaa84cf0128c00f095a67bdb38..41328ece3337d90ff40f297c0a4e4ee5d1e2ed3f 100644 GIT binary patch delta 55 zcmX@$a>Ru@k(ZZ?0SF8(J8a~3WRi_?v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoXT`t9stPh5#0a) delta 51 zcmX@&a=?W`~-SJq J{>#|S2LQS*5%T~5 delta 51 zcmeBC>`>%Rz_v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9LAK#0syfl5Y_+y delta 51 zcmX@XdxV!ek(ZZ?0SGGN?Kg58F-b#^fb4 delta 51 zcmeCN>#*Za84Rxt&YF-3`aDfziE#mO1@`8hF}*{O+}&6%#s F003d>56S=l diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-39.pyc index 9152b44db698c7a46bcd21fb26b1871cefe586c6..dbd15b8e3ccc49b09d5318af911a0723c6b64b79 100644 GIT binary patch delta 68 zcmaFQ^qGk}k(ZZ?0SF8(J51!>%Xn+zNgZ`gAioGi{EBk1iV3L9D9O)@DN4*s$sP delta 64 zcmey&^qz@3k(ZZ?0SGGN?I&{YWsI75Qb(Bs$S(pBzrtLsVhSo_iW2iu@^fQ~lQZ)3 Pb7C^HQxhl4FopvFIffHH diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-39.pyc index e4b2702d2522e969b820bdd9e6277633504cc8bf..7695ef9dab94e984493b4c9651f8802e813c0083 100644 GIT binary patch delta 1884 zcmZvdZ){Ul6u@`7t%GeHV}Dr7V2*82A6v&JCD{gyjeCloo&gVRlx%A0RO~J0Ah#5D6Of$mqfnZN45|77%9b4O4 ztdY#2T;TZU!qX73jurR-;&{FA8;DzzMa#gK6p2`ZFi2nm+^HoJx)D|~**3EE61I~A z?-xH`yo=NULMuTgNa3*pHy&R!4SNt47g{??V&EGh_b_2ZfM*$cN=?L*e14x6Rzneu zCHcI6MUKC_+h7zMJ!1tALX>p2mcmEzThDi*hKq~0!7El~=>#YdvTr5qBt!`Tf=1X# zkT1rpnI$Q39wfsUZYb++7$>olFqdO4dY*`s_>u%WyDF!ZF!E%!1%z&Ji$ z5r9L~RhYo3ic05%$Psd2`BFFjP;q0SDO9mjn<#Ue0LPiiN)h&Br2^wtepMI1QPh@u z1%Iwtiqp&0!YQ%rB&4M!GlY-^^MFmEd&M8{D!RO$oL7X69U+)l?@hp2Ys&kEU2{7# z$UcVciWg3!p)7%e__Fdy6}^+)&$(9qr{F=np?G{ehicQqYB(A)?QM|bb%+w^gnq(d z!Wk@D+3!9l#CCR4P|299lARJm?6JWZL(Rt=|nyXm|NQk)O9>?&TWPrz0=89=kj8R0hO4W&T6?sh{$^bC($8q^|18ke1Ms>~nIQAZ!-kxX51y)40ap zDmdhS*Ljm%xA4(5^>EwTvF3Y6{WY?DA<(V>yGn{I+97J@V6qFs!qeGqokRamnWW&( zhRTIhK8HQ*Bl(Oo3y(Ea#eGque>kJsrlA?b89t(`!+2VYMZ@KSyLF}5zG`MgD5LYi zCJ8RWEkXfdFCjqqny`RSNVrYNBgC-2(d|4-;yK*b=y{6gg*8(*qXW7+pqZfv&wZfB z`*!jLv3N*}&AHhY3jI`oXT?LNJyLy9LkhXZ?twm?{gWuCKgyD(YDSo@bG+GD3P zV@fd8Gy^YSepL}Rt$h>r;hnXoop&kkFLII(uR8?4k>vhF7(b?=6kjovjC7@oeTduF zZxR>oTkAtLJiDc*wWC9A?d|Sl*M*;bNthvgMtF(PL^yyo&82n6NnA&`M7S@&v%6>@ z+GBCeWb*$bMy_88dok5qyI=mFjFR3$kay4ql9~zY2@`~I!cl_Uq(PEov*mqCcZEHn eG{o}A+50HBl@5fxQ%6V&5U5~rNU>_eg}(t!WAsh{ delta 1903 zcmZvdYitx%6vunFFZ!mBg)OC}w!k{HWm{O1@@Od*id6y?OEi-Wo9XVfyL3Cd+?i6^ zVm4J?Rw!w%2nd=$5KE;tI0{-31qmNah?)>IYmA?LL_TO@^pod*S7~G1WPW=d_nz5v z?zv|Z@dxo7EiW%Sg+7D+jaPG?OE2BEd7Upd=;N9ZjQ07=KqwlG_`30#P_A&Q63*H+QAOnS!J&>r3dz>fiMsPS^y1r0+2sy zuYGs%0LwT6!%@*%v9oa$;x=G5#_V<#4jDtnm4W(U+bix>R4~>4rDB-n9)sm5p_3mG zX65q6{|gnsqS+|Pp97n$w5(f9d|l~XsOD>3roUGo^v5)=8&)FC&`nFV7eD4@Y*ai` z)xyS5Rd!rls;VY_QT217Ns;JqHY4B`f-3G-SJUdBsuebBmn`jIObC6MoA_&OxtLt$ zFFsAnF0zyqGmV54HjnYsV)63d*~_BPU7B;4Y8;3itQd3n-o2sa^fM6 zFaIRDJNZjQ#X(*E&{M;cb7HNxmH2}9a>i$H-4eBH8rU6s_nIFZ4cB4$ zgwUoiehrFD&Ox~)n8n{Fi<-*&^#tqwF&&C98mkMDW`gbKSLJtIltZUY5CF>nXS2YP`* zAQzaQ5+{~G#6{s~MJ0bu(a_P!vg8LfOSi&(y1!4e0wFc`ksj^ZqZUM>0WC7?=1*ed z`vf&J8n9&FWOjuODdZaceO)@2foei(PIs7_mfs3-U01V{N_VuM^F@duQ3h#TJX|}# z#zoJ%+w4WLV*NBbAQI~*GQNcKzU<($8&0xsA-QZa-gMBEpogXehpu$+Y2jI z`FA2K{0;oWVz_x_JOXh9*aXP=v=LG>&;-c&A_uyFD$h3tNuG%uu{fCIy`6$I3CI?Z X9f3QOJY+ffTA(6fDxP?J<9mMtJJ{+K diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-39.pyc index 89326fed69c3103b9c23f2de31a554e8c11e3ebf..ad371437cccbf24ee556deb8843274b6290d9d2c 100644 GIT binary patch delta 384 zcmew;^i_yEk(ZZ?0SF8(J8a};WEH!`QJI=p6kl9Ybc-`LKd&SM%$%&mYOH&Uv#KFXLF z9A!_-d{EYlkh`{6~R(r!JE`+jMOeIw-8H&__cKr%;v5G0E zj44XYOUciTDNfGF&(Dd;%uY?5{Ec-IqvqsJwiPPUK!rszAVL;I$bkq|5CJj)LTF45 zWmjj^nq131QCb@)3UqN|Nix{QD5^9$)EEsW2XJ^WMopf{AzvTG6CdK~>lz>A8Xp`I zbc;PXKer$=CpC%~iU-K_@ppFg0T~d*4dl5v ihPZ+_MVcUYX@Lj>xC@co3KYA=VUwGmQaah3(+&U}_iHEs diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-39.pyc index 80895703485665b8c0e2b7e4cf1acf5957607d73..e0d00b6653074cffdef05015922966a93ba6c7be 100644 GIT binary patch delta 55 zcmZn^Y!&2AFw&c J`3|Fn1^~}>5&ZxF delta 51 zcmbOcG9`pNk(ZZ?0SGGN?Kg7oV3dq;v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{D9Fy F0|18e5Yzww diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-39.pyc index fb2b319be4c3b08aad0c01a86405cef52a1f08e6..765c3a8d28422b13cbb8389735116223573befb2 100644 GIT binary patch delta 52 zcmX@fc$Senk(ZZ?0SF8(J51ybl8te(iV3L9D9O)@DN4*s$#S~P=6eZ@R23Dac*qR^bdndw delta 72 zcmdm#u`Yumx}=i3@$rt(h{38>5{$mx}=iD&y@pa*MD_#<^I<6ja6(CFZ5%=f)H#XXNMS#AIftCT_N2 H_lp1km}3x} diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-39.pyc index bd15ed2bda3b0c361465a447425059849c8cbc1a..fa5956fc1d435cfa67110bc8c99a504f89ff2668 100644 GIT binary patch delta 55 zcmewq^(~4!k(ZZ?0SF8(J8b06XO@j~v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJem2vCIIh265Rj* delta 51 zcmews^(l%wk(ZZ?0SGGN?Kg7gGfPIfSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p3Zz< F69A;c5wrjR diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-39.pyc index 3ca037adf9148ba6aceb21ef29caf6786be58aa7..2a7c9c00ada7415e31d286e2cc6a180e61b078f7 100644 GIT binary patch delta 55 zcmca=f76~jk(ZZ?0SF8(J8b0kXOfL_v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT+Eat3jomq5uN}5 delta 51 zcmcaFw&c JnTu%)2LQ^*5r_Z) delta 51 zcmX>kx=)llk(ZZ?0SGGN?Kg5iW0Z_=v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*V8a F0|0_X5MKZQ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-39.pyc index 6fcb072c969a2003542ee42278d232a14f4ed919..3fee2dc61ee43f8a0f0157dec2289befa747878a 100644 GIT binary patch delta 55 zcmdl`wxx_ak(ZZ?0SF8(J8b0Mz$qK=ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3h%@Apq%k5~TnD delta 51 zcmdl|wxNtWk(ZZ?0SGGN?Kg67;FOGZv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e1kK_ F5CESF5qtmu diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-39.pyc index 45237bbe0f187a65a0f68e292f0c977cb3d98a0f..56e9070184c17ac6382f8a876423b4e7c8de9b50 100644 GIT binary patch delta 79 zcmaE>{ZX4ck(ZZ?0SF8(J8b0s%p%O}?izB7-9I42)88-n7K?|gqswGL)&SXP7ps_n h%8ZiyyqKcIyp;UhnBe4${QR64Pj6Sp%~h<$0sy@W8AkvB delta 75 zcmeyU{Z^Yhk(ZZ?0SGGN?Kg6NW)WubaCLOK#qJ*v;_2@fe2dxLHDt0NYk*|9i&acP dWlT|GUP^v$OmT8Xetu3&W_D`g<~r750RT`{7#;us diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-39.pyc index 3dee85964779a10eec926f785598360262eabd5a..34760b0ab5e6032a88a9893a07e269e9b08c2ac0 100644 GIT binary patch delta 57 zcmcbyi1E%MM(#vjUM>b8Fu3fnk$XC`Y>bOlOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;U~%yWGK49gR1 delta 53 zcmcb!i1EfEM(#vjUM>b8sEoJY$UU7|GQ!0wrl2yWC^0W3KR2d0IU_$mCnhsHHF5KP H=DEHAz%mj- diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-39.pyc index ff77e62876ed54617987e86c09679d8f7b34338d..d65a874f46bd23e33ef5199a041f1de1979d0368 100644 GIT binary patch delta 52 zcmdnZxSx?bk(ZZ?0SF8(J51!Zkxg;2iV3L9D9O)@DN4*s$Jq J)?*B00RXAB5N7}Y delta 51 zcmZqX{?Emo$ji&c00fos_8Ymm7$vh@tYQi(V~P^Fw&c JnU~XC901_)5t#r0 delta 51 zcmX@%aKwQ-k(ZZ?0SGGN?Kg7220|2Q~5fT6Z delta 51 zcmZ1^Gf##)k(ZZ?0SGGN?Kg58vq~noSj7}n#uO#yrR3+v6enlo=jX&^W~U}@j%Gd1 F0RUt)59t5^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-39.pyc index 81598c216e97a3a003c8a5edcf7c7a5a1ea0380e..5d3a9f063e291a8e0bb5a75b57f1d4da71495dc0 100644 GIT binary patch delta 55 zcmcat`KXdRk(ZZ?0SF8(J8a~>%PE`cViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnUU+R5dZ@;66yc| delta 51 zcmaDmx}=i3@$rt5{$zxw< delta 53 zcmeBM&Dgb?kvox>mx}=iD&y@pa;Ni4rn^|h6ja6(CFZ5%=f)H#XXNMS#AIftCT{NM H|L+O_p^p*S diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-39.pyc index 559e821e0cb697e46af418171e4539beb6e39d08..6bd680b7f21e4955660d1e1e9011b5017f20ea9e 100644 GIT binary patch delta 55 zcmeya{ac$mk(ZZ?0SF8(J8a}Wz$u&PViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3a{m4*=?W5>WsE delta 51 zcmeyZ{au?ok(ZZ?0SGGN?Kg5C;FOGYv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{DM=M F2LPYt5hwrv diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-39.pyc index 8a4c89750a940916d67ee0a5bc1d4dccbd1f04c8..e541f6749d4b9a8c52999728a990199a48fb6961 100644 GIT binary patch delta 52 zcmX@Zc!7~Sk(ZZ?0SF8(J51!Zku7zxiV3L9D9O)@DN4*s$c!rTXk(ZZ?0SGGN?I&{ENEW(S#S~P=6eZ@RFw&c J`I-QuBmnO35@G-V delta 51 zcmcZ|d_9;uk(ZZ?0SGGN?Kg675|Au(v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*d`o~) F5&)y+5jg+= diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-39.pyc index b1aa586a4cc4b3a8a68c239a142110f6b4597462..7ec89ccea95c5185acf34de8d52d602f5012425d 100644 GIT binary patch delta 55 zcmX@%e#V_Uk(ZZ?0SF8(J8a|@Wsxm&v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{}9u4*<#T5pMth delta 51 zcmX@(e!`tQk(ZZ?0SGGN?Kg6ZvPc%WSj7}n#uO#yrR3+v6enlo=jX&^W~U}@wq@y; F2LOUx5Jmt1 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-39.pyc index 5b74a3b5c6fe34ea4c01fb6c528e8e01fce5fd4e..92b7cf6626c8f068ed20ed802ea7bc0276271ef1 100644 GIT binary patch delta 52 zcmZ3>w2_HBk(ZZ?0SF8(J51zWDVyqI6%$aIQIek*Qb8Fu3fnk$a|qY=VnbOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;Uq0^gzl7UdKZ delta 53 zcmdmfopJMZM(#vjUM>b8sEoJY$URd)GRDO!rl2yWC^0W3KR2d0IU_$mCnhsHHF5Jn Hfp1X&$$%2- diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-39.pyc index 20f65b9ff2f42f63d93748f16583d3afca0c72d8..68e7c150c8a6522de54e0faad298b5335c351e47 100644 GIT binary patch delta 52 zcmX@cc#4rbk(ZZ?0SF8(J51!ZkFw&ciA8`B0G>k>ssI20 delta 68 zcmbQjHGzvek(ZZ?0SGGN?Kg7gF>&8wOuEHbUc?L(+T6mF%qW@dVii+R8B>&)my(|w VQ=FWUpPv(xnVp)rnT17w5ddN&6M_H$ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-39.pyc index 99df4336428340d412979879042f38d79c8c19f0..d48361bb1dd7218b5c433e7525272beec64715c2 100644 GIT binary patch delta 54 zcmdnMvW0~^k(ZZ?0SF8(J8b0cWR$INv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe Iyq2*U0HjJ0QUCw| delta 50 zcmdnOvVny=k(ZZ?0SGGN?Kg6FGD?=XSj7}n#uO#yrR3+v6enlo=jX&^W~U}j-pJSt E0AB47DF6Tf diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-39.pyc index 9390172ad4e33adf97896566a3e0e2a4c866b14a..32868e6ab832d3e3d75f1e59b6c28314494f629f 100644 GIT binary patch delta 55 zcmcaDd0&z{k(ZZ?0SF8(J8a}mVU(?Rv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+`$;k4FJo&5sCl+ delta 51 zcmcaFd0Ub@k(ZZ?0SGGN?Kg6#FiKXtSj7}n#uO#yrR3+v6enlo=jX&^W~U}@?qLk( F1^|Pw5MclS diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-39.pyc index f8d6c3fc9b46424584b21e6f8c608a452c28bc10..5d4c8baed2ffbf1f8a5d465e1060213e91a62b4d 100644 GIT binary patch delta 54 zcmX@fah8KSk(ZZ?0SF8(J8b0M%`BVfViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`95^;3#Fk(ZZ?0SGGN?Kg6BGE2t0Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@He~kU F0sw!K56J)k diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-39.pyc index 1e89b6a3a1c9ea3a5874c49bd08472be48da9f8c..16062017ecf2782a990e7b25a6219334386721af 100644 GIT binary patch delta 55 zcmdnWwUdiGk(ZZ?0SF8(J8a~h!z3H$ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`2bTX69Bq+5sCl+ delta 51 zcmdnVwUvuIk(ZZ?0SGGN?Kg7IVUmn;v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e1xf# F2>^4l5MclS diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-39.pyc index c6537071f7a27dc6792d5834c194bc28a5a90494..e6c80e6b7e66d2c51efbffac775c11d830407355 100644 GIT binary patch delta 55 zcmbQkv4Dd+k(ZZ?0SF8(J8a~(VU&$?v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoWQt;2>_rU5ZM3# delta 51 zcmZ3$F^7XYk(ZZ?0SGGN?Kg7UFiJ+bSj7}n#uO#yrR3+v6enlo=jX&^W~U}@PGQ`` F1OQvL53m3L diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-39.pyc index 5fe733b7c9ea7c6a3bcaf19781971b5075282bb4..aaf4035738c919cedf131973147e7246cfc9f2f2 100644 GIT binary patch delta 55 zcmew$^+k$1k(ZZ?0SF8(J8a~3VwX*Dv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoW{<@1^~;)5fK0Y delta 51 zcmew&^+Ad|k(ZZ?0SGGN?Kg5eu}j9dSj7}n#uO#yrR3+v6enlo=jX&^W~U}@&SK|c F0|0~d59j~@ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-39.pyc index 678c98e78b73f6a47096a74bfd9ab8ca9a58172e..53e08961b6ac639f9886729a0e96f7a9c6287397 100644 GIT binary patch delta 55 zcmZ1|v{Z;Yk(ZZ?0SF8(J8a}mVUkUBv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+`%-H4FIhY5iI}! delta 51 zcmZ1~v`~mUk(ZZ?0SGGN?Kg6#FiFO`Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@?qQnA F1^{P(5Ci}K diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-39.pyc index 1bb637fb6be03875673290350e3e533a2d0fbedf..470dea593beeaeab471241604f62c484e6d5e2e4 100644 GIT binary patch delta 55 zcmcameWjW^k(ZZ?0SF8(J8a|*WtNR|v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*(}61pw)45-Iv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ ZtjhX;i@V4SsQwmX(k;gF%>n{;yZ{g`6~+Jn delta 68 zcmca)bov5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJcTb<1OVdL5*7de delta 51 zcmaFu`rMT}k(ZZ?0SGGN?Kg54@JYtFSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p1~I^ F0sxsJ5bXc} diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-39.pyc index 5118bcc564853718be9b3de51e54540fd353ed62..32b386319d45c730d53530bd6e0ddf0bc6e0e548 100644 GIT binary patch delta 61 zcmZ1yyds!8k(ZZ?0SF8(J8a~h&ng?^ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Q`7rBKCB|EmS8DtQ08En=&Hw-a delta 57 zcmZ1xyd;=Ak(ZZ?0SGGN?Kg7IXO)a_v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e4O>E L5@XclwHm(x`h*lI diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-39.pyc index a548ab3db13bbbf95ebba7ae862e30802655919b..1f3c858a9ec40c61bd504149e0d89af7d61c32a4 100644 GIT binary patch delta 55 zcmdlWu|Fw&c J`3_?U7XZQ`5x4*V delta 51 zcmdlYu|a}6k(ZZ?0SGGN?Kg7oV3dq>v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{D3ip F3jlhn5RU)= diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-39.pyc index 9991d6ee342b2169bef748a7231d2c3ca228f6cd..ed31bb0e965c6a351d2c8aa2de03dae91294dcd8 100644 GIT binary patch delta 55 zcmaFw{n?v4k(ZZ?0SF8(J8b0kW0OsEv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*Ou@4*=qe5)=Rc delta 51 zcmezD{ob29k(ZZ?0SGGN?Kg7!u}Q|dSj7}n#uO#yrR3+v6enlo=jX&^W~U}@E@P{e F2LPD~5bFQ{ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-39.pyc index 77470e5b916f75f6deffc67e03f431894b0bacc9..6b14bc7dca55ca278f34835263d7893e890057f0 100644 GIT binary patch delta 55 zcmew;`&E`Zk(ZZ?0SF8(J8a}W&LbP|ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`85w469D5=5+ncs delta 51 zcmew=`%#uVk(ZZ?0SGGN?Kg5C=aGzdv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{GNx6 F2>_Wr5c>cC diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-39.pyc index 21ce012686ddc7e589990ff43276840bb1b77d02..efec6676b263f4641bbda10b85fe9aa14deb3c69 100644 GIT binary patch delta 55 zcmaFP_nMD8k(ZZ?0SF8(J8a}$$0(cVViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`4Zz)RshtT5Fw&c Jc?T1>AOOl$5p@6n delta 51 zcmX@EepsD5k(ZZ?0SGGN?Kg5yVUmn;v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yoZTf F5CDQ#5KI67 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-39.pyc index 63d8d5657c4c1003a180b4fba1f51b7d5b3000e7..e8bbfd2a667c9985b88bf93bd7da4f6ec521ffa9 100644 GIT binary patch delta 55 zcmcaF@>qmBk(ZZ?0SF8(J8a}`Ws*&Iv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jypm}fI{?mJ5)%Lb delta 51 zcmaDXa$kfyk(ZZ?0SGGN?Kg6_GD#-8Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@UdyzN F9RP+f5b6K` diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/__pycache__/__init__.cpython-39.pyc index 46c384abc138474b771356af1e199d695d1c4af1..99dac3f2f5261c333307284562fbd3844762edad 100644 GIT binary patch delta 4940 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 delta 4942 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 QHrYI9>Skx^N?gGI0mRJwDgXcg diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-39.pyc index 3b409c1b740b64f0e021282ecdec8d0a4f72bf46..982565458cc1153e67a5c05355c97d258702f21d 100644 GIT binary patch delta 33 ncmdnWxRa4Pk(ZZ?0SNdmJ51!Z;fiyyiV3L9D9O*8=$iomf)5D< delta 29 jcmdnVxRsGRk(ZZ?0SE%)?I&{Eutm98#S~Od49oxkUP1>o diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-39.pyc index 889c135d55b2a3ae4b14642ad23de2debf93d500..f4eefc5444251e7472b424cbb0590a3b99d578db 100644 GIT binary patch delta 38 scmbQVfN|OaM(#vjUM>b8;JfUwk$V~sSFDRwOh9EuNq*kub82#mMi$UTjREz-p*rl4~3YMyLo0Gh7}f&c&j diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-39.pyc index 0c1ab797fec7053f80bb30104c5a6052a963e831..31628de8b22cd8f410baab8cbd3ae1e6c6af06b1 100644 GIT binary patch delta 62 zcmeyigy;7X9^OP=UM>b8;JfUQSh11!qzqTQi&acOWkyMU-sU?p^2ZsSH~)F8%fgu1 Rtofo{^9AE}%@<6*S^%Xt7PbHY delta 55 zcmeypgy-859^OP=UM>b82#mK+EZ@j`Qid(s#VV$ta`OWj`QwaEo1W;hH0!-+*L%UZ KUGD{xuND9W_!Eu* diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-39.pyc index 1b0de4473fbd5fa55b6f4236f9933f0fd10fdc62..3bda69f8b405fa228794aadbdd0b60f72d8aa6e9 100644 GIT binary patch delta 35 pcmdnVx|fwZk(ZZ?0SNdmJ8a}uX5z|pv5E<(%qYpvn{2|=3ILJ}2`~Tv delta 31 lcmdnXx|5YVk(ZZ?0SE%)?Kg5OGqI(*Sj7}nPPSlb1psTV2VnpJ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-39.pyc index d9e88bf6646ad65e7e60bc348e8452a74f5e022e..5b9f7c409ed0a1cd1a583888d3bf6512b6cac3c7 100644 GIT binary patch delta 35 pcmbQwvY3TCk(ZZ?0SNdmJ8a~h!N`^2ViglmnNgCTH+dyv832>l3DN)n delta 31 lcmZ3?GM|Mzk(ZZ?0SE%)?Kg7IU}Q^iv5G0EoV=E?3;=9}2m=5B diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-39.pyc index a7f9cf945daa2f1b0a6f0f0a5dfddd5c5d07dfac..bc88ad90699dcac911019cc2ce4bea4ea1583c99 100644 GIT binary patch delta 42 wcmey$@soo)k(ZZ?0SNdmJ8a~3Vd6@6v5E<(%qYpv+Z@VN&&U`x`6}}Q0P`#iZvX%Q delta 38 scmey#@s)!+k(ZZ?0SE%)?Kg6}FtH`OSj7}nZjNNCXJouJ`6lxM0Kh#9Bme*a diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-39.pyc index c5f802d6e0224acd49c623ba5770360e16611090..0b7b17b2cac4b98e25a8bed089ca8ad355d17a6c 100644 GIT binary patch delta 36 qcmX>vc3F%&k(ZZ?0SNdmJ8a}mWaP?rv5E<(%qYpv+g!wWmlFW2dkT91 delta 32 mcmcaCc3zA-k(ZZ?0SE%)?Kg5KGP0$+Sj7}nZZ2cI%LxF28VIZa diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_typing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_typing.cpython-39.pyc index 015ec9a19a3b1ec4a72ede92eb73ada0464c29f4..7ae9bd0ce0fc1282f5ad09cac1b8c070844b0a62 100644 GIT binary patch delta 35 pcmX@deTkbpk(ZZ?0SNdmJ8b0s&cc=MViglmnNgCTH<^R=7yzdS3Q_<7 delta 31 lcmcb_eU6(uk(ZZ?0SE%)?Kg6NXJJcrv5G0EoXo>|3;=wA2!j9s diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-39.pyc index 47bd5e76e70677c9ec50a8638e23c6e8c267b2a4..5a37aa884a8e0bebe5f3ce04d40ebd042eff97a5 100644 GIT binary patch delta 80 zcmccSam#}{k(ZZ?0SNdmJ8a~B%F31QViglmnNgCTxA`0EEpf)E%@<{@m>E}04&;)U itfIJ>KZ-p*IX|}`v80F}s4Z&pHN{BATbm7()R+JZw;6x{ delta 76 zcmccRam|A}k(ZZ?0SE%)?Kg5iWo1itv5G0E-2996mN?_B%~xfum>E}2P85@vtf9D= f{}y|Ea(-?>Vo4D{P|K~!w-h58qc)o;sWAZnxPKVl diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-39.pyc index 0576bc8c8f5bba8e5a6c6149c1aa1477b50ae809..c2bed71f0adc20a94746bf52b6e68d70eadd5504 100644 GIT binary patch delta 43 xcmaDa|5=_pk(ZZ?0SNdmJ8a~h&BB%AViglmnNgCTw|NcAS`Nmj%~8BlnE(=!4I=;m delta 39 tcmew?|6ZOuk(ZZ?0SE%)?Kg7IW?{>4v5G0E+`NHhEeGSR&2hX_nE>2L3)lbv diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc index 829e05f275de6ca8b079c1d3e50ec36584f87df9..8397dcd35f0c8146d0bd733982d65c40eb9d8254 100644 GIT binary patch delta 111 zcmaE~fbrP^M(#vjUM>b8;JfUwk=vY^E6c?yCZIB-BtLJn2lD}Mktp`~7H>deQE_TYSZYymW`16g6Hw+Be`sC-is&_v=;W3DI{`<#BoF`q delta 107 zcmaF1fbr1+M(#vjUM>b82#mMi$ZgKdmgZs=Q&73thxvfF$SwBxmx}=i_%1taI>+6N0N$D( Ak^lez delta 96 zcmaFc#`v<0kvox>mx}=i0^{vBa=&L{OK`D@DX84c!o1W}yJ!ti;udSMv86#p(J~O5 uJu$H;Im67PNS+bID=0`dGs#IUl4IO_#iE;o@z&%7$3VuY&6^x|GXeluksZ(g diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-39.pyc index b2ec83ddd7ef87a81bdc76e891d462d735ada285..674307c369d3de9e63b7e1ba108ff72287f51a02 100644 GIT binary patch delta 42 wcmeys^M!{yk(ZZ?0SNdmJ8b0M%*d7MViglmnNgCTxA_R8EDK}Q$B<1JlL~Xuh Hq{|2Z@7gGd diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py index 4aa30ee6..1333c00e 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py +++ b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py @@ -1625,7 +1625,7 @@ class ParserElement(object): (see L{I{parseWithTabs}}) - define your parse action using the full C{(s,loc,toks)} signature, and reference the input string using the parse action's C{s} argument - - explictly expand the tabs in your input string before calling + - explicitly expand the tabs in your input string before calling C{parseString} Example:: diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-39.pyc index 27f4ffac10e231b8bfd50a0d2d713387e411d319..8cb8548221db7981da702792826853c49bdb9436 100644 GIT binary patch delta 36 qcmdlcwo8mVk(ZZ?0SNdmJ8a}uWa5f-v5E<(%qYpv+ib+d!U+JKwFu+@ delta 32 mcmdlbwoQyXk(ZZ?0SE%)?Kg5OGO0L;RFD6PzMzN diff --git a/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-39.pyc index a996760b6d7feeceb4547365b0786516349df5a4..bf41ffc76fd13359ef5b61ce67380265575b22ce 100644 GIT binary patch delta 33 ncmdnWw3CTDk(ZZ?0SNdmJ51!B%~k4R6%$aIQIelGaZM)xiRcOZ delta 29 jcmdnVw3UfFk(ZZ?0SE%)?I&{2W-D~DiYcg^xSFw&c J`4}@78vx6@5rO~! delta 51 zcmca2d_kByk(ZZ?0SFQc?Kg5SVwUtvv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e2STi F4FH275MBTP diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/_ast_gen.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/_ast_gen.cpython-39.pyc index fca3e123d72d717eb4af0f65d9a8cbdca70008c4..64ff98922e67ad4ecc2f7d31414f82f59e4aa9c8 100644 GIT binary patch delta 55 zcmaFt|J%qSb=ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`8(qqRRHz{6Mp~z delta 51 zcmaFv|Ja{9k(ZZ?0SFQc?Kg5?W|Z_xv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{G0KO FDgdfC5?cTO diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/_build_tables.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/_build_tables.cpython-39.pyc index b94dc80b6daa59528db7640a411ada49a4ed6673..c1fb0d584ba6cb49e1915038bb44c3a5b9d7b6b3 100644 GIT binary patch delta 54 zcmeBWnaIMO$ji&c00gd=9X4_|GRlU#Sj7ZXW|ZXT#S|sxrR3+v1SeJK IUdosO0F#vv)c^nh delta 50 zcmbQp(#yh~$ji&c00fDJ_8Yky86|^LtYQi(V~P^b%7 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/ast_transforms.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/ast_transforms.cpython-39.pyc index fe22f06d16f27c2d0773e93a051f840169bac593..49ba8f5fe707d3f5855e681ae5c25c0c1b3e2301 100644 GIT binary patch delta 55 zcmcaB{7{%Xk(ZZ?0SH_#J8a}$$1WS;ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`4T%f69CkS5x)Qc delta 51 zcmaDTd{>w|k(ZZ?0SFQc?Kg6-W0wp`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e2tx( F2>^>P5Ssu1 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/c_ast.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/c_ast.cpython-39.pyc index 126eeb8d21000b3281cc53cf7fb86d086851c030..c641c947b1a5c1f54438406e3946affbcc5d9012 100644 GIT binary patch delta 57 zcmaDkiRtYmChkODUM>b8aJ}rXkvpG7*5Ab{CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7G=mTN5l3FQ-+ delta 53 zcmaDmiRtAeChkODUM>b8NG!D9$eqt3>78N~Q&1UGl$e*2pBq!0oROcO6O);pnz(s7 H%e58&y+jgq diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/c_generator.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/c_generator.cpython-39.pyc index 70f0e4733d295090fa5c971dec3b774766cb892c..2bd618304b0144a8a6d2a84cb889d0f8699dfa22 100644 GIT binary patch delta 57 zcmX@x#CWlZkvox>mx}=iTrWFp5{$mx}=i5)17&a+fnp2BuiW6ja6(CFZ5%=f)H#XXNMS#AIftCT^b3 HyvY^-talN_ diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/c_lexer.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/c_lexer.cpython-39.pyc index aa6bf408feba78bf4a99793322ee6e64fdbfc77c..29cc1d8493b99ea834806203b4f3b9dee54ef4d1 100644 GIT binary patch delta 55 zcmewy^F4+;k(ZZ?0SH_#J8a}$%PAY^ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`6A~c6#)E_6EOe) delta 51 zcmew!^Erk)k(ZZ?0SFQc?Kg6-<&^YIv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e3f&N F3IMQJ5)A+V diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/c_parser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/c_parser.cpython-39.pyc index 2e10e6366626998072e1197354f1e9b08569479c..3a8a321eb60c557e96894e19bff30895c42c967f 100644 GIT binary patch delta 57 zcmX?qgZc6eX6{5@UM>b8aJ}rXky}JqHps;)CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4_hu=q^?56cqt delta 53 zcmcb7gZcaoX6{5@UM>b8NG!D9$Soo)>6c;^Q&1UGl$e*2pBq!0oROcO6O);pnz-3U HSo|gc!sZds diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/lextab.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/lextab.cpython-39.pyc index 4a9641b34131027830f1da9c0b12432c49f96028..b7290c8d122b068fb1a463a4d90c01a28bd52160 100644 GIT binary patch delta 54 zcmbQQwOETgk(ZZ?0SH_#J8a}$A|e~$ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`GiO~0I`)3nE(I) delta 50 zcmZ3iHD8N6k(ZZ?0SFQc?Kg5S5s~ysv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5d`2W3 E0BWlcbpQYW diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/plyparser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/plyparser.cpython-39.pyc index cc0758d096aff0676773a6a34a8f515fe066a8b6..1b3e7552d872431e8f09170eb6d7501edf8fdb22 100644 GIT binary patch delta 55 zcmX@0azuqYk(ZZ?0SH_#J8b0s&L|t~ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JS(-^z007mw5m5jD delta 51 zcmX@2azKSUk(ZZ?0SFQc?Kg6NXO#3$v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EYGAW F004`}5G?=z diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/yacctab.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/__pycache__/yacctab.cpython-39.pyc index b2a916a868868825e52c531757575056f5eb2d75..1d955ad7c1ea9b5981421af74bcfee8225c5e930 100644 GIT binary patch delta 63 zcmccfi{rsB4(>!=UM>b8aJ}r%$lc1#xRsk}myK+oi&acOWkyMUUQAJ9UP^v$OmK2W Retu4jr?;!)^m{f;bpV!=UM>b8NG!B(<<7@ CX%FK7 diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/ply/__pycache__/cpp.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/ply/__pycache__/cpp.cpython-39.pyc index d2256d7b52852a486e2bf225d88e16375000de8a..7819a40daa9ff35888f51e0cd3dea8bb7e9ccf38 100644 GIT binary patch delta 55 zcmZ2pySkP;k(ZZ?0SH_#J8a~hz$6>!ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc?;8LYXIdh68iuE delta 51 zcmZ2oyS$b=k(ZZ?0SFQc?Kg5yV3PDrv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yo2ep FH2|935!V0! diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/ply/__pycache__/ctokens.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/ply/__pycache__/ctokens.cpython-39.pyc index c2361b841bb255ea423ed94012879d03b0cb1108..7ff24f2cab68ac41bafd7ece8ac60d4f1d95599f 100644 GIT binary patch delta 55 zcmbO&FkgT>k(ZZ?0SH_#J8a}`XORtcv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyqcwe833^)5kvq0 delta 51 zcmbO)Fk65-k(ZZ?0SFQc?Kg6_vq%P}Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ue8j% F3;=4T5Fh{m diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/ply/__pycache__/lex.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/ply/__pycache__/lex.cpython-39.pyc index 61fbfe4ca645714459dc47b3ab934b201ed9388b..e0f92a9c3f9529181efb448db92ec3480ba5d3d8 100644 GIT binary patch delta 57 zcmZ3noN>)^M(#vjUM>b8aJ}rXkz1TeHqgZ?CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4^mQ*Iyt=LQk+ delta 53 zcmZ3poN>i+M(#vjUM>b8NG!D9$Suw!>6>B|Q&1UGl$e*2pBq!0oROcO6O);pnz-4X HDK`)RojefD diff --git a/IKEA_scraper/.venv/Lib/site-packages/pycparser/ply/__pycache__/yacc.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/pycparser/ply/__pycache__/yacc.cpython-39.pyc index f1367ffbacd2e7750da9a180f4ffaa365bcd2870..c8a01416879129aae7e06b4612476f3b1496a0c2 100644 GIT binary patch delta 57 zcmaDom-+o%X6{5@UM>b8aJ}rXk(-}cHps;)CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4^i^N!O10LK#_ delta 53 zcmaDqm-+QvX6{5@UM>b8NG!D9$j#3z>6c;^Q&1UGl$e*2pBq!0oROcO6O);pnz-4V HdBJq JPUBe41^}fn5byv1 delta 51 zcmbOz*DJ@J$ji&c00hnP_8YmKI3#^jtYQi(V~P^Fw$` Ic^hLa0G9F)?EnA( delta 50 zcmbQvGMR-tk(ZZ?0SKDo?Kg5yVw4O>v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5yo)gw E09D2h;Q#;t diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/_internal_utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/_internal_utils.cpython-39.pyc index 88e34508c893a284bb82516532a5111ad23efdee..399c804926e1d20b6d8e667eb5c3f977ab58cd92 100644 GIT binary patch delta 55 zcmeyz*~G=2$ji&c00g#|9X4|JGs#A{Sj7ZXW|ZXT#S|sxrR3+v1SeJq J-pu691OUBz5nccQ delta 51 zcmZqT`p3zg$ji&c00hnP_8YnTnIuC}tYQi(V~P^mx}=iY%e=(bQ9utGNvT2m=z_ delta 53 zcmey^%=osMkvox>mx}=in&a&^a!+EF^i8pfDX5GoO3X{i&y6Wg&dATtiOI}PP29YT H)!YUEzU&du diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/api.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/api.cpython-39.pyc index 44053d7ebf7bdd552fba4d12289cc2e88a538401..d319f1a854df8b5ab4bb246e4fd47b28d631b227 100644 GIT binary patch delta 55 zcmZ2(vf6|@k(ZZ?0SIg_J8a~>&n@fYViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnVCn04*<Fw&c JS%EcJ8UXfU5-I=y delta 51 zcmezF@Y#Vok(ZZ?0SKDo?Kg7&VUhGqv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*til>B F4FIjO5gq^l diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/certs.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/certs.cpython-39.pyc index 4c17b195bdf2f1063f3f5b7fa64a2631f263c0ab..04b66e9b321caea2c02d91a1e8ee955fd439488e 100644 GIT binary patch delta 54 zcmcc0a+8HSk(ZZ?0SIg_J8a~B#whFOViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` InTyFA0J}U90ssI2 delta 50 zcmcb~a+QTUk(ZZ?0SKDo?Kg5iW0dqtv5G0Ej44XYOUciTDNfGF&(Dd;%uY?5%*W&n E0Cva^_5c6? diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/compat.cpython-39.pyc index 93a9e917d9ae8db596d4b5bbf78b50001b088328..214edc37d72adc9e50537a0eb25e20d3b6d3088a 100644 GIT binary patch delta 54 zcmbQvJDZm~k(ZZ?0SIg_J8a~>%PQ;dViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` InUQT80HoOv+5i9m delta 50 zcmbQuJDrz1k(ZZ?0SKDo?Kg7YWtH?!v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5%*r+m E0Ad{v&Hw-a diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/cookies.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/cookies.cpython-39.pyc index a7874fac87632df100a592ca06aaad3e4b54ccfa..42e9c11f64cd4c49265323cb9da9bc46f8562a49 100644 GIT binary patch delta 57 zcmaDiiSg4UM(#vjUM>b8u)XZCkvoo6Ho(OyCZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2tZ>lb8XpXnv$Q{Qj>62m=Q&1UGl$e*2pBq!0oROcO6O);pnz*@* H^^G$CzYP*Y diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/exceptions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/exceptions.cpython-39.pyc index 5ea7a8429dbcebf449c1e8e05da7d99187fac3ab..c8ebdbed04d597da80ca791ae6706ee01b84512e 100644 GIT binary patch delta 55 zcmeyV`B#%Wk(ZZ?0SIg_J8a|@VUZ1Xv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{7C+007U{5ugA7 delta 51 zcmeyX`BRfSk(ZZ?0SKDo?Kg6Zut@r+Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@wqZFa F004_N5R?D_ diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/help.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/help.cpython-39.pyc index abfdd396d24121b5eab11d2135a68a33b4ce911f..18115c2f0fd26f681bc84b760786307730999b8a 100644 GIT binary patch delta 55 zcmZ1|wp5Hek(ZZ?0SIg_J8a};WtH`Hv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JtjYR=6#$?w5Yzww delta 51 zcmZ1~wor^ak(ZZ?0SKDo?Kg6>vPycUSj7}n#uO#yrR3+v6enlo=jX&^W~U}@)@A*{ F3IJa>56A!j diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/hooks.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/hooks.cpython-39.pyc index 49a52c5af4868aab7130f4b1a1a27a5886ff2420..f099c12da8098d32af649774c378bd6f651580ac 100644 GIT binary patch delta 55 zcmX@ceu|wtk(ZZ?0SIg_J8a~xW0duCv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JyogbS2>`m$5flIb delta 51 zcmX@bevF+vk(ZZ?0SKDo?Kg7QF-m%+Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@UdE`x F1ORtY5C{MO diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/models.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/models.cpython-39.pyc index 1cca9de552a2e4936d6fac701a075bcfb18df636..27ef112e86b42dd455b98791d57057c4d2521092 100644 GIT binary patch delta 57 zcmdnCk8#&NM(#vjUM>b8u)XZCk$W|ptiOv@Oh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;VLZ0QjI4XG1i delta 53 zcmdnBk8#^RM(#vjUM>b8XpXnv$i13P(mTZ}rl2yWC^0W3KR2d0IU_$mCnhsHHF5K0 Hw)6-9#1ax# diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/packages.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/packages.cpython-39.pyc index c940d7456f3338ea6f4bcd90f1c4da0214132cdd..92d42062a13baa7ba0ba424594da2ba666b87f19 100644 GIT binary patch delta 54 zcmZ3;x|EeWk(ZZ?0SIg_J8a|@XOazcv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe IY|WGg0E#pa9RL6T delta 50 zcmZ3=x{#GSk(ZZ?0SKDo?Kg6ZGfDcUSj7}n#uO#yrR3+v6enlo=jX&^W~U}jwr5HM E07`@p5dZ)H diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/sessions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/sessions.cpython-39.pyc index 18e4ab4100bc24b0a5695983a913e980d906ad1b..2e7a5e8865466ee9ae80562a01b198e9bbf038fd 100644 GIT binary patch delta 57 zcmex4i}CL)M(#vjUM>b8u)XZCk-LRWHqgZ?CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7F*wu^267AX^~ delta 53 zcmex6i}B|yM(#vjUM>b8XpXnv$lbyw>6>B|Q&1UGl$e*2pBq!0oROcO6O);pnz(rl H+eJ43%q|k3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/status_codes.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/status_codes.cpython-39.pyc index 607059729cd2a34ed6fbe58fb0738e1ce99851b6..0fad92f2d549ecbac783f76918185e6a75dac75d 100644 GIT binary patch delta 55 zcmeya@LPd9k(ZZ?0SIg_J8a}`=9LX~v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyqxy}69C@65`6#w delta 51 zcmeyZ@LhpBk(ZZ?0SKDo?Kg5a^GXJ$Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ud?-f F2>_Um5pe(j diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/structures.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/structures.cpython-39.pyc index 6bbd7896780f544288ae0ec628700c50568c1a1c..c9c40829304ecf1258af389562ad9ceb6e7099c9 100644 GIT binary patch delta 55 zcmcbjbVG?dk(ZZ?0SIg_J8a~B$SND`ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnU&3-8vxmA5pDng delta 51 zcmcbibVZ3fk(ZZ?0SKDo?Kg5iWR>(!v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*p1@ F4FHnz5MlrT diff --git a/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/requests/__pycache__/utils.cpython-39.pyc index e56fe3a0c96f0268d48bed96bf5a0be2577c4b3d..ea99b60e2c37ee5b0280482e74ba7d7c5bad9f98 100644 GIT binary patch delta 57 zcmeydmGRG3M(#vjUM>b8u)XZCk^36Ete=ZjOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;Th?EiuQE`k)i delta 53 zcmeyfmGQ?`M(#vjUM>b8XpXnv$bF4n(ksO(rl2yWC^0W3KR2d0IU_$mCnhsHHF5Jl H_J2VD;&&6U diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/dependency_links.txt b/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/dependency_links.txt deleted file mode 100644 index e87d0210..00000000 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/dependency_links.txt +++ /dev/null @@ -1,2 +0,0 @@ -https://files.pythonhosted.org/packages/source/c/certifi/certifi-2016.9.26.tar.gz#md5=baa81e951a29958563689d868ef1064d -https://files.pythonhosted.org/packages/source/w/wincertstore/wincertstore-0.2.zip#md5=ae728f2f007185648d0c7a8679b361e2 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/INSTALLER b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/LICENSE b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/LICENSE similarity index 100% rename from IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/LICENSE rename to IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/LICENSE diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/METADATA b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/METADATA similarity index 93% rename from IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/METADATA rename to IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/METADATA index 0212d70b..7bac3194 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/METADATA +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: setuptools -Version: 56.0.0 +Version: 57.4.0 Summary: Easily download, build, install, upgrade, and uninstall Python packages Home-page: https://github.com/pypa/setuptools Author: Python Packaging Authority @@ -19,16 +19,18 @@ Classifier: Topic :: System :: Archiving :: Packaging Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Utilities Requires-Python: >=3.6 +License-File: LICENSE Provides-Extra: certs -Requires-Dist: certifi (==2016.9.26) ; extra == 'certs' Provides-Extra: docs Requires-Dist: sphinx ; extra == 'docs' Requires-Dist: jaraco.packaging (>=8.2) ; extra == 'docs' Requires-Dist: rst.linker (>=1.9) ; extra == 'docs' +Requires-Dist: jaraco.tidelift (>=1.4) ; extra == 'docs' Requires-Dist: pygments-github-lexers (==0.0.5) ; extra == 'docs' Requires-Dist: sphinx-inline-tabs ; extra == 'docs' +Requires-Dist: sphinxcontrib-towncrier ; extra == 'docs' +Requires-Dist: furo ; extra == 'docs' Provides-Extra: ssl -Requires-Dist: wincertstore (==0.2) ; (sys_platform == "win32") and extra == 'ssl' Provides-Extra: testing Requires-Dist: pytest (>=4.6) ; extra == 'testing' Requires-Dist: pytest-checkdocs (>=2.4) ; extra == 'testing' @@ -68,6 +70,9 @@ Requires-Dist: pytest-mypy ; (platform_python_implementation != "PyPy" and pytho .. image:: https://img.shields.io/readthedocs/setuptools/latest.svg :target: https://setuptools.readthedocs.io +.. image:: https://img.shields.io/badge/skeleton-2021-informational + :target: https://blog.jaraco.com/skeleton + .. image:: https://img.shields.io/codecov/c/github/pypa/setuptools/master.svg?logo=codecov&logoColor=white :target: https://codecov.io/gh/pypa/setuptools diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/RECORD b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/RECORD similarity index 84% rename from IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/RECORD rename to IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/RECORD index 76de6db3..c2c34df2 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/RECORD +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/RECORD @@ -1,4 +1,4 @@ -_distutils_hack/__init__.py,sha256=Mi-TvyOnuMzUIc_utoEp5m3M_DY6QLLSkXqg6e8whI8,3686 +_distutils_hack/__init__.py,sha256=X3RUiA6KBPoEmco_CjACyltyQbFRGVUpZRAbSkPGwMs,3688 _distutils_hack/__pycache__/__init__.cpython-39.pyc,, _distutils_hack/__pycache__/override.cpython-39.pyc,, _distutils_hack/override.py,sha256=Eu_s-NF6VIZ4Cqd0tbbA5wtWky2IZPNd8et6GLt1mzo,44 @@ -32,20 +32,19 @@ pkg_resources/_vendor/packaging/specifiers.py,sha256=uYp9l13F0LcknS6d4N60ytiBgFm pkg_resources/_vendor/packaging/tags.py,sha256=NKMS37Zo_nWrZxgsD6zbXsXgc9edn9m160cBiLmHJdE,24067 pkg_resources/_vendor/packaging/utils.py,sha256=RShlvnjO2CtYSD8uri32frMMFMTmB-3ihsq1-ghzLEw,1811 pkg_resources/_vendor/packaging/version.py,sha256=Cnbm-OO9D_qd8ZTFxzFcjSavexSYFZmyeaoPvMsjgPc,15470 -pkg_resources/_vendor/pyparsing.py,sha256=tmrp-lu-qO1i75ZzIN5A12nKRRD1Cm4Vpk-5LR9rims,232055 +pkg_resources/_vendor/pyparsing.py,sha256=mahtkgcp3grNAD0re_9R0DLvBnvjzpeLwgJqT-3H1CE,232056 pkg_resources/extern/__init__.py,sha256=3PixaT9Tzzd4NoyV6CVhGd7S_9Z-U5yvMWAftZKvC6k,2362 pkg_resources/extern/__pycache__/__init__.cpython-39.pyc,, pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-39.pyc,, pkg_resources/tests/data/my-test-package-source/setup.py,sha256=Mrezl3nqxkYkjCYpIxmjhhg4AR8hgi4QZdEYmk-I7R8,104 -setuptools-56.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -setuptools-56.0.0.dist-info/LICENSE,sha256=2z8CRrH5J48VhFuZ_sR4uLUG63ZIeZNyL4xuJUKF-vg,1050 -setuptools-56.0.0.dist-info/METADATA,sha256=_aCRpMCUGooEBJ9frK3qo-ZvRMWpdZWSWt_y07PjBfM,4759 -setuptools-56.0.0.dist-info/RECORD,, -setuptools-56.0.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -setuptools-56.0.0.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92 -setuptools-56.0.0.dist-info/dependency_links.txt,sha256=HlkCFkoK5TbZ5EMLbLKYhLcY_E31kBWD8TqW2EgmatQ,239 -setuptools-56.0.0.dist-info/entry_points.txt,sha256=lkeJaK21vluS2y7MfmO_tbLYjh8vaZDgZswzU4JD9gg,2869 -setuptools-56.0.0.dist-info/top_level.txt,sha256=d9yL39v_W7qmKDDSH6sT4bE0j_Ls1M3P161OGgdsm4g,41 +setuptools-57.4.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +setuptools-57.4.0.dist-info/LICENSE,sha256=2z8CRrH5J48VhFuZ_sR4uLUG63ZIeZNyL4xuJUKF-vg,1050 +setuptools-57.4.0.dist-info/METADATA,sha256=UY3W1xrBdD2FzjzYxpKlhhE0C8SlXd7k0N8cCSHWE9U,4908 +setuptools-57.4.0.dist-info/RECORD,, +setuptools-57.4.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools-57.4.0.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92 +setuptools-57.4.0.dist-info/entry_points.txt,sha256=lkeJaK21vluS2y7MfmO_tbLYjh8vaZDgZswzU4JD9gg,2869 +setuptools-57.4.0.dist-info/top_level.txt,sha256=d9yL39v_W7qmKDDSH6sT4bE0j_Ls1M3P161OGgdsm4g,41 setuptools/__init__.py,sha256=0c232LRyOLGdL-Ywmgk8uMubx7I21w-ixJWiT0jQK-c,7681 setuptools/__pycache__/__init__.cpython-39.pyc,, setuptools/__pycache__/_deprecation_warning.cpython-39.pyc,, @@ -68,7 +67,6 @@ setuptools/__pycache__/namespaces.cpython-39.pyc,, setuptools/__pycache__/package_index.cpython-39.pyc,, setuptools/__pycache__/py34compat.cpython-39.pyc,, setuptools/__pycache__/sandbox.cpython-39.pyc,, -setuptools/__pycache__/ssl_support.cpython-39.pyc,, setuptools/__pycache__/unicode_utils.cpython-39.pyc,, setuptools/__pycache__/version.cpython-39.pyc,, setuptools/__pycache__/wheel.cpython-39.pyc,, @@ -105,10 +103,10 @@ setuptools/_distutils/__pycache__/unixccompiler.cpython-39.pyc,, setuptools/_distutils/__pycache__/util.cpython-39.pyc,, setuptools/_distutils/__pycache__/version.cpython-39.pyc,, setuptools/_distutils/__pycache__/versionpredicate.cpython-39.pyc,, -setuptools/_distutils/_msvccompiler.py,sha256=JQcHez50UA3BQKK9fOKANI_GzNFx3_qnZdyHyHNAghA,20813 +setuptools/_distutils/_msvccompiler.py,sha256=jR0JM5A1JMnZ6xMDicQzhXWgXTVXs1lWAeUexC1z198,20813 setuptools/_distutils/archive_util.py,sha256=qW-uiGwYexTvK5e-iSel_31Dshx-CqTanNPK6snwf98,8572 setuptools/_distutils/bcppcompiler.py,sha256=OJDVpCUmX6H8v_7lV1zifV1fcx92Cr2dhiUh6989UJI,14894 -setuptools/_distutils/ccompiler.py,sha256=4cqQgq06NbGo0vazGMT2aPZ6K2Z-HcuRn9Pfz_bQUPw,47437 +setuptools/_distutils/ccompiler.py,sha256=G2tn9Q3zQ0VUNfW1LM-nrnLt_6OhtiUunugCv85D1PQ,47607 setuptools/_distutils/cmd.py,sha256=eco6LAGUtobLuPafuhmgKgkwRRL_WY8KJ4YeDCHpcls,18079 setuptools/_distutils/command/__init__.py,sha256=2TA-rlNDlzeI-csbWHXFjGD8uOYqALMfyWOhT49nC6g,799 setuptools/_distutils/command/__pycache__/__init__.cpython-39.pyc,, @@ -140,15 +138,15 @@ setuptools/_distutils/command/bdist_dumb.py,sha256=BTur9jcIppyP7Piavjfsk7YjElqvx setuptools/_distutils/command/bdist_msi.py,sha256=EVFQYN_X-ExeeP8gmdV9JcINsuUGsLJUz9afMU0Rt8c,35579 setuptools/_distutils/command/bdist_rpm.py,sha256=gjOw22GhDSbcq0bdq25cTb-n6HWWm0bShLQad_mkJ4k,21537 setuptools/_distutils/command/bdist_wininst.py,sha256=iGlaI-VfElHOneeczKHWnSN5a10-7IMcJaXuR1mdS3c,16030 -setuptools/_distutils/command/build.py,sha256=11NyR2UAUzalrkTZ2ph0BAHFWFC2jtSsN7gIaF-NC08,5767 +setuptools/_distutils/command/build.py,sha256=1AF-dxN_NlOEyoydBz19AwpeWYPSYCZvOLJSN_PdatY,5773 setuptools/_distutils/command/build_clib.py,sha256=bgVTHh28eLQA2Gkw68amApd_j7qQBX4MTI-zTvAK_J4,8022 -setuptools/_distutils/command/build_ext.py,sha256=Y_SYbd8SHcpgNPfv3ifVniZljYs1cLAFleBSi2_O3CY,31685 +setuptools/_distutils/command/build_ext.py,sha256=8RSBMLY88t7wlwqwdVScJv7OQMxeQ9q-mmwVPipSA-U,31720 setuptools/_distutils/command/build_py.py,sha256=S_Nlw4hZE8PnIgqX5OFMdmt-GSmOhPQQ4f2jr1uBnoU,17190 setuptools/_distutils/command/build_scripts.py,sha256=aKycJJPx3LfZ1cvZgSJaxnD2LnvRM5WJ-8xkpdgcLsI,6232 setuptools/_distutils/command/check.py,sha256=5qDtI75ccZg3sAItQWeaIu8y3FR314O4rr9Smz4HsEo,5637 setuptools/_distutils/command/clean.py,sha256=2TCt47ru4hZZM0RfVfUYj5bbpicpGLP4Qhw5jBtvp9k,2776 setuptools/_distutils/command/config.py,sha256=2aTjww3PwjMB8-ZibCe4P7B-qG1hM1gn_rJXYyxRz6c,13117 -setuptools/_distutils/command/install.py,sha256=oOM2rD7l_SglARNVDmiZn8u6DAfidXRF_yE5QS328B4,27482 +setuptools/_distutils/command/install.py,sha256=drhacfX9QHypgMvMP9C6BjqRYmcGjsH5FPctFcWpqcw,27488 setuptools/_distutils/command/install_data.py,sha256=YhGOAwh3gJPqF7em5XA0rmpR42z1bLh80ooElzDyUvk,2822 setuptools/_distutils/command/install_egg_info.py,sha256=0kW0liVMeadkjX0ZcRfMptKFen07Gw6gyw1VHT5KIwc,2603 setuptools/_distutils/command/install_headers.py,sha256=XQ6idkbIDfr1ljXCOznuVUMvOFpHBn6cK0Wz9gIM2b4,1298 @@ -160,7 +158,7 @@ setuptools/_distutils/command/sdist.py,sha256=qotJjAOzyhJjq2-oDImjNFrOtaSneEFDJT setuptools/_distutils/command/upload.py,sha256=BLO1w7eSAqsCjCLXtf_CRVSjwF1WmyOByGVGNdcQ8oY,7597 setuptools/_distutils/config.py,sha256=dtHgblx9JhfyrKx1-J7Jlxw_f7s8ZbPFQii2UWMTZpY,4827 setuptools/_distutils/core.py,sha256=jbdOkpOK09xi-56vhhwvn3fYdhLb5DJO8q3K1fnQz0Q,8876 -setuptools/_distutils/cygwinccompiler.py,sha256=9U4JAusUzlAGJl0Y5nToPkQ3ldzseAtiye434mwJ0ow,16380 +setuptools/_distutils/cygwinccompiler.py,sha256=QpmRAopZOYEKww_iCWTu3KLjs9gggyl90E0fagAxqCM,16938 setuptools/_distutils/debug.py,sha256=N6MrTAqK6l9SVk6tWweR108PM8Ol7qNlfyV-nHcLhsY,139 setuptools/_distutils/dep_util.py,sha256=GuR9Iw_jzZRkyemJ5HX8rB_wRGxkIBcBm1qh54r7zhk,3491 setuptools/_distutils/dir_util.py,sha256=UwhBOUTcV65GTwce4SPuTXR8Z8q3LYEcmttqcGb0bYo,7778 @@ -169,24 +167,30 @@ setuptools/_distutils/errors.py,sha256=Yr6tKZGdzBoNi53vBtiq0UJ__X05CmxSdQJqOWaw6 setuptools/_distutils/extension.py,sha256=bTb3Q0CoevGKYv5dX1ls--Ln8tlB0-UEOsi9BwzlZ-s,10515 setuptools/_distutils/fancy_getopt.py,sha256=OPxp2CxHi1Yp_d1D8JxW4Ueq9fC71tegQFaafh58GGU,17784 setuptools/_distutils/file_util.py,sha256=0hUqfItN_x2DVihR0MHdA4KCMVCOO8VoByaFp_a6MDg,8148 -setuptools/_distutils/filelist.py,sha256=8bRxhzp2FsaoHT7TuKD4Qjcuh_B9Ow_xTt_htZJvN2Q,12832 +setuptools/_distutils/filelist.py,sha256=Z9f5hvepZnpniZ2IFmCnWIjdviWozs8sbARBhWajwoM,13407 setuptools/_distutils/log.py,sha256=hWBmdUC2K927QcVv3REMW3HMPclxccPQngxLSuUXQl0,1969 -setuptools/_distutils/msvc9compiler.py,sha256=uv0TAfoWrxEBOQL-Z2uws5g4AXoTPahUEMuq6FLkCYY,30453 -setuptools/_distutils/msvccompiler.py,sha256=ZYsnUgIC4tZT2WkJbTkTUyVSCAc2nFM9DVKIuIfPBU0,23540 +setuptools/_distutils/msvc9compiler.py,sha256=X623B92g0v8A3BEM9qpRf396AEd_hfjkfDUVTKu0hcE,30453 +setuptools/_distutils/msvccompiler.py,sha256=qruALeGRq8-CjtjE2tLQ8W26QnchcYedWzFme8AxZ4Q,23540 setuptools/_distutils/py35compat.py,sha256=-sk1vBIsOgH-AobjIYbK_OEjdJF_54Ul_D1EiE9XM_c,455 setuptools/_distutils/py38compat.py,sha256=II7ddBxOijC7uNN4z_46HYUjwYTJYMNiLJoGTormZm0,212 -setuptools/_distutils/spawn.py,sha256=XBmUqzhxXfay_JE18RkaalHf9kgi7NvXeBPW9BfTqmw,4408 +setuptools/_distutils/spawn.py,sha256=4uE9k3VZWijxy7E_Rlcmh1MoamaPJ8rajdNBagKxjgU,3498 setuptools/_distutils/sysconfig.py,sha256=5z55MU7gXeceL_G9FK6ex-2OvdeIXJRZJafrtthJcfU,21349 setuptools/_distutils/text_file.py,sha256=PsuAJeWdKJoLSV_6N6IpB5-0Pa84KzLUucJMFRazw3I,12483 -setuptools/_distutils/unixccompiler.py,sha256=E65edChYLoHY8wi4OxFu_wKt3hJe3GySF6v51G_ZzL0,14696 -setuptools/_distutils/util.py,sha256=Wlz9noChJjzem9mfgOu-KaN8soB4aNhRfe4VGltXd8w,20985 +setuptools/_distutils/unixccompiler.py,sha256=ke1kq16XId1U1RRvAmaUP9iOEiH4cWNB_FXXqm1vzF0,14957 +setuptools/_distutils/util.py,sha256=VH_8N-7kH1U43zsrXvDev-3HeEi9Jio8UiFXfY3BDV8,23185 setuptools/_distutils/version.py,sha256=8NogP6NPPQpp3EUMZcT9czEHia-ehqPo8spo_e7AgUU,12514 setuptools/_distutils/versionpredicate.py,sha256=ZxpEA-TQv88mUWc6hetUO4qSqA2sa7ipjZ3QEK5evDk,5133 -setuptools/_imp.py,sha256=Qx0LJzEBaWk_6PfICamJtfBN2rh5K9sJq1wXvtZW-mc,2388 +setuptools/_imp.py,sha256=HmF91IbitRfsD5z-g4_wmcuH-RahyIONbPgiCOFgtzA,2392 setuptools/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 setuptools/_vendor/__pycache__/__init__.cpython-39.pyc,, setuptools/_vendor/__pycache__/ordered_set.cpython-39.pyc,, setuptools/_vendor/__pycache__/pyparsing.cpython-39.pyc,, +setuptools/_vendor/more_itertools/__init__.py,sha256=C7sXffHTXM3P-iaLPPfqfmDoxOflQMJLcM7ed9p3jak,82 +setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-39.pyc,, +setuptools/_vendor/more_itertools/__pycache__/more.cpython-39.pyc,, +setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-39.pyc,, +setuptools/_vendor/more_itertools/more.py,sha256=DlZa8v6JihVwfQ5zHidOA-xDE0orcQIUyxVnCaUoDKE,117968 +setuptools/_vendor/more_itertools/recipes.py,sha256=UkNkrsZyqiwgLHANBTmvMhCvaNSvSNYhyOpz_Jc55DY,16256 setuptools/_vendor/ordered_set.py,sha256=dbaCcs27dyN9gnMWGF5nA_BrVn6Q-NrjKYJpV9_fgBs,15130 setuptools/_vendor/packaging/__about__.py,sha256=PNMsaZn4UcCHyubgROH1bl6CluduPjI5kFrSp_Zgklo,736 setuptools/_vendor/packaging/__init__.py,sha256=6enbp5XgRfjBjsI9-bn00HjHf5TH21PDMOKkJW8xw-w,562 @@ -210,13 +214,13 @@ setuptools/_vendor/packaging/specifiers.py,sha256=uYp9l13F0LcknS6d4N60ytiBgFmIhK setuptools/_vendor/packaging/tags.py,sha256=NKMS37Zo_nWrZxgsD6zbXsXgc9edn9m160cBiLmHJdE,24067 setuptools/_vendor/packaging/utils.py,sha256=RShlvnjO2CtYSD8uri32frMMFMTmB-3ihsq1-ghzLEw,1811 setuptools/_vendor/packaging/version.py,sha256=Cnbm-OO9D_qd8ZTFxzFcjSavexSYFZmyeaoPvMsjgPc,15470 -setuptools/_vendor/pyparsing.py,sha256=tmrp-lu-qO1i75ZzIN5A12nKRRD1Cm4Vpk-5LR9rims,232055 +setuptools/_vendor/pyparsing.py,sha256=mahtkgcp3grNAD0re_9R0DLvBnvjzpeLwgJqT-3H1CE,232056 setuptools/archive_util.py,sha256=maJDbozRbDeSPw53VT0cb_IS3W0Ap73lJR8tX8RZDx0,7077 setuptools/build_meta.py,sha256=x7FI1UPKCKxBBSopXocfGDnJa98rQO8atKXSwJtdid8,10280 setuptools/cli-32.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536 setuptools/cli-64.exe,sha256=KLABu5pyrnokJCv6skjXZ6GsXeyYHGcqOUT3oHI3Xpo,74752 setuptools/cli.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536 -setuptools/command/__init__.py,sha256=fSjRqyhdTj_Ml_uey67g2bMtfv-MQrcoTMBUfBBURvo,551 +setuptools/command/__init__.py,sha256=e-8TJOikUe3St0fw2b2p9u5EDdSxl5zHUBJJKifbcQ8,217 setuptools/command/__pycache__/__init__.cpython-39.pyc,, setuptools/command/__pycache__/alias.cpython-39.pyc,, setuptools/command/__pycache__/bdist_egg.cpython-39.pyc,, @@ -245,12 +249,12 @@ setuptools/command/alias.py,sha256=1sLQxZcNh6dDQpDmm4G7UGGTol83nY1NTPmNBbm2siI,2 setuptools/command/bdist_egg.py,sha256=-upiB6fFtm8cQSQj1LRDVpG1-T143DsXCvV0fh03u7U,16604 setuptools/command/bdist_rpm.py,sha256=_4Y7tVAzu1zEuDc8tpRdE_sy3zST3h3LPTtzioos5Ck,900 setuptools/command/build_clib.py,sha256=fWHSFGkk10VCddBWCszvNhowbG9Z9CZXVjQ2uSInoOs,4415 -setuptools/command/build_ext.py,sha256=aI_qnK9m8lULZDS6XMv_p2j2pIehVbSarb4PJHDA7dw,13027 -setuptools/command/build_py.py,sha256=10DNYiaM707UGJ-eV6YNcIKRN1pbU7UwXGYUXACrXU8,9473 +setuptools/command/build_ext.py,sha256=SNK042HfB2ezlDQbSVRGFqI1IM5A4AsjU1wpV3fgskE,13212 +setuptools/command/build_py.py,sha256=fP7K6X8VS92D-_hHK5jM99wnqSjTQhJcx5-8Wp74MB8,8930 setuptools/command/develop.py,sha256=B0p5dh7VrSMdEfhdUE_AJlWk2UxAesOOY14CAV5_DEA,8045 setuptools/command/dist_info.py,sha256=5t6kOfrdgALT-P3ogss6PF9k-Leyesueycuk3dUyZnI,960 setuptools/command/easy_install.py,sha256=13BpU0YW0UNJY-k1OSVCPj7EnCZ0ep5fZCS0uKuZ0mY,85308 -setuptools/command/egg_info.py,sha256=oTvMvsBHYwxiqN6V4BgUZfJEcTm_piA7-Ft9aTuHZV4,25079 +setuptools/command/egg_info.py,sha256=se-FhYI1sZMzKd6lndV_-vNkJ31hX4HY4ZcMUu71l9k,25335 setuptools/command/install.py,sha256=8doMxeQEDoK4Eco0mO2WlXXzzp9QnsGJQ7Z7yWkZPG8,4705 setuptools/command/install_egg_info.py,sha256=bMgeIeRiXzQ4DAGPV1328kcjwQjHjOWU4FngAWLV78Q,2203 setuptools/command/install_lib.py,sha256=Uz42McsyHZAjrB6cw9E7Bz0xsaTbzxnM1PI9CBhiPtE,3875 @@ -260,18 +264,18 @@ setuptools/command/py36compat.py,sha256=7yLWzQj179Enx3pJ8V1cDDCzeLMFMd9XJXlK-iZT setuptools/command/register.py,sha256=kk3DxXCb5lXTvqnhfwx2g6q7iwbUmgTyXUCaBooBOUk,468 setuptools/command/rotate.py,sha256=SvsQPasezIojPjvMnfkqzh8P0U0tCj0daczF8uc3NQM,2128 setuptools/command/saveopts.py,sha256=za7QCBcQimKKriWcoCcbhxPjUz30gSB74zuTL47xpP4,658 -setuptools/command/sdist.py,sha256=iKVS1zk2EKw_UPiKzWGck8ytka05cWmX28iMvMH4rbk,7818 +setuptools/command/sdist.py,sha256=pEMF0GMVuaznNK6GFamK4GSXG9_qef0ic8z7jEsPmKo,5967 setuptools/command/setopt.py,sha256=LicqlXockLqBOHYPNv1J032HxoBKD4HOHB11qm_t-Bs,5051 -setuptools/command/test.py,sha256=Y4jwjdX_4DCimImq6fDWoHzBniXDNJVEcD6XxVZIYS0,9469 +setuptools/command/test.py,sha256=-O0xrH8adJKTXC8dSZL_bAh21domGM-zCB5RRNfndNc,9490 setuptools/command/upload.py,sha256=XT3YFVfYPAmA5qhGg0euluU98ftxRUW-PzKcODMLxUs,462 setuptools/command/upload_docs.py,sha256=ba5kOyedD_u62weinrxqqnvpuQvBIuamXehJG6tAvO0,7218 -setuptools/config.py,sha256=aviJCeFXvJ_WHwfY9oFaiGOEm4Fv7DF2i9LaAsaD05k,22020 +setuptools/config.py,sha256=a_S9dqb5l18vlqe5BrU303qZ6eFoagC5PZjYwRYX_mw,22279 setuptools/dep_util.py,sha256=BDx1BkzNQntvAB4alypHbW5UVBzjqths000PrUL4Zqc,949 setuptools/depends.py,sha256=iHfZdLdlCu2BllSF9bRg7NU0oqbPWMH8ljm4BuwQDY0,5474 -setuptools/dist.py,sha256=E-U3VVCY7JEKf9Fz_dDkT-EFbUmbJ-XFP_2F2Fz0ivE,40150 +setuptools/dist.py,sha256=BQB5bGAADU6ntdvA7NWtlvULhgLFewlEUfbahtOwHsc,42591 setuptools/errors.py,sha256=MVOcv381HNSajDgEUWzOQ4J6B5BHCBMSjHfaWcEwA1o,524 setuptools/extension.py,sha256=NMM46XjNdVelWemc0x8CyVKA5Ks6Zm3xTWSA2SS6xZM,1684 -setuptools/extern/__init__.py,sha256=uhAc-U12cORBK_H6jUZnG0FF-xaLvFR8j25NH0J0oo4,2389 +setuptools/extern/__init__.py,sha256=Hhf9W73WAitw9TdRJfDIb6YFjmK56CF61afds1Mg0HY,2407 setuptools/extern/__pycache__/__init__.cpython-39.pyc,, setuptools/glob.py,sha256=1oZjbfjAHSXbgdhSuR6YGU8jKob9L8NtEmBYqcPTLYk,4873 setuptools/gui-32.exe,sha256=XBr0bHMA6Hpz2s9s9Bzjl-PwXfa9nH4ie0rFn4V2kWA,65536 @@ -281,14 +285,13 @@ setuptools/installer.py,sha256=jbhb7ZVkNV_bSUMgfnLcZw0IHr6REFnKF4o7_1Jqxm0,3567 setuptools/launch.py,sha256=TyPT-Ic1T2EnYvGO26gfNRP4ysBlrhpbRjQxWsiO414,812 setuptools/lib2to3_ex.py,sha256=YKA7CmdIJWwy0-yuZAxUgoNHbXFmT4p53iNadWdBQCk,2335 setuptools/monkey.py,sha256=0e3HdVKXHL415O7np-AUqhEFXPPuDdJKbI47chQ_DE4,5217 -setuptools/msvc.py,sha256=HfXdtbmhmxAZXaYFT2NBZrXT8Sdx3fZlh8yIbllLGZ0,51126 +setuptools/msvc.py,sha256=3LLt938e6OR7wWPzIvCQu7LCWZSIKqoKV6w3r8jV3kY,50561 setuptools/namespaces.py,sha256=PMqGVPXPYQgjUTvEg9bGccRAkIODrQ6NmsDg_fwErwI,3093 -setuptools/package_index.py,sha256=xa71H7yK5PunUHF7ngZipaoxw2KWPd23qQNPoDudsPU,40718 +setuptools/package_index.py,sha256=2A1O7fpTXcfeD5IV4HWrIoEXXkgq5k8t9aWrjx90Vnw,39886 setuptools/py34compat.py,sha256=KYOd6ybRxjBW8NJmYD8t_UyyVmysppFXqHpFLdslGXU,245 setuptools/sandbox.py,sha256=IirxmeCHbl1CHT7pEPgQ6tTx9wU854n-d2p80Su8t5c,14151 setuptools/script (dev).tmpl,sha256=RUzQzCQUaXtwdLtYHWYbIQmOaES5Brqq1FvUA_tu-5I,218 setuptools/script.tmpl,sha256=WGTt5piezO27c-Dbx6l5Q4T3Ff20A5z7872hv3aAhYY,138 -setuptools/ssl_support.py,sha256=CPU_41S-x2V6qOuENr2wQsOSxlHvJAoXOxuAPbrxjpM,8565 setuptools/unicode_utils.py,sha256=aOOFo4JGwAsiBttGYDsqFS7YqWQeZ2j6DWiCuctR_00,941 setuptools/version.py,sha256=og_cuZQb0QI6ukKZFfZWPlr1HgJBPPn2vO2m_bI9ZTE,144 setuptools/wheel.py,sha256=0P8tSk105uF_Ub-30N2HU2X2v7MKDSdjpeQlRRW3SkI,8288 diff --git a/IKEA_scraper/web/main.css b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/REQUESTED similarity index 100% rename from IKEA_scraper/web/main.css rename to IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/REQUESTED diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/WHEEL b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/WHEEL similarity index 100% rename from IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/WHEEL rename to IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/WHEEL diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/entry_points.txt b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/entry_points.txt similarity index 100% rename from IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/entry_points.txt rename to IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/entry_points.txt diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/top_level.txt b/IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/top_level.txt similarity index 100% rename from IKEA_scraper/.venv/Lib/site-packages/setuptools-56.0.0.dist-info/top_level.txt rename to IKEA_scraper/.venv/Lib/site-packages/setuptools-57.4.0.dist-info/top_level.txt diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/__init__.cpython-39.pyc index 12af1d8bdcebe0dff01078e5fa86a831c5856b3c..493e947bc2fe4fc50f0fb6180ab5205e9d610b84 100644 GIT binary patch delta 36 qcmZ4Hyvmt7k(ZZ?0SNdmJ8a}OW#yGEBgk(ZZ?0SE%)?Kg4b8;JfUQ$R56tPlK5&(8VeypfaN*KX0=QbCDqzA5hvEh>PPU z?=W#tW>~;d!;-?>%$UMb!n%;ThOveT2pO{2YnW45=kNwIXtGV_HqBPJ#gmhnoSIjh z8lRS#lUn5xl98%_EHYWnR7$3_7*()XAv3SIBsDQbPm_0Yg{cKo(W%L6P46+9OztsL z7Gq&#V`O4t`oqM^#0Y{cj7+bqWGB~~h)v#UBeMCa*>*<83zO$sNU~l6x>tPiZi_C) zOOxF!eHrC9PqA!aV!S+A(ngK(%47!{bw>Nm88!usjPa9i+Ad^#Il0V3EY{? z?`Z_|t&^t#5@$R;d52dPb82#mK+WC`2Ir@_qT>tYpCP`TNGxyX=<7bxWn#KnG-_n0^c zGuAKxAww2>4RZ?f9G+kXO_s^>rrAuIJd+=oT1=KTyUnOI`KOsO7ZW20vM@4z*lb|_ zm{I;b(2QFwCAkGTMY2F9gpdQVE&>Um$wro4j29>Gwe)3_+RSa$!o+xK@&p?-#>w9N0exE$cTZi$$20J<%cF8}}l diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/dep_util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/dep_util.cpython-39.pyc index eeb72dbf4a04844a74febe81cd9061307a180cf0..30b983730f79358b70beb88d71be5edf504c9fa6 100644 GIT binary patch delta 35 pcmX@lcA1Skk(ZZ?0SNdmJ8a}GVB!jPv5E<(%qYpvo7~8B4gj4$3M&8r delta 31 lcmcc2cAkwpk(ZZ?0SE%)?Kg54FtPc&Sj7}nPHts72LN?V2wVUF diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/depends.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/depends.cpython-39.pyc index e809f18bc8066aa0a5b92a86f4d0ae78b726118f..2fe6588551076a5a3dd41fc453dac69ece9da5d5 100644 GIT binary patch delta 36 qcmeya@mqsCk(ZZ?0SNdmJ8a~>&cqeuViglmnNgCTxA_HAzaRj_U<-Z# delta 32 mcmeyZ@m+&Ek(ZZ?0SE%)?Kg5?XJYenv5G0E-28^AUl0J6w+XKR diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/dist.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/dist.cpython-39.pyc index a676c26f543982dcbf96b72fb5a04733deed99ef..5579d43bbfbe267eafdd5cf99005bb3dd3ad4dbf 100644 GIT binary patch delta 12896 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 delta 9906 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 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/errors.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/errors.cpython-39.pyc index dfe3a58fb8b68532da439a048672283c59cb2c81..ed01f5d39b5134bbc08e8da2fa63acea93d2f580 100644 GIT binary patch delta 35 pcmX@Xc7}~Rk(ZZ?0SNdmJ8a~xW#S5Sv5E<(%qYpvo7~5=3jmxq3LyXh delta 31 lcmX@Zc7lyNk(ZZ?0SE%)?Kg7QGO_u(Sj7}nPM*ZH3jlOc2vPt5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/extension.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/extension.cpython-39.pyc index 133acb1bfa279e6d0ab522e21e4596f5bf53a337..c56b300f82c89a6e3c03ed760619d4055aa0db0a 100644 GIT binary patch delta 36 qcmeCY_8Yn9GqMG^Sj7}nZr;Lpj}-uP6$pL+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/glob.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/glob.cpython-39.pyc index 0c435d4c7e00f66c6b42bdbd804daa28aff43103..7f620760604b88b303f70cbc3249870e06e21fea 100644 GIT binary patch delta 36 qcmaDN^FoF@k(ZZ?0SNdmJ8a|*XXf&Ev5E<(%qYpv+nmAthYJ9)xC*5J delta 32 mcmaDM^F)R_k(ZZ?0SE%)?Kg6VGqZWSSj7}nZq8x;!vz3`4+z!( diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/installer.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/installer.cpython-39.pyc index b094d9143491e1dbad8854bec15811fd708e859d..aa4368f8a8936e7b237843349f55752d3a7c74ad 100644 GIT binary patch delta 36 qcmX>pdRCM>k(ZZ?0SNdmJ8a~xVdM&Nv5E<(%qYpv+uX}&!wCSYN(t)# delta 32 mcmX>rdQy}-k(ZZ?0SE%)?Kg7QFtP=>Sj7}nZl1_!!wCR@5eOUr diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/launch.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/launch.cpython-39.pyc index ba7e44371bf1719175cca7a51dc363f5886df46a..470b06e5e6efd4f0c160ea972e931c1b9dc4f11d 100644 GIT binary patch delta 35 pcmey(_MeSAk(ZZ?0SNdmJ8a}$#KaZoViglmnNgCTH+eJD2>`6M3f}+# delta 31 lcmey*_M446k(ZZ?0SE%)?Kg5SVq)`kv5G0EoV=as1OS4g2@n7P diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-39.pyc index 5c7fcbb6f4395c43cb595479e118984ab0621970..ac03888bdbdbf15d0cf86df848864c6d77794ea1 100644 GIT binary patch delta 36 qcmZn_?G)us~JP54- delta 32 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 C*NWi) delta 6514 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 delta 9825 zcma)C3v`uNmA>b{&)htKgaiTsZYYr4kOw3X!lU8+D&hgNR;#nrvFaN2SKC>-9NSrHtsSc}wVnO#Ke>Ux ztTlmrcb{|i+2@>n_TFcobMxlg;>vrpGNZIK?4h57`bMMdV-JpiWSflV*-iu9U_>zbDD`Go#dd#TV zaL!{koYi7GskGc|q*9}`^Q_6MbAx#+ zbv$f#nj5L(5o@2d=B%&|(*zHjo6OBrchuZsZl%vVP3@2;x?5e*ep6Cx+ezIX%w{t( zr~cmClK-{$u(qIr_B*OMK09m09bsMe$OzS3?b^2Pcy>gc2=vsfrm{Vgz#}wKBFYFu z?`WF#wp{E{ml8Gk{|S6hG%cfc$JcGxmJ`U1=%+2|__9eO$KqV5B^EiCpi_M@)FkGr zUxj`oYSdSY^i2(DiWC5x&P=PfS5KsSGI~!&>Vq=7@XII`I>t&!8v&O7U7zxs>QpUo)-i zs%Ro&s4pp7ReNdOzD?93Zy|`5$~w?~0;jY`W>R`G6E|{+Oj=fQUBcGmnN*glx|5c? z4a|E0*df-gtX7{ct=YR9+#zg8+DKV)JBt3HKFdnRLPLqPjuyF`nXpf!xxS|ccR@xfQ%Fd_MvRP}#dGo!r`D}YO z^tFll%R3+>AlvD~@fzt7$1ja^uO;`Rk+tmW&m_{(kc7f`DXc4b0>w=Lh>#tCV}M8j zV5Sn5^_WM!G;1CkSzM#?XFX@MF|A*m@s0^o43glScF{{UzA?`w zZJXyr`5E7scg%NI2+x@Bh(~x%El$^ud8lPEwFtDF@sIh(w9`UvAWnaQbKG-kgDJ@0 zwb5O-lLVqLDJz|`8zbZywCSf4>E1|2nwD&i+(AvLZc9dtWU{~*vB-TR zwq>Q8_eK4V*S2z`JJWQE5;;reGMS|96w?+`p~py)$Cv12lj-rCkx1LR9t}7lFdAf_ zj(5Nsq3A-gVj-XoIl+l3IbvX%I-MErq;*UI{9l3Ust7#3fC!MgmD6un3lZX<9H5rC zK)XjR$yTVU@^AQ}RIOeruc?Sot;8-l!69j6vzGjUDy?Yk$fEufAOgq$n5}eT^wUOi z(6YZn^{#aW0;0?-WqzpQxCpd>y;c2WcAaQeqH;l#G^ob$ri?7%-cknui>R2-0eS%a(-rtf%jMz7344vH8l4&EUCll!b`z2zr5obNVG78x9C`y%yg`~1DDXfHImDJ99)Q<-C zs1;RLqL6hN2Y{9Aas1sBZEn~TUyo&(Z>q{U_bp{^A>T)xrcWhAk%{z{FyB(o&v_;U z&Zt+uPu)Lv?pzeEnRP%~IE6H!uFO5S?)_-I5AZ;NEmEMcOnHvrb^5gtPATO2LV-{~ zo>M!kuZpDFGH+#+XQaUU7$8yrR#Ql)lO&PT^_fCFKJTkbo2i*J-UhB3z$ySnae@?D zp-p*@x@Ue>JvK$+Sh(4NKp_tin$D(5b!GltO-bU5YVuLY2@GcGT(RVP(Kk{6UJh0q zQQKQMwHKhr4Gp6Pi83CQ!p}2ISi&EYSXiZG*V8$v@jz%3JHS%_N%)=jR8316=&tD zOx&_<_>8Pa{U->VAPFM3lTK+?y6qI!tl?;}YuIbl(9(s?oS}`Q&p!ePG)hfr7%Xi82)^zDO`JoU3nt4<(^VN03#L z9U?z+HzNXW1|AQ`;dvNKIT0R;=T&4TK23W^^TI$>WAue~Uh@yBnNvxM!FPg2rbgSI z&dHJKi-=Lvhg7s-&nj14VE;aV)q~{43EGq*$wV46a~V9P9CS0=nTgPCy`Slouq1aq@RQ0-GFt;5dZ>(3M;hBuCK^as-4{5eMSZPoFXz7#ZDmL~6Q((1xUu>NbtepV7+XUBoupsA`v0 zs>q6Y9aHZ43S>>K?`{;w0BpSrK%E6_1k@?HqICyHHADx=UI+)2{|WdtffGzyL+sY@ zQ%Y{6al;YxuhjCK`mYtv!YNS^s&kjXd-Yo?zN~(+@|&HXK*J{ia2EMh!0!kyQ&Iu? zV*o_gX$p{UP~ET8E3Myhw>v_`Xc2dHgH7>Z+BSMDo$p21KKV63FW@!;r#zj>QJ|;5 zPgw)~r%1#$fpiA##R&Nc$yqgf@3a}v#SK|mHe|#HD4Vl?r#e=>aMxc7gIs|SKV8LX z`>Q|)GTq3XC(rReqppZ@X^IFG2jmVaUlvXgW!X59b^RKBy+v(*&Bs>XBE}ye(hY0( zfqEVQH={El&0(?vHID+K0QQ;#L`{rKIY6HkAD{sbQzfOJJ=y6C3p0n_XV`rKy68+~ znRG~rz}xDr_LuMcGz32ls0VNWnF9(t=LC?0r_D({`sfg_Z>qpDx+PE$Bqef2TcxSC zjxRN_a2Cly0wU#kK%@X{LszM|R8_BiX&dh;TMpaMo8Wtc;5tqFkmB4l+Wv`Hm*>~7 zd)2pqUGY`)-%YSDS|%Ir}#ei>tr@Y6? z#rt%=87I02am%Nyl&u@dfD_22vSvccwJ7-6BB$OdrmZ?4TZn6Q{wEus@VmF+V%MZM zQMH@_U>$G-1uHManPp~%(#ecLnx1@TxPH300Fu4a+d%p>TcYF3A>Hv3|7E`uHtD8D zc@O0ru5$$KfkZ8BGj2ASK^eDX3F1%$Bl7N?Au6M4cH~7~eQ!tAIP@76c&g!z!sbc# z72a;lnKKVczRE}tc{1wSQu*7lx2?(ZsS@QluaWLTF>Ki%;a=z59N#5^WTn_uxb0lh+aE zw5@W&82{oBk_JvQ(FRmb%JCR9KBAe*?X6c z*U}-;1=#{5}>Y`y+mvDFYj>B8Uah;PL z9?Wafg#<&$AA>Ja04!dHp~27Pzr6SNf^Nf~-e12Co#J&uf7M3Hw4tPJH7Sr(p5apsJ?mE_>iDQ>Wp^F|+ zJn}g;c3@GR2J&9CMhZ|%6g^xN%s-d;se10feOr=~9Ft~HkSdpxm{_noIbbJ7E!hO2 z*UOVps(UAY;ouvBGIw?MP{*V_43pGJd+-|ahLdqVbu99dz`N9M4m~L9)tRoy*3V!n z3kV!vUoMw*0`X*m5;!NkJIxpE!*|>+PlAU}LH2IeW*h3B0X(bzqifp=b{H&!o$=SgL+~WYG%V_~TUWiq7H?hg%Q58j^F@fosY z6hkejB2wToQlPzrN*-^CP`^5QYT-B0^xuF;0hk?U$5xfQb0qe8G<*S&C!m9&g(SHd z!7{3F$_n$+`*Nw|qyQ{_H_6zM-+9a@47S`6G#>@r11KELlHT_`ayy`c z8m==rmdi_J^{)d{1icw*LET1md-I=(ofma0QRYL6>fE)A`s~x`byvlvQLUwgFU#_{ zI)40b8eu6;@nL!jJnEVQzf!q37CyGyAi~`zRdk|eJNq&=nWD@HU5iqbE*Ff-^*DcA zTBhxuRCIUBQTTNejAQ5~PRZ}8{uA@6J0Lky0A2-_e_Va^#LKIB{>^CR#~q1lsK8*$`=70LlpEQ4^r{+#B#rblypIk5K1y1Hu&rmU4)^0{9~!Qh-`eX!twz zWcQ)#*m>4BV@Jc2>SDZF-5OteT^Cr+O-De(r>ILL@Nuv_p}rBX8@~YZgMbGC4*@;| zV7L4dD1-p{3&6{OR{*#r$ln6q0Q?2;7JvhO5bEG0;ZLaJOoor{YBbPsL_rJCBE|_3 zklnKf0m8imz&Y7<*zueaO0#o`_{2LG??G7XPl8gBz? z0Z8a^P}p~r5=C#7Uh?s`!&U0f=5Bff+hWD{^11$bY9%wKXNI_uwP*{sqQW=Scf)sP zPO1C0qEqZoJ5*kK|fN zlY{Et2cDysv zGpDc;H@~tIxeUDs<&}}ya)_Pt`or7_)0b>U+N8%zDZht>Aq$(l!G$IsJ#0sl@tdjU zs(Lf?5AFBRq{uG5hVD2DiN2FQ=vB#z^H-Zw>Zk<|vZ0_){WQBT@NOdIkZL(qCEllY zoQf1jz`*>q>eQ*Z^f0PEaO&Qj7(y1-M)NBS#wwYZu)LSp@PbKSKd>N%S{6wyWxo6| z84|ni1D79@>s73Ya3~a%XYwm^9}(hq_3gp=VwHMj@WjD3ETsm( z85U<}s~~qZpdGLu0Fmy1!(e8`@fpIgZV;^p0H0Nlo?hCGlZ;Y&KG2Yq(pUTjeLH7P zJ7u}rAf4R`nK*6bVG`m5={8T_JlgUBh~yDE(D*t48KP`Z3x*nIM?f;vf@&k~Me44h z&7w_xbm)=Y$OQJ`3w}wXQzXP~*(;Ag=1~GXc_$OopTl^$`zTzxA=68LEwEpW4lnCq zcg0|ITjPcCzznriOV`T8ux|I@Me7*4bMO@M@%)d6&kNC{x<}hYR6RPnt2Rr6lSM-a z-3968){bhg;)rv!{d;JJUsUgmF6#aQRg4xPKDTflS$R#^;=N);?80ga9_R!THa`VF zMV;ML`}?4N2sjD&C4lcmexcrdclD8HQ1L85wA@|RT2!n9AQ5u>{9J$S4x#C9G3!PE4ROF;6yF2jBeNJ+p=S3cBw^Zoy+|gyo7pB= ztLo=tEn>bZJ#%QBzuR$&@Wg`avCWy1GqX@`rm&WgHmBcCuqT}|=q}IS6~$)q>kWV1 zO@FFEe>lN^fgvwqQdV&YQ~q(UlJ}4 Zm6rJ^FqM~8&#av}?wR}-Rwu`+{uj~S8-@S? diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/py34compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/py34compat.cpython-39.pyc index 2d3d0b67ac9bedb49792ec24f98ddba25c8b347f..a1cc89f9ec3723dd90259e6be86ee8b8c89227e6 100644 GIT binary patch delta 33 ncmcb{e2bYok(ZZ?0SNdmJ51!h%@yim6%$aIQIelG@y#m$m1he9 delta 29 jcmcb`e2tkqk(ZZ?0SE%)?I&{IW(#z&iYcg^_~8`*ZYl{f diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/sandbox.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/sandbox.cpython-39.pyc index 6a685520a411eff8e32c611172687a1a0d0e6734..ed2368d582fc94b5e9766fc92abd12ea31e14f2f 100644 GIT binary patch delta 93 zcmbPIJ)@dCk(ZZ?0SNdmJ8a}$#LN}sViglmnNgCTw|O(OHNW;P&XmmJlG2jQoZ?&j o@o;v0Mq+Yy6q|EpNk)ENQ54XCqR`0-EFzOX7_w|O6i(Ix0GoFoB>(^b delta 84 zcmbPHJ*ApEk(ZZ?0SE%)?Kg5SVrKJmv5G0E+`OIHnqRLd6ew|vGbOXQq_iY6r#Onu cxw0f9Kd&eXB+efXmx#|uOwQh{AY7pZ03`Ps+5i9m diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/ssl_support.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/__pycache__/ssl_support.cpython-39.pyc deleted file mode 100644 index 75aeb0a8071cf41a5e36d605d7549eb827cf2669..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6851 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 delta 32 mcmcb@ae;$7k(ZZ?0SE%)?Kg7kGqQ!aSj7}nZgyc5UolGY)yD=|KqJ}1dg>^TiBoslZHgpw4Z9)r1+jQ5>&Llh8?Cj>w zG~ErmB*j>KHAIdg_ETHYHop3p)T*(dh=!J^NGjE(eh}%0Y7|7IrG@A{yOb*G4D*|F z&pH49nR}TZpJLBF%>wa2K$FB(v%D#O`FNm3)nbu*2Kw?zH)DHY_4jo*he47eX2LSe zw%ti9k!*7^ySUfg`F{AOfDn>;vv?dA@am3NCnFP$1!+VnsKZe38P)q(QSX=RHd%7l z@lR@;`UBXjy z^&vJ3`L65EkM~OjJtFO_EmlnYG-4LUZm*0XV?(Fh|MW%d=Ks_Wcs~vF0QfN+?O9t= zxS7t3oBRc_@ly38mYsTl^9<+RVjT?Nbo4>F#D;7<8@&Uz;xEx)NQOr6gUqy5l{GUN zRA9hXHD5i*vI;fV6y|3t)cz?RFBDq>2;r3{e}F?+im$+9xH$NRa#)!2Bj_aB^>X+q ztsAhey#Y@onqU~uCY}i$qA#f8TdB5qxTs8Z^!QP=aVJ}`CDz=;=hpH^MY&YoRt>ipUI7RaVx?v9P8jh9A z&*HJ+X_%+HBJYlKdj_{8$CPsSNt#)u3gL_ReR2j~!cl7)Ucuk2e)t3*8rcB*adPCf zP32uMF8(};|10+Kqm;i<1RfHJAlp)T1OF5UQybe~r>;4H?TwBbcdbNh)EfNT0lbAD zr|yDx@#oan!2{HLkkCtbhwwaMFX27HhlJDK#ZeWY8-Go2gfm{)z6|weL?O7Qa^zuZ zTEGq2yWtB=XYYk$IG1gObGVrO9KOMsv2lgk`I4vc6u@~Lce?7%i_G@wL?)fJMosSU zW&FVD5}Fm~Hn`xaZjY>-Bhh!*o9loDEavWmW&B8R9aNSWD@Sj=u{`H;LKEO?IKkd2<2bqD_od5y!K04S4L8FfpCe? bM_9o+RxaXGwBSH?k)*Wt-%^6yvkbM9o# zH}f0=pT&GOeG>3T)rAUcSg6y7rCJDUoQ58;)l?xUR;>_>3*7~Qo=U-KEEiS@Eep9) z3Y(m!ur{o7ntQY$aBT|L8iGc*7<%`&UiI%O0x;p|-lAmI&Fe)B+q_EsX2$%Ct>$al zj0yHFc(yVg>+Ok9fQRhz0uiiW21yh_0ujXTMom0O>a2YVU@7)hzl45luXzhQP;m_D z2l*~+2veO)U=RzOd9V)y&J)G`w7HIzQM8;8({U?eaW%W_uI8XiY4Z9Nc8#LxzmY-K zNe(v_xF+EyYTYfoV4Hgx4B?==6nyx_eGS_1a&7CP+gumXH8QUflr=1kQpX6l@pNSp zZuOX<11mh8Fcw|E_vqj_e)a?wM@1?r|0yhSUl(?IPeBhR)pbHIp0BHbd-$Pl4InPB zAK28-6|%_q=?d&WTf=UW|4$HDW>jyBy@5SIgKvX=fKjY{AJ4U!gxI>swyBj2cEIg-dfJt>u`3i}XJRrx#8lFX>aeUsm7M`Fru$~tw z4Wz*=DuG8ZhiljYJ;~W)b(GZuJjJwNZo*UU*=2C}8ydYn7i(fOxG$KSHm%{8G?9md zI5TMZwJ?M6ha^h;YOshp5-if{XKAZv_@y};#&KzABg~+Ka}2M9a^MBdhKk{}y0GP{ z22ASx)`w#92qi>+bAqg14%x)(T|Df8eAKn)tb9W*(Poo%He0Nl(UubARQ8av#tCJF uX{>1LdC5uIdBzm+*Z8J4O9{qoDf=hj-wPN3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-39.pyc index 747bc2d701b6dfc3449d76b95487fe3c0c5c2373..03745e19fcc54f08969f3ac84d03c70fba48390d 100644 GIT binary patch delta 36 qcmbQ1J1dtvk(ZZ?0SNdmJ8a~h!od~kViglmnNgCTw|ObYM_mB8EelZq delta 32 mcmbQ0J1v(xk(ZZ?0SE%)?Kg5y;b04Ov5G0E+`N+Gqb>l9JPCpT diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/config.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/config.cpython-39.pyc index 51510f3c31daf2479f9d298084b2748b34f3fce0..d7e8fb245ae0528dd060738c8a416be7e918571c 100644 GIT binary patch delta 36 qcmew<{a2bhk(ZZ?0SNdmJ8a|*VCIT(v5E<(%qYpv+nmTeg9`w*lL}}6 delta 32 mcmew>{ZpDdk(ZZ?0SE%)?Kg4v5E<(%qYpv+nm6BP7DC3`3gb+ delta 32 mcmdmFvd)A%k(ZZ?0SE%)?Kg7!GqZ)cSj7}nZcbr7Ck6n2GzfD5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-39.pyc index d7fbb111f52b644fe41ad80a7c2243b214063091..79f8a90e632d08174d6d283a90fdff7c419c6b10 100644 GIT binary patch delta 1843 zcmZ8hTW=dh6yBM=c)WHTJHDi~o5rT3t#c_!S_p)ex^Ys1Xy{!{s|e$IHjW)<4dbOv zEV~gzLKPPYX&$&e;7ADZ01{v!1P?rekSZv=V2Kxm#9!b68qV3ILE!a#bIx~W&Yqq5 zX8xGEI~~Y(b(sqM0zYN)gHxXcUeio#dUE01+LBYX<@;KZoNRma2|{Oy%owNF%bphF zD%Un?L&%OM(LWldChK(uQFb59o5XXexn8M*zZjZhR ze)oA$R%;!PW#1@?sts8!r$aGwVRcnr^nSOHhF#*&YV){X zG)PTi5M#@rjA(?a^l!SQ89@R()wTi<)$qATx0q=XlNuU~r|xL#C(L~)VO#VsgY9YC z<^o{{Aa9z9NqN_Ifqc*&@P9){LjK-0N%~}eU?lz+#IKn%^E27YmrhNcnGq8}h$8^f z3e1s7*$%u;o|KtxpB-Tt!sD)HrT&?$r|nFtN`PTlv@raM>6A#qkNgbt+6p?Lw} zJV2+bdcB;pRvpW(m8!N|S}T-FU53~-FUIWridE~dnkcwtN4uV{S>m+(E%YEIM6#Y$ zl9Mm>95o)noO$_mj}^pq6i*>wk%G(fu|0Y(m{;YQaDrsyQuzDzkHB}77O0>>8nmHq zYM>VI$`r&s2))YbGFV(~YPQC;rnVcMg{a2$Wg=#|(bOU8Y3h!Sb2o^1)-gESATMJs z56ZiYYBYCx^cnci`F4nHk!uYd&k65B(H235ITOzp_O2QO&xizm%YK9;LO;SGfO>dj z#IhZ+mds68Ds%agof#V!Ir(d3Vjbl7uNFhDPX8lMI#8=KpxwVnLAJDC;7SR14ad-W z7~vQ|$5*Q5wq;%@2!`~d2;&H@P*6T129P$yBy=J1I5Ni(P9S9D$I;|4=I$e)a}*Zn zT#JBiwQU4dQvy0ycN8rDjGl~JICl}Dh_Hm=^l3 zwqvOP*Bx3`VOvKXjT`cZ*xqhWgSI@I3UEunF&XTQXpWbA!8kf`hbT>zDE0l05B7~T z)UqFMltp?)F_fzc+(zmx_2N!Hs*HjK7lyxG@BNfAJzL4!#ri(k9gl6>@^IV^+E{ZC zA%rk2Ka3ZNEdz;z(Lo^QuzWO>s2`3oQ{_zJ02yqT60Z_a3d|4)HFwSEDb<`pb>;ad-jP4g delta 1579 zcmZvcO>7%Q6vyYyet2xJ9e>nzo1}@;s!iO~Z9ZB;8$m)zgMhYywh#hUjhk^?yN*+h zS8Wp64QiyS;!8zyK!_qG^azzeJ|HC20~Zj83*r=U0|62j&ZuDC+XSjgc)kC9^WWJw zv-5tl-%tE{ESwL80t|o8=f?8)$36|eVcPkLqvtL!={sf-9%}}z5#YZuJz-C-tg>@P zo#lLZ3OxOFwubF;K$4i-1W&IJhNaG)z^v;Z+Xq_gw0OU0|DYC1cW&Q9kmmF13y?RiF=D_@Mcra}S_h=fg*#L*EW(cMReE zmjlONI{xGfXP-EB;V}mc$^iScFFsujL-h^>|uT5Drv5%XFBQp@3!B8C~8P)Ga z_oYVvZD#^%lH#XGp4J=D-967xc!K0vl#S5Bg>tU2=oYHA(n8gnSy!wFru2BM8^$#3 zitAb|%Kv2gMr;vgbSpM&AEc*W(T~Op5n3j7jD)76&g;AJPMFr;#5-VA{}TUpWf5(c ztzmWRQ0H}H-Si62B_Jwk$r~o3Vl+&I!$7P+9gc%E6dWwef*5&|3S(FW@RLgC` zib<6qe~^Rn7@C|-oKs7v~Kk5#`+xoNasrY`p zb(4~s7%)qK+OMy5^&D}T1j&nh6&i@u8mzN5E{%1-*_z9bpG9=sg|sZV1vOu)7Sg4; zw0p6Trq9S?dbj0Kq2Esr8K7R%kcwvtnElp&<8TKQIhkFX74i0{_tq0S+VlAkl|}6% zsghhKq1WH=%`VJeE>#L@i7a|AMQ@-ASk07<@7mUXPyij<@Jr-?1KUZtXpgM0(a50p NrQ)JLz(qoce*h(+S}yk(ZZ?0SE%)?I&{Au!Xx=#S~OdoR|&(Z!QQg diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-39.pyc index 56ad4f0297333559253e6078d45fcc9111b8741b..82213f4a384760ca2f4dc8b37efab999745ac6e2 100644 GIT binary patch delta 36 qcmX>jdO?&sk(ZZ?0SNdmJ8b0kWaf%`%;%Xk(ZZ?0SE%)?Kg7svavy diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/dist.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/dist.cpython-39.pyc index 1870b7bca35c2ba85f585d669be17d774ee8eb71..11139a07407d9f0e79001d764d306bc29951c28a 100644 GIT binary patch delta 38 scmZqfWoqwb;!fn{6WPzC^l-3TTC diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-39.pyc index 30b12e4f7c7bbd325bc804b9f0907ef23d103ed0..49b2d3b9b09b832e553f8ea8aecbce640021ef2d 100644 GIT binary patch delta 36 qcmeCzpRCWF$ji&c00exO9X4_&v2w+`Sj7ZXW|ZXTZ7yb&5dr|8*a>q0 delta 32 mcmbQN->=V|$ji&c00e>Y_8YmASlOaotYQi(H$^#(G@&Rz%gxrI;bsyifA^hHci&NkCTVI-p()o|Rf`!H z7P=}x)3kF9irv(rnKh-@L$kD-_TWjDl2?>`?(^FptI2ay2hP5HWj?G1f@&qO#T_kz zUE+}bCgfXp^ihB@anE=g_KC}hChQmY6F7oBI|S2186fse%NNY9H~){CjWh|umuas$|kxNi*(?r9j2vY0Cp04UNnRU$pMP55N2+aKv01eD+~YHdd?!Y0JmnL(Ir{gQb`1yc-V_h`N7 zg_zFn0#Eqa6A3~d5-mr>XW3lq`)t90+bzBSDuExxwSl|MZt3y>5)(8lX_%^|nn_c| zUx#U$1LjO}RC&l`aLRz>(NJ+=;EW^oG%iAPH6$1gg#snl$p$ols#IH3BA8NEp+Q2) z*B11Mtjc8SD2@HleZyc%zdNyqm~^;k_E0N5F9_b4Nr&=Lcwph5!N+S_96Kr3kV#44mc^)fnU5kvk_7Z6YohB=v#>k}4 zN4;hA&_|ixJ~)5OUkGWpMqA$FQ~Rvhtj;sQW&FR2Lf*{mZUrEBp$F+lE^|~uOVr7l<{tlI-%RvE7f{HnI(BK z$w&dSR4U6dD|KLF@Gd-3j3gu>4cJQfO~OiUOX(IKiEqiB_)RmKk5iXM3n6A<6%#01 zgvrF_fxRj}q^*{H&bH(Fe?Ve>pTrOs1zG9Ydh2Gt%who_ld8uhnUQ2x5=T)ED(zI+ zcQ{{ivD|2EZOaXh{f!#{UoC}8Sm>f|W(cr3acsvQP!tDk3WKd%b_>84XNGq}Uc52f z3$@nG;X?#pqV~?cnI%+gC(6~O8n!B{iGh)E6h1!EZ%_&5qVPwy4f%5U-%zt@Je!nP z7sQ7nyC(=FADXHGeI({!(?5v= kr$>^SIK6Asmd~JOn3zBOku-EcTD6)=#q8|rx6)?s-$CrGj{pDw delta 778 zcmYjPO=uHA6rMNPY&OYelQb=9Yks6ZX}48cEmkTO`{$ujQ^blkYGd0;G-*uZB-jXB z3R)GxLhHK-7HmEBAcDq&c<`jX2wtrPDJUqODhM8WsLtjf&M+U}eD8bj%?$H?K9{lJ!2j8$=>xU;;5IBafv_WU3L78`oE&{)f zsyld~VOBOs+G5Ct#C!`v&qoW=ij`HG%Bls(B3z4R*F{!UIqNNsx!c0aWsm1)PGUn5+>d%j^C$W+>ONTn@bpA0Wcb+xxCY~fnqJ7~BVtnoM$yAn`_9Q(*0Zax8O z_S#595C)9SlLASDL70U}3v__of>|g~p;^-6&CwFtk3FG>u!EmM9bF?jY&w(EnauP| zCY7Da>sB5TbvC7$@yyhwoJ?g33C_c&B&YIXo6u=_i_vhKrU;!#GF5kFD<8!lb-!Q~ zKi4y$rM`v|zy$toY!YVK delta 32 mcmdllv|ETfk(ZZ?0SE%)?Kg5SU}Ot*v5G0E+`N^siyZ)eQV5d( diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-39.pyc index e2f004bb56cfa1a17437bc0eee029b1d973491bb..59f2fa89385b77ce6669972f0d531ff0dc4ae520 100644 GIT binary patch delta 74 zcmbQy$vCHzkvox>mx}=i_%1tamx}=i0^{vBa!+Pui+8b#DX84Mg7t%_c#$Yj;ud>mUUE)pN@^5) XPG(X;VoAp4_0l~Yj1`-0R1y>bzy%d< diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-39.pyc index 6dfb2a173fbf0094a47a1673ada592312b0bbbe4..b62b41704915d996a0971ad2b107e46406ed2024 100644 GIT binary patch delta 42 wcmZ2nyu6q@k(ZZ?0SNdmJ8a~(Vc|-0v5E<(%qYpv+w98{D#~cIc(J4c0QTt%#sB~S delta 38 scmZ2pyttSz>% diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/py35compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/py35compat.cpython-39.pyc index 73c40d36fbd554279757f68fb66f318a2e3e09cd..f587d3d6a20925d35d09b2755956cf8eb078780c 100644 GIT binary patch delta 36 qcmaFE@_~grk(ZZ?0SNdmJ8b0kVB|`0v5E<(%qYpv+Z@R#%m@IhIthXR delta 32 mcmeys@`i;wk(ZZ?0SE%)?Kg6JFtWwCSj7}nZjNOXW&{9%5eKsX diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-39.pyc index fa06ad13f5869583ebd7f707cc8151c422d47dad..9f1525dd21f7603fa0a8adbf1257acf8102dcc55 100644 GIT binary patch delta 33 ncmbQwyqK9gk(ZZ?0SNdmJ51z$$(7(@6%$aIQIelG@z+uSh~Elz delta 29 jcmZ3?JfE36k(ZZ?0SE%)?I&`-WQ%dJiYcg^_-`oyV)h88 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-39.pyc index 6180d7b319f75607a98a3871079873d77de0f06e..cac6e29a17de93f86989319025c12640a037b5d3 100644 GIT binary patch delta 938 zcmZWm&ubG=5PtJ^v-@^8i7~dt7Qr605S0=|J!p{@6&18;bs<{OF}I9&nelCvYd=Y3^|!UujNDq>y?0>IC$5;NV6c2$4jQ$IvAbwy3nW zY(=(V8-OTFjB_Xv1!7vJ6ybE#;8H5Zp^Y)sk4+I}_x-ENZZPRcx5^M@ORws4>j4#; zoN~Js)YDz3p6R;C>pmu3rkL1N8%){CnIh}s(yC^ap-MfaT~B#id$tKey=t!OFObG% zo5;Ou-+^=kAnQe$Pu>p%q3nI!!OEaI#NAP{Oh-_p3O4BiStJ~~!K0wz5B^0`B+7pV zB8&CEO#Rp>=@T#{@CT)vU}i3O?^dlB^z5v_1rhD=vRI891*-GcX3k$P-45q3&XulQ zpAF|{=JfFWNQU)trI~a>Sr*277>V8|_sX$hZP(&Nij-loDLC7P8eNp#vI zPgLr>7B`~a5q5Gk%Q4cHaV?oNRxm6S9-7_E0R@AAyCgKp1{JeYN%)J|HE3(<>y>v=9Q%S45+Q?%jnMOnMjOM@wo7#{D z28@nSA9CPej8O_%jQMEM0}8oa3UqhB)z6~u?}~|cU%hWoG=wOlELSv3TD4e49Vvz| zD27eOiIe3Rr`Ts43-{Lh5lmjyC(5R>E+g%IFo@-pBN*o7($xiT?G( ngvlAIe;S!p3e!!qsd|&QYtcE=ATcnT;ofjtIox2{@=yN;^EvCe delta 1444 zcmb7DO>7%Q6rMLb-d&G>;-n!>(n3v?A}ml80!Sf*K-Gi_DNPHB2q~cLW@qiJ>py14 z&5za?HHZ_H5}6Yx` z$#8QUq=hY#-@=`&$OtY{C=Cg^P72wd zzMlg-Hiav9gIecjxY9lVLKKO}A+(5sE)~!u*v$!3@g8kiYDlCsFS7pS-DC2xNJp09MLI@Wwi=G? zLwEoYE008$$UMYm4)W?kc{I|+W*^d4GD>z|=#e&7k}Qw4_$H~XGNLXX!TxO^trR-U zsqrHSrw4uGbSA_Qx~IyMA~!*FqC<#M59lV@B7(M3U#Du=r+&|pSrYLhkoWr$isvE> zV}yQ@x;&h%K?);}{-i(9_H)RuNn8ezCPD$?WVj!C^;$6~#p5@xUB9*dnX|ldd-c}V z&6TwcXXDx@H&!-c;%S$&hoZpntm6qs5lXn(FVii+4Z|TE)34Y%IUy$y8$nH-(3sB5 z#;_;Tgk*?D@_ci7;fuz8=S^$9%@->{sJwc$vGg9Ap5Y+}6Jf*Mt<5Y}>YiH(mryw4 z#4z*!i|Hqo8H_B4H0T-zFmhLm7Z9#%L3eZT;q-qEB3}){s;j)6g?z2Po1eNGPUW|o zY9NTF3~HtPV3+;?T12pg3^#lz=(oPo+frqsKM&1OTm%8z;2+-}Ia=Z9hE zJ9Dc&rj6X+^S!2Ww=4c21NWNpEW26VcdB72X4);b{k;G;BmCI#_q_8{(}A!O+|fl8 z!#fCM#HKl5z$k+>*kIE!%BhVq1A3~@0!7m(FqVaJpw#?}8EB>yvPkEU0~6mAa;Fr@ zv5E<(%qYpv+nm6{s{;VU)(Uh0 delta 32 mcmeyE@HT-vk(ZZ?0SE%)?Kg7!v#>?GSj7}nZcbt0)d2vPp$Me_ diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-39.pyc index 92fc397b991b4015741d8a9062864f98faeae87b..a3d777807fcae39059e0c2d5bef9e2169cf9e0ff 100644 GIT binary patch delta 36 qcmZ4KwAP6`k(ZZ?0SNdmJ8a}WCBPN$ViglmnNgCTxB0e!p8x>1E(+rS delta 32 mcmZ4Mw9<(?k(ZZ?0SE%)?Kg6t5@3sVv5G0E+ZRCq#=Sp_5iV3L9D9O*;T)@7MlaCE3%?iZMKwSJ} zvW=ixeL@OL3TqB~E=MhME@v$ZBSQ^yGea$F4Qo+Y4NDDcGh+%{3VS+JHjtmfQNt+C z5X_Lm38C{EN?5blQW#RWTA3snQn<63imFn0AaYO{cCZXDP-a~X!vd}vriF|}i&FR? zCZsb3Gt{T>BRFs+H%gcnu%rkqWK0nRYCV@C1hrTgYB5KO2vh{<98FQbTTIT*MUp^I z74d)wMj)ZdbW1cnwIn__F*(1uBEBTC2*fK(ExN^9T#%CqW)^4WOXR%-1=>qcs8n(5 zhUe($78N9xWavy1QkbkNBEo=#CR>pT zh#dkVgg^vbK1vY71(P=l83=>aGw=y93NZ>WvN4Jv&Fku#S~O-E@9ut$;S+oVg+JnATHi8*+EdP zUMGd6hEbd$n4yFkhO1ao!n}Ybg=ZmS3NKLStQ0MF1)UbcCj$-z_F*=ORg< z1B-Zo#N-+w1=g1!H&31;&+AwV&vRhBYu;S cI|d{g2O@GOCrIWoYE3>bDa)8T`K{z(07Yp~j{pDw diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/util.cpython-39.pyc index 84cc4350fa21f8ab5dc4d62de47b936089405da4..6ae5141fcb8487883091b1d79c5922340f609a00 100644 GIT binary patch delta 4411 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 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/version.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/version.cpython-39.pyc index 814c45fc6f46dfb034b8c2e09756f9ed01ff16dc..111258c86887fa1832a74e6a3194e4c25bda7ccb 100644 GIT binary patch delta 36 qcmca>`OuO(k(ZZ?0SNdmJ8a~B#mW`yViglmnNgCTxA`~gBQXHP_6z#} delta 32 mcmaE8dDoIVk(ZZ?0SE%)?Kg72Vr7eTv5G0E-29*Qkr)7%5eh5- diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-39.pyc index e7dfbcec70cc5e2a737d7c3aed8c8636ff9bbb13..3f9150c37c74ee382be4ea067b8248a1021b13cc 100644 GIT binary patch delta 36 qcmdn0u~UOPk(ZZ?0SNdmJ8a~h!^D;5ViglmnNgCTw|Om7hadp1U<#1{ delta 32 mcmdm~u~maRk(ZZ?0SE%)?Kg7IVPZ>iv5G0E+`N&gLl6LiV+g_k diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py index e9af4cf5..b7a06082 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py @@ -248,7 +248,7 @@ class MSVCCompiler(CCompiler) : # Future releases of Python 3.x will include all past # versions of vcruntime*.dll for compatibility. self.compile_options = [ - '/nologo', '/Ox', '/W3', '/GL', '/DNDEBUG', '/MD' + '/nologo', '/O2', '/W3', '/GL', '/DNDEBUG', '/MD' ] self.compile_options_debug = [ diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/ccompiler.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/ccompiler.py index 57bb94e8..48d160d2 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/ccompiler.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/ccompiler.py @@ -392,7 +392,7 @@ class CCompiler: return output_dir, macros, include_dirs def _prep_compile(self, sources, output_dir, depends=None): - """Decide which souce files must be recompiled. + """Decide which source files must be recompiled. Determine the list of object files corresponding to 'sources', and figure out which ones really need to be recompiled. @@ -792,6 +792,8 @@ int main (int argc, char **argv) { objects = self.compile([fname], include_dirs=include_dirs) except CompileError: return False + finally: + os.remove(fname) try: self.link_executable(objects, "a.out", @@ -799,6 +801,11 @@ int main (int argc, char **argv) { library_dirs=library_dirs) except (LinkError, TypeError): return False + else: + os.remove("a.out") + finally: + for fn in objects: + os.remove(fn) return True def find_library_file (self, dirs, lib, debug=0): diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-39.pyc index 295c63b8201d43aec7308a98bfc04105dd9b1e45..395a28c1b6eda4498d3ff0331cdef107c3e26fdc 100644 GIT binary patch delta 35 pcmeBX>1W|i1N?hqb5e#ok(ZZ?0SNdmJ8b0cW8zA7v5E<(%qYpv+dQ9X88-l~WeSo2 delta 32 mcmX>pb5w>qk(ZZ?0SE%)?Kg7wF|ozFSj7}nZeGl^j2i%hj0nR3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-39.pyc index 75f2afa449c873ff2a768c843472315a4a8d8846..c56da488d1ff1d378880a2d1b3856f7f7d98fea8 100644 GIT binary patch delta 36 qcmdlYvqOeEk(ZZ?0SNdmJ8a~B!^)N6ViglmnNgCTxA`xtIR^l-c?!h< delta 32 mcmdlXvqgqGk(ZZ?0SE%)?Kg72VP#8kv5G0E+|0;k&H(^{lLz+z diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_msi.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_msi.cpython-39.pyc index 84c22355aace1b00bd6361f6bc4074a76a312059..b7288c2fcbec6d48cf860038c7a14ae216dca467 100644 GIT binary patch delta 38 scmaDgi}BqoM(#vjUM>b8;JfUwk(-f)E8WE^CZIB-BtLJn5KDw70Mfb&xBvhE delta 34 ocmaDii}BSgM(#vjUM>b82#mMi$j!*Ymh55`Q&72Cj3vSo0Homv=>Px# diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-39.pyc index 58c45b889348c8669f6e96b0a3d92789487970f3..3c13f7a8b3ff7990d83b38a55355fbeae9644841 100644 GIT binary patch delta 36 qcmewu|23XFk(ZZ?0SNdmJ8a~B!OxZMViglmnNgCTxA`ak4|xF9?F^^@ delta 32 mcmeww|1q9Bk(ZZ?0SE%)?Kg72;AcyAv5G0E-29jShdcnK@Cw-g diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_wininst.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_wininst.cpython-39.pyc index a350fa26ee96dbbcbcdf7ad161d0a155c0f1cf59..adc9c5d874bbc3cb44a5568361a9d2554688f791 100644 GIT binary patch delta 36 qcmbQ}Jk^;yk(ZZ?0SNdmJ8a~Z5{$jbm^QhKeGd1w8ip*s z1^f#ciq=im=a6Q+Hrbm)j%5O45!2*s4sA}g64opsAWv=bd=6R0q{(|ZBpDMnU*~XU zWaZCDERLTn&9#o7i;;_og9S)3vi)ac;@NzI>klJqkv`D&$%(w8jQW#*^Hek1O)lp> P%?1)IvfJ#zC&&l@Xkjen delta 204 zcmca9cTwTOl@$;g%AViglmnNgCTxA_$#n;-ze`U?2~ delta 32 mcmeyO`azXDk(ZZ?0SE%)?Kg7YWMoTmv5G0E-29G_O%MQ-MF}bZ diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-39.pyc index 9669c1520f20405c45560a0f3184569614024bcc..d497ddc9662bae518476944bb936e119cc79bb82 100644 GIT binary patch delta 317 zcmZ2kzrCI}k(ZZ?0SNdmJ0!l?$orLvE8WE^CZIB-BtLI62lEl*dRCw;2M{|0ad8!p zsA0@vSiqRVxR5c0Ns^(Ksfw?LX#rCT^Fl^OhH!>FJr;%%=1Lz%1`teP0n4#2WL&_K z!j{6mkZA!cNToPKEpsG89+v?_3P%kSh?l}y!wjTZYFL2gvz0Lxm4N64>`XN*n?22S z8AXe{fp!-i1roPd6N{5GGozS7<0to9h%wz_oV>)smzTB33Z!Bxh)AFO)51Vd1juAy z6JTUw=40exRAS=TY+*T_iSgFt3)ah|K7iEa0f{KSoXouJ_?*n7g36MN{JdL}C)mg_ k9@)I!<{G20Xpt~biKfgg_W1ae{N(ufqF|A zVNc;$$h3eJq!Oerk|B@DfFXsmh6%`Hu3-k6%vQ!&Q~;tEu-7mzWZWEVuFa@-i!r{) z8)$dYQ6O=PHL*B3GqXq<#O5d{&8tk#Pf7jE2;}O5$;qoNd^uQ(tUwy3PG+?<;1>ci z8Q4S^nV9()c^H*8yID?WVvL%6&w82EdyuL;AQ8ovlbM$tpOcwXP+5|ZpBFWGo{b#i jq0M`3t}zM=7YPHEXv*ATkB?8uPmYf-`muSLoggCso%2yf diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-39.pyc index a35b04e6ed3c2454753b2b4f0d0689308cafef35..27069963754ab9c8ebeb8af818228c77be353ae2 100644 GIT binary patch delta 36 qcmewu_%)C_k(ZZ?0SNdmJ8a|*Vc|-1v5E<(%qYpv+nmbMqXGcKzY696 delta 32 mcmeww_%V<>k(ZZ?0SE%)?Kg6Vu&^b$Sj7}nZq8)sQ2_v!vI!Re diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-39.pyc index 6553f08137e73568e4f0a3c5dfa5c0cea1e8d42f..5a4026260837df41e38980cdc6f728e7ae9343ad 100644 GIT binary patch delta 36 qcmbQGG*5{;k(ZZ?0SNdmJ8a~RW9G_sv5E<(%qYpv+nmq5nil||vkCbC delta 32 mcmbQIG)sv)k(ZZ?0SE%)?Kg7AF|(z+Sj7}nZZ2kC%?ki`o(L)c diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-39.pyc index 3e450052888898f7461e836a332a09cffca13b68..b9978a4072a2ea9140f02656e6d15dda085758d8 100644 GIT binary patch delta 345 zcmcbs_E3#Gk(ZZ?0SNdmJ8b06VB$)4v5E<(%qYpv+g!;c%E%bCxu3b6iCY<{q(~J+ zs83d8%jX6&!Gh|OXR}RU)Sj%vzK%l^s6dmsNNe&Vb}dG|$-Eqo8I>o0T)d0c_)-#ki;29xD@e~N(&tKv~DR?x`F%u7{J zE!NazEi#|1%Vz*o9LFcc=rlP{NSM)Rb1&aCMn=cUDgxS!=92>i{xP~u_7~KZ@B`|< z#h6+o2C@rGh=W)zlcxxVa?6953Lrvp@)to%c^wc_7ewfR2xAao03wV)gv(?fAqhsM q$*DrhoJv3eKTUz6u*nmJDg_OJyjz^E70IauC7JnoMM{&Ug`EJ|YfRt( delta 379 zcmW-aUrWMZ6vlg|sY4n+{r zXOLa>RR&!|&}XQd>OH;}zxSN;Jm)zd+Pfy$i9~#ay`ARTKxl^|&Gps8PT#){jS&*~ zz}<$V9FwVr&>5f@n}k|qR~Sx)nhvj#J2D4@NDAuF=U9Q+433)c6)lhwD6!8p`U0ud zc3LORGpA=C**%+T5a$arhEfh;B8D-3gSR-6gBNj%1-ywCtN+9-DML2#lg9ijG2hMT zr>^H@@?FCirBx_P3)3Yg8DT21F9_q2AbMd_&-IRJ9d^PgQt|JlM?z|#%OC diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-39.pyc index 585e549a5400acbcdc325fc398eeedff3e97eb75..11697728cfb9feb9021c1a0f837f905e29904075 100644 GIT binary patch delta 36 qcmbOdFe89Fk(ZZ?0SNdmJ8a}`VdF}1v5E<(%qYpv+dP%6UJ(GU8VY;> delta 32 mcmbOcFeQLHk(ZZ?0SE%)?Kg6_u(2h$Sj7}nZl1|juLuBxJqWD; diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-39.pyc index 61cb2ea4a6c93fd4633cfdf18ed49c65c1ced27a..78a898b9c3ac75fa7515f184e1a288d29644f84e 100644 GIT binary patch delta 133 zcmbQ9Gc|`dk(ZZ?0SNdmJ0vD-`n7~xTF!_~0BxBlU7r_`7R{o5{;`q%AMS~a_c{YC$lagdA%AVYyC_dTP;1uKj h$^Q(FG9K7`#887tU?0$$qWvJ^0EjrW`H!(Q696d?D}Mk0 delta 142 zcmbQ5Gd+hlk(ZZ?0SE%)?GvLm^8VvxOLVb{DX5$*%J-15Ve@ysH;mkDH4It8St=74 zi~ddiAP~uzve`>8hJ}%P^J>u`Mn&R&Sj7ZXW|ZXTZSH0&Y_8YmYnAoyhtYQi(H}^9YasmK;b_i4e diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-39.pyc index f525085765361547f57ec467f888e1880c295ddc..7011cceb6481b696f55ea018d443b6eda51307dc 100644 GIT binary patch delta 36 qcmcb|`-qo2k(ZZ?0SNdmJ8a}mW8%tnv5E<(%qYpv+g#3+&H@0f;0hW5 delta 32 mcmaFFdykhpk(ZZ?0SE%)?Kg6#F|lR3Sj7}nZmwoZX8{0%F9=Hj diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-39.pyc index 4778a00bbe9cc8fa3c206d9b6767b98b830352e0..6f5e1e96ee2271f7df0c31409e29ddb7549a0a40 100644 GIT binary patch delta 36 qcmeCu=+od%tYQKxGfMLFHhZ!hJq6gvt diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-39.pyc index 6c4b6aed9194ee6dfbafee8a0c8a2258b25f590b..eee4e8d67db8641fc245773bc20b446bdc74f710 100644 GIT binary patch delta 36 qcmZn_>=fiq&R(Sj7ZXW|ZXTZRTdKVg&%7dt^fBM069 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/py37compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/py37compat.cpython-39.pyc index 6e7b4b08f7f6225c4139842b2c2d30b65aebc0aa..5967c172388638414d6fe4337841cb546ded0f60 100644 GIT binary patch delta 36 qcmZqRXyM>aYJR|)6< delta 32 mcmZqSXyD*ZIfMC diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-39.pyc index 7588086023d3345c1e2e592816bbd713fc660ee0..b173b337d9c3d1b0c9f72163602f2720409cba2c 100644 GIT binary patch delta 36 qcmdn$w9|<@k(ZZ?0SNdmJ8a~B$;6fBViglmnNgCTxA_;7wHyGuSqmQk delta 32 mcmdn#wAG0_k(ZZ?0SE%)?Kg72WMWHlv5G0E-29KpS`Gk?SP4)7 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-39.pyc index 3f270a2704261b76927d42faca94a861af07a8d3..522f2398aab0f3e63f34e5da57d4f8714d69562a 100644 GIT binary patch delta 36 qcmX?5c%+a!k(ZZ?0SNdmJ8a}W#LSiKViglmnNgCTxA`*jTN41t-V6)? delta 32 mcmX?7c%YCwk(ZZ?0SE%)?Kg5CVrGkXv5G0E+|H3Sj7ZXW|ZXTZNALBK>z@xfeNAk delta 32 mcmZqIY}VvX= "2.10.90" and < "2.13" should also be able to use - # gcc -mdll instead of dllwrap - # Older dllwraps had own version numbers, newer ones use the - # same as the rest of binutils ( also ld ) - # dllwrap 2.10.90 is buggy - if self.ld_version >= "2.10.90": - self.linker_dll = "gcc" - else: - self.linker_dll = "dllwrap" + if ('gcc' in self.cc): # Start gcc workaround + self.gcc_version, self.ld_version, self.dllwrap_version = \ + get_versions() + self.debug_print(self.compiler_type + ": gcc %s, ld %s, dllwrap %s\n" % + (self.gcc_version, + self.ld_version, + self.dllwrap_version) ) - # ld_version >= "2.13" support -shared so use it instead of - # -mdll -static - if self.ld_version >= "2.13": + # ld_version >= "2.10.90" and < "2.13" should also be able to use + # gcc -mdll instead of dllwrap + # Older dllwraps had own version numbers, newer ones use the + # same as the rest of binutils ( also ld ) + # dllwrap 2.10.90 is buggy + if self.ld_version >= "2.10.90": + self.linker_dll = self.cc + else: + self.linker_dll = "dllwrap" + + # ld_version >= "2.13" support -shared so use it instead of + # -mdll -static + if self.ld_version >= "2.13": + shared_option = "-shared" + else: + shared_option = "-mdll -static" + else: # Assume linker is up to date + self.linker_dll = self.cc shared_option = "-shared" - else: - shared_option = "-mdll -static" - # Hard-code GCC because that's what this is all about. - # XXX optimization, warnings etc. should be customizable. - self.set_executables(compiler='gcc -mcygwin -O -Wall', - compiler_so='gcc -mcygwin -mdll -O -Wall', - compiler_cxx='g++ -mcygwin -O -Wall', - linker_exe='gcc -mcygwin', + self.set_executables(compiler='%s -mcygwin -O -Wall' % self.cc, + compiler_so='%s -mcygwin -mdll -O -Wall' % self.cc, + compiler_cxx='%s -mcygwin -O -Wall' % self.cxx, + linker_exe='%s -mcygwin' % self.cc, linker_so=('%s -mcygwin %s' % (self.linker_dll, shared_option))) # cygwin and mingw32 need different sets of libraries - if self.gcc_version == "2.91.57": + if ('gcc' in self.cc and self.gcc_version == "2.91.57"): # cygwin shouldn't need msvcrt, but without the dlls will crash # (gcc version 2.91.57) -- perhaps something about initialization self.dll_libraries=["msvcrt"] @@ -281,26 +288,26 @@ class Mingw32CCompiler(CygwinCCompiler): # ld_version >= "2.13" support -shared so use it instead of # -mdll -static - if self.ld_version >= "2.13": - shared_option = "-shared" - else: + if ('gcc' in self.cc and self.ld_version < "2.13"): shared_option = "-mdll -static" + else: + shared_option = "-shared" # A real mingw32 doesn't need to specify a different entry point, # but cygwin 2.91.57 in no-cygwin-mode needs it. - if self.gcc_version <= "2.91.57": + if ('gcc' in self.cc and self.gcc_version <= "2.91.57"): entry_point = '--entry _DllMain@12' else: entry_point = '' - if is_cygwingcc(): + if is_cygwincc(self.cc): raise CCompilerError( 'Cygwin gcc cannot be used with --compiler=mingw32') - self.set_executables(compiler='gcc -O -Wall', - compiler_so='gcc -mdll -O -Wall', - compiler_cxx='g++ -O -Wall', - linker_exe='gcc', + self.set_executables(compiler='%s -O -Wall' % self.cc, + compiler_so='%s -mdll -O -Wall' % self.cc, + compiler_cxx='%s -O -Wall' % self.cxx, + linker_exe='%s' % self.cc, linker_so='%s %s %s' % (self.linker_dll, shared_option, entry_point)) @@ -351,6 +358,10 @@ def check_config_h(): if "GCC" in sys.version: return CONFIG_H_OK, "sys.version mentions 'GCC'" + # Clang would also work + if "Clang" in sys.version: + return CONFIG_H_OK, "sys.version mentions 'Clang'" + # let's see if __GNUC__ is mentioned in python.h fn = sysconfig.get_config_h_filename() try: @@ -397,7 +408,7 @@ def get_versions(): commands = ['gcc -dumpversion', 'ld -v', 'dllwrap --version'] return tuple([_find_exe_version(cmd) for cmd in commands]) -def is_cygwingcc(): - '''Try to determine if the gcc that would be used is from cygwin.''' - out_string = check_output(['gcc', '-dumpmachine']) +def is_cygwincc(cc): + '''Try to determine if the compiler that would be used is from cygwin.''' + out_string = check_output([cc, '-dumpmachine']) return out_string.strip().endswith(b'cygwin') diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/filelist.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/filelist.py index c92d5fdb..82a77384 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/filelist.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/filelist.py @@ -4,13 +4,16 @@ Provides the FileList class, used for poking about the filesystem and building lists of files. """ -import os, re +import os +import re import fnmatch import functools + from distutils.util import convert_path from distutils.errors import DistutilsTemplateError, DistutilsInternalError from distutils import log + class FileList: """A list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. @@ -46,7 +49,7 @@ class FileList: if DEBUG: print(msg) - # -- List-like methods --------------------------------------------- + # Collection methods def append(self, item): self.files.append(item) @@ -61,8 +64,7 @@ class FileList: for sort_tuple in sortable_files: self.files.append(os.path.join(*sort_tuple)) - - # -- Other miscellaneous utility methods --------------------------- + # Other miscellaneous utility methods def remove_duplicates(self): # Assumes list has been sorted! @@ -70,8 +72,7 @@ class FileList: if self.files[i] == self.files[i - 1]: del self.files[i] - - # -- "File template" methods --------------------------------------- + # "File template" methods def _parse_template_line(self, line): words = line.split() @@ -146,9 +147,11 @@ class FileList: (dir, ' '.join(patterns))) for pattern in patterns: if not self.include_pattern(pattern, prefix=dir): - log.warn(("warning: no files found matching '%s' " - "under directory '%s'"), - pattern, dir) + msg = ( + "warning: no files found matching '%s' " + "under directory '%s'" + ) + log.warn(msg, pattern, dir) elif action == 'recursive-exclude': self.debug_print("recursive-exclude %s %s" % @@ -174,8 +177,7 @@ class FileList: raise DistutilsInternalError( "this cannot happen: invalid action '%s'" % action) - - # -- Filtering/selection methods ----------------------------------- + # Filtering/selection methods def include_pattern(self, pattern, anchor=1, prefix=None, is_regex=0): """Select strings (presumably filenames) from 'self.files' that @@ -219,9 +221,8 @@ class FileList: files_found = True return files_found - - def exclude_pattern (self, pattern, - anchor=1, prefix=None, is_regex=0): + def exclude_pattern( + self, pattern, anchor=1, prefix=None, is_regex=0): """Remove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. @@ -240,21 +241,47 @@ class FileList: return files_found -# ---------------------------------------------------------------------- # Utility functions def _find_all_simple(path): """ Find all files under 'path' """ + all_unique = _UniqueDirs.filter(os.walk(path, followlinks=True)) results = ( os.path.join(base, file) - for base, dirs, files in os.walk(path, followlinks=True) + for base, dirs, files in all_unique for file in files ) return filter(os.path.isfile, results) +class _UniqueDirs(set): + """ + Exclude previously-seen dirs from walk results, + avoiding infinite recursion. + Ref https://bugs.python.org/issue44497. + """ + def __call__(self, walk_item): + """ + Given an item from an os.walk result, determine + if the item represents a unique dir for this instance + and if not, prevent further traversal. + """ + base, dirs, files = walk_item + stat = os.stat(base) + candidate = stat.st_dev, stat.st_ino + found = candidate in self + if found: + del dirs[:] + self.add(candidate) + return not found + + @classmethod + def filter(cls, items): + return filter(cls(), items) + + def findall(dir=os.curdir): """ Find all files under 'dir' and return the list of full filenames. @@ -319,7 +346,8 @@ def translate_pattern(pattern, anchor=1, prefix=None, is_regex=0): if os.sep == '\\': sep = r'\\' pattern_re = pattern_re[len(start): len(pattern_re) - len(end)] - pattern_re = r'%s\A%s%s.*%s%s' % (start, prefix_re, sep, pattern_re, end) + pattern_re = r'%s\A%s%s.*%s%s' % ( + start, prefix_re, sep, pattern_re, end) else: # no prefix -- respect anchor flag if anchor: pattern_re = r'%s\A%s' % (start, pattern_re[len(start):]) diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/msvc9compiler.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/msvc9compiler.py index 6934e964..a1b3b02f 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/msvc9compiler.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/msvc9compiler.py @@ -399,13 +399,13 @@ class MSVCCompiler(CCompiler) : self.preprocess_options = None if self.__arch == "x86": - self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', + self.compile_options = [ '/nologo', '/O2', '/MD', '/W3', '/DNDEBUG'] self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/Z7', '/D_DEBUG'] else: # Win64 - self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GS-' , + self.compile_options = [ '/nologo', '/O2', '/MD', '/W3', '/GS-' , '/DNDEBUG'] self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GS-', '/Z7', '/D_DEBUG'] diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/msvccompiler.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/msvccompiler.py index d5857cb1..2d447b85 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/msvccompiler.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/msvccompiler.py @@ -283,13 +283,13 @@ class MSVCCompiler(CCompiler) : self.preprocess_options = None if self.__arch == "Intel": - self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GX' , + self.compile_options = [ '/nologo', '/O2', '/MD', '/W3', '/GX' , '/DNDEBUG'] self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GX', '/Z7', '/D_DEBUG'] else: # Win64 - self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GS-' , + self.compile_options = [ '/nologo', '/O2', '/MD', '/W3', '/GS-' , '/DNDEBUG'] self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GS-', '/Z7', '/D_DEBUG'] diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/spawn.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/spawn.py index fc592d4a..6e1c89f1 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/spawn.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/spawn.py @@ -15,11 +15,6 @@ from distutils.debug import DEBUG from distutils import log -if sys.platform == 'darwin': - _cfg_target = None - _cfg_target_split = None - - def spawn(cmd, search_path=1, verbose=0, dry_run=0, env=None): """Run another program, specified as a command list 'cmd', in a new process. @@ -40,7 +35,7 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0, env=None): # in, protect our %-formatting code against horrible death cmd = list(cmd) - log.info(' '.join(cmd)) + log.info(subprocess.list2cmdline(cmd)) if dry_run: return @@ -52,24 +47,10 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0, env=None): env = env if env is not None else dict(os.environ) if sys.platform == 'darwin': - global _cfg_target, _cfg_target_split - if _cfg_target is None: - from distutils import sysconfig - _cfg_target = sysconfig.get_config_var( - 'MACOSX_DEPLOYMENT_TARGET') or '' - if _cfg_target: - _cfg_target_split = [int(x) for x in _cfg_target.split('.')] - if _cfg_target: - # ensure that the deployment target of build process is not less - # than that used when the interpreter was built. This ensures - # extension modules are built with correct compatibility values - cur_target = os.environ.get('MACOSX_DEPLOYMENT_TARGET', _cfg_target) - if _cfg_target_split > [int(x) for x in cur_target.split('.')]: - my_msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: ' - 'now "%s" but "%s" during configure' - % (cur_target, _cfg_target)) - raise DistutilsPlatformError(my_msg) - env.update(MACOSX_DEPLOYMENT_TARGET=cur_target) + from distutils.util import MACOSX_VERSION_VAR, get_macosx_target_ver + macosx_target_ver = get_macosx_target_ver() + if macosx_target_ver: + env[MACOSX_VERSION_VAR] = macosx_target_ver try: proc = subprocess.Popen(cmd, env=env) diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py index 4d7a6de7..f51977a5 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py @@ -233,8 +233,12 @@ class UnixCCompiler(CCompiler): # we use this hack. compiler = os.path.basename(sysconfig.get_config_var("CC")) if sys.platform[:6] == "darwin": - # MacOSX's linker doesn't understand the -R flag at all - return "-L" + dir + from distutils.util import get_macosx_target_ver, split_version + macosx_target_ver = get_macosx_target_ver() + if macosx_target_ver and split_version(macosx_target_ver) >= [10, 5]: + return "-Wl,-rpath," + dir + else: # no support for -rpath on earlier macOS versions + return "-L" + dir elif sys.platform[:7] == "freebsd": return "-Wl,-rpath=" + dir elif sys.platform[:5] == "hp-ux": diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/util.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/util.py index f5aca794..4232fd21 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/util.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_distutils/util.py @@ -103,11 +103,66 @@ def get_platform(): 'x86' : 'win32', 'x64' : 'win-amd64', 'arm' : 'win-arm32', + 'arm64': 'win-arm64', } return TARGET_TO_PLAT.get(os.environ.get('VSCMD_ARG_TGT_ARCH')) or get_host_platform() else: return get_host_platform() + +if sys.platform == 'darwin': + _syscfg_macosx_ver = None # cache the version pulled from sysconfig +MACOSX_VERSION_VAR = 'MACOSX_DEPLOYMENT_TARGET' + +def _clear_cached_macosx_ver(): + """For testing only. Do not call.""" + global _syscfg_macosx_ver + _syscfg_macosx_ver = None + +def get_macosx_target_ver_from_syscfg(): + """Get the version of macOS latched in the Python interpreter configuration. + Returns the version as a string or None if can't obtain one. Cached.""" + global _syscfg_macosx_ver + if _syscfg_macosx_ver is None: + from distutils import sysconfig + ver = sysconfig.get_config_var(MACOSX_VERSION_VAR) or '' + if ver: + _syscfg_macosx_ver = ver + return _syscfg_macosx_ver + +def get_macosx_target_ver(): + """Return the version of macOS for which we are building. + + The target version defaults to the version in sysconfig latched at time + the Python interpreter was built, unless overriden by an environment + variable. If neither source has a value, then None is returned""" + + syscfg_ver = get_macosx_target_ver_from_syscfg() + env_ver = os.environ.get(MACOSX_VERSION_VAR) + + if env_ver: + # Validate overriden version against sysconfig version, if have both. + # Ensure that the deployment target of the build process is not less + # than 10.3 if the interpreter was built for 10.3 or later. This + # ensures extension modules are built with correct compatibility + # values, specifically LDSHARED which can use + # '-undefined dynamic_lookup' which only works on >= 10.3. + if syscfg_ver and split_version(syscfg_ver) >= [10, 3] and \ + split_version(env_ver) < [10, 3]: + my_msg = ('$' + MACOSX_VERSION_VAR + ' mismatch: ' + 'now "%s" but "%s" during configure; ' + 'must use 10.3 or later' + % (env_ver, syscfg_ver)) + raise DistutilsPlatformError(my_msg) + return env_ver + return syscfg_ver + + +def split_version(s): + """Convert a dot-separated string into a list of numbers for comparisons""" + return [int(n) for n in s.split('.')] + + def convert_path (pathname): """Return 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_imp.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_imp.py index 451e45a8..47efd792 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_imp.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_imp.py @@ -41,12 +41,12 @@ def find_module(module, paths=None): spec.loader, importlib.machinery.FrozenImporter): kind = PY_FROZEN path = None # imp compabilty - suffix = mode = '' # imp compability + suffix = mode = '' # imp compatibility elif spec.origin == 'built-in' or static and issubclass( spec.loader, importlib.machinery.BuiltinImporter): kind = C_BUILTIN path = None # imp compabilty - suffix = mode = '' # imp compability + suffix = mode = '' # imp compatibility elif spec.has_location: path = spec.origin suffix = os.path.splitext(path)[1] diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-39.pyc index 6981f5eea9909005eb035943de4d8a10f1d145d6..264490553cda1a2757bc67c8199a08a1b41bf3e8 100644 GIT binary patch delta 33 ncmdnQxQ&rJk(ZZ?0SNdmJ51!Z;fi*#iV3L9D9O*8=$i@vfh7p| delta 29 jcmdnSxQUTFk(ZZ?0SE%)?I&{Eu!Xx=#S~Od3`_+8U3>>A diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-39.pyc index 78f86775e56b534c028e287686f87b8abe4594d4..f68825ad7ffaf583bfd3e00c3514dddadc8dcc30 100644 GIT binary patch delta 36 qcmexT|D&Eek(ZZ?0SNdmJ8a~3XW@!-v5E<(%qYpv+Z@3%#~J|7Y70#O delta 32 mcmexS|D~Qgk(ZZ?0SE%)?Kg6}v#>?ESj7}nZjND@V+{bIDG7c6 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-39.pyc index 40b27e5dbfb2ff6f96e25f01073435885c27fca7..052573c61c91030c1e83fc334b1dbcb24f40a7b0 100644 GIT binary patch delta 62 zcmeyogy+W+9^OP=UM>b8;JfUQSh11!qzqS#i&acOWkyMU-sU?pGRGO6H~)OB%fgu1 RtoEW^?FHj@wHHjjS^%Ps7M=hA delta 64 zcmeydgy-`T9^OP=UM>b82#mK+EZ@j`Qid(U#VV$ta`OWjnd2-@tPBj(8+94gHmf~h TVQJQW(XRc1al7^lCSNT8lJykp diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py new file mode 100644 index 00000000..19a169fc --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py @@ -0,0 +1,4 @@ +from .more import * # noqa +from .recipes import * # noqa + +__version__ = '8.8.0' diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..353400bb9db51888f6bf8a1e54f5e75eab506048 GIT binary patch literal 263 zcmYjLO-lnY5KXpQT$FnDFRb9!V-b-GdJsj#dMbe-ZU!6OO~NEysQ<{{<87~={0p9( z)gJm_-s8=;o=o-y940 z>r03=>42oF4qd12?6ZnC;YrZ-n|{HlBBpgn+#aXApT}uB+y!o;Z5phz37`s_zBq5a PSvPnwJREbTLKfLCv2;lB literal 0 HcmV?d00001 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6262074547982dc4ab2f6f70ed8f1da79f16aa9c GIT binary patch literal 110008 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 PK2g7}er^5r^)3Gw;qvj( literal 0 HcmV?d00001 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0b9e513514989aa0373a9e9a9592e15d2379986b GIT binary patch literal 17928 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 n?<008U&O!CvEsAEmy6Gq&Xy)h&y1` literal 0 HcmV?d00001 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py new file mode 100644 index 00000000..0f7d282a --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py @@ -0,0 +1,3825 @@ +import warnings + +from collections import Counter, defaultdict, deque, abc +from collections.abc import Sequence +from concurrent.futures import ThreadPoolExecutor +from functools import partial, reduce, wraps +from heapq import merge, heapify, heapreplace, heappop +from itertools import ( + chain, + compress, + count, + cycle, + dropwhile, + groupby, + islice, + repeat, + starmap, + takewhile, + tee, + zip_longest, +) +from math import exp, factorial, floor, log +from queue import Empty, Queue +from random import random, randrange, uniform +from operator import itemgetter, mul, sub, gt, lt +from sys import hexversion, maxsize +from time import monotonic + +from .recipes import ( + consume, + flatten, + pairwise, + powerset, + take, + unique_everseen, +) + +__all__ = [ + 'AbortThread', + 'adjacent', + 'always_iterable', + 'always_reversible', + 'bucket', + 'callback_iter', + 'chunked', + 'circular_shifts', + 'collapse', + 'collate', + 'consecutive_groups', + 'consumer', + 'countable', + 'count_cycle', + 'mark_ends', + 'difference', + 'distinct_combinations', + 'distinct_permutations', + 'distribute', + 'divide', + 'exactly_n', + 'filter_except', + 'first', + 'groupby_transform', + 'ilen', + 'interleave_longest', + 'interleave', + 'intersperse', + 'islice_extended', + 'iterate', + 'ichunked', + 'is_sorted', + 'last', + 'locate', + 'lstrip', + 'make_decorator', + 'map_except', + 'map_reduce', + 'nth_or_last', + 'nth_permutation', + 'nth_product', + 'numeric_range', + 'one', + 'only', + 'padded', + 'partitions', + 'set_partitions', + 'peekable', + 'repeat_last', + 'replace', + 'rlocate', + 'rstrip', + 'run_length', + 'sample', + 'seekable', + 'SequenceView', + 'side_effect', + 'sliced', + 'sort_together', + 'split_at', + 'split_after', + 'split_before', + 'split_when', + 'split_into', + 'spy', + 'stagger', + 'strip', + 'substrings', + 'substrings_indexes', + 'time_limited', + 'unique_to_each', + 'unzip', + 'windowed', + 'with_iter', + 'UnequalIterablesError', + 'zip_equal', + 'zip_offset', + 'windowed_complete', + 'all_unique', + 'value_chain', + 'product_index', + 'combination_index', + 'permutation_index', +] + +_marker = object() + + +def chunked(iterable, n, strict=False): + """Break *iterable* into lists of length *n*: + + >>> list(chunked([1, 2, 3, 4, 5, 6], 3)) + [[1, 2, 3], [4, 5, 6]] + + By the default, the last yielded list will have fewer than *n* elements + if the length of *iterable* is not divisible by *n*: + + >>> list(chunked([1, 2, 3, 4, 5, 6, 7, 8], 3)) + [[1, 2, 3], [4, 5, 6], [7, 8]] + + To use a fill-in value instead, see the :func:`grouper` recipe. + + If the length of *iterable* is not divisible by *n* and *strict* is + ``True``, then ``ValueError`` will be raised before the last + list is yielded. + + """ + iterator = iter(partial(take, n, iter(iterable)), []) + if strict: + + def ret(): + for chunk in iterator: + if len(chunk) != n: + raise ValueError('iterable is not divisible by n.') + yield chunk + + return iter(ret()) + else: + return iterator + + +def first(iterable, default=_marker): + """Return the first item of *iterable*, or *default* if *iterable* is + empty. + + >>> first([0, 1, 2, 3]) + 0 + >>> first([], 'some default') + 'some default' + + If *default* is not provided and there are no items in the iterable, + raise ``ValueError``. + + :func:`first` is useful when you have a generator of expensive-to-retrieve + values and want any arbitrary one. It is marginally shorter than + ``next(iter(iterable), default)``. + + """ + try: + return next(iter(iterable)) + except StopIteration as e: + if default is _marker: + raise ValueError( + 'first() was called on an empty iterable, and no ' + 'default value was provided.' + ) from e + return default + + +def last(iterable, default=_marker): + """Return the last item of *iterable*, or *default* if *iterable* is + empty. + + >>> last([0, 1, 2, 3]) + 3 + >>> last([], 'some default') + 'some default' + + If *default* is not provided and there are no items in the iterable, + raise ``ValueError``. + """ + try: + if isinstance(iterable, Sequence): + return iterable[-1] + # Work around https://bugs.python.org/issue38525 + elif hasattr(iterable, '__reversed__') and (hexversion != 0x030800F0): + return next(reversed(iterable)) + else: + return deque(iterable, maxlen=1)[-1] + except (IndexError, TypeError, StopIteration): + if default is _marker: + raise ValueError( + 'last() was called on an empty iterable, and no default was ' + 'provided.' + ) + return default + + +def nth_or_last(iterable, n, default=_marker): + """Return the nth or the last item of *iterable*, + or *default* if *iterable* is empty. + + >>> nth_or_last([0, 1, 2, 3], 2) + 2 + >>> nth_or_last([0, 1], 2) + 1 + >>> nth_or_last([], 0, 'some default') + 'some default' + + If *default* is not provided and there are no items in the iterable, + raise ``ValueError``. + """ + return last(islice(iterable, n + 1), default=default) + + +class peekable: + """Wrap an iterator to allow lookahead and prepending elements. + + Call :meth:`peek` on the result to get the value that will be returned + by :func:`next`. This won't advance the iterator: + + >>> p = peekable(['a', 'b']) + >>> p.peek() + 'a' + >>> next(p) + 'a' + + Pass :meth:`peek` a default value to return that instead of raising + ``StopIteration`` when the iterator is exhausted. + + >>> p = peekable([]) + >>> p.peek('hi') + 'hi' + + peekables also offer a :meth:`prepend` method, which "inserts" items + at the head of the iterable: + + >>> p = peekable([1, 2, 3]) + >>> p.prepend(10, 11, 12) + >>> next(p) + 10 + >>> p.peek() + 11 + >>> list(p) + [11, 12, 1, 2, 3] + + peekables can be indexed. Index 0 is the item that will be returned by + :func:`next`, index 1 is the item after that, and so on: + The values up to the given index will be cached. + + >>> p = peekable(['a', 'b', 'c', 'd']) + >>> p[0] + 'a' + >>> p[1] + 'b' + >>> next(p) + 'a' + + Negative indexes are supported, but be aware that they will cache the + remaining items in the source iterator, which may require significant + storage. + + To check whether a peekable is exhausted, check its truth value: + + >>> p = peekable(['a', 'b']) + >>> if p: # peekable has items + ... list(p) + ['a', 'b'] + >>> if not p: # peekable is exhausted + ... list(p) + [] + + """ + + def __init__(self, iterable): + self._it = iter(iterable) + self._cache = deque() + + def __iter__(self): + return self + + def __bool__(self): + try: + self.peek() + except StopIteration: + return False + return True + + def peek(self, default=_marker): + """Return the item that will be next returned from ``next()``. + + Return ``default`` if there are no items left. If ``default`` is not + provided, raise ``StopIteration``. + + """ + if not self._cache: + try: + self._cache.append(next(self._it)) + except StopIteration: + if default is _marker: + raise + return default + return self._cache[0] + + def prepend(self, *items): + """Stack up items to be the next ones returned from ``next()`` or + ``self.peek()``. The items will be returned in + first in, first out order:: + + >>> p = peekable([1, 2, 3]) + >>> p.prepend(10, 11, 12) + >>> next(p) + 10 + >>> list(p) + [11, 12, 1, 2, 3] + + It is possible, by prepending items, to "resurrect" a peekable that + previously raised ``StopIteration``. + + >>> p = peekable([]) + >>> next(p) + Traceback (most recent call last): + ... + StopIteration + >>> p.prepend(1) + >>> next(p) + 1 + >>> next(p) + Traceback (most recent call last): + ... + StopIteration + + """ + self._cache.extendleft(reversed(items)) + + def __next__(self): + if self._cache: + return self._cache.popleft() + + return next(self._it) + + def _get_slice(self, index): + # Normalize the slice's arguments + step = 1 if (index.step is None) else index.step + if step > 0: + start = 0 if (index.start is None) else index.start + stop = maxsize if (index.stop is None) else index.stop + elif step < 0: + start = -1 if (index.start is None) else index.start + stop = (-maxsize - 1) if (index.stop is None) else index.stop + else: + raise ValueError('slice step cannot be zero') + + # If either the start or stop index is negative, we'll need to cache + # the rest of the iterable in order to slice from the right side. + if (start < 0) or (stop < 0): + self._cache.extend(self._it) + # Otherwise we'll need to find the rightmost index and cache to that + # point. + else: + n = min(max(start, stop) + 1, maxsize) + cache_len = len(self._cache) + if n >= cache_len: + self._cache.extend(islice(self._it, n - cache_len)) + + return list(self._cache)[index] + + def __getitem__(self, index): + if isinstance(index, slice): + return self._get_slice(index) + + cache_len = len(self._cache) + if index < 0: + self._cache.extend(self._it) + elif index >= cache_len: + self._cache.extend(islice(self._it, index + 1 - cache_len)) + + return self._cache[index] + + +def collate(*iterables, **kwargs): + """Return a sorted merge of the items from each of several already-sorted + *iterables*. + + >>> list(collate('ACDZ', 'AZ', 'JKL')) + ['A', 'A', 'C', 'D', 'J', 'K', 'L', 'Z', 'Z'] + + Works lazily, keeping only the next value from each iterable in memory. Use + :func:`collate` to, for example, perform a n-way mergesort of items that + don't fit in memory. + + If a *key* function is specified, the iterables will be sorted according + to its result: + + >>> key = lambda s: int(s) # Sort by numeric value, not by string + >>> list(collate(['1', '10'], ['2', '11'], key=key)) + ['1', '2', '10', '11'] + + + If the *iterables* are sorted in descending order, set *reverse* to + ``True``: + + >>> list(collate([5, 3, 1], [4, 2, 0], reverse=True)) + [5, 4, 3, 2, 1, 0] + + If the elements of the passed-in iterables are out of order, you might get + unexpected results. + + On Python 3.5+, this function is an alias for :func:`heapq.merge`. + + """ + warnings.warn( + "collate is no longer part of more_itertools, use heapq.merge", + DeprecationWarning, + ) + return merge(*iterables, **kwargs) + + +def consumer(func): + """Decorator that automatically advances a PEP-342-style "reverse iterator" + to its first yield point so you don't have to call ``next()`` on it + manually. + + >>> @consumer + ... def tally(): + ... i = 0 + ... while True: + ... print('Thing number %s is %s.' % (i, (yield))) + ... i += 1 + ... + >>> t = tally() + >>> t.send('red') + Thing number 0 is red. + >>> t.send('fish') + Thing number 1 is fish. + + Without the decorator, you would have to call ``next(t)`` before + ``t.send()`` could be used. + + """ + + @wraps(func) + def wrapper(*args, **kwargs): + gen = func(*args, **kwargs) + next(gen) + return gen + + return wrapper + + +def ilen(iterable): + """Return the number of items in *iterable*. + + >>> ilen(x for x in range(1000000) if x % 3 == 0) + 333334 + + This consumes the iterable, so handle with care. + + """ + # This approach was selected because benchmarks showed it's likely the + # fastest of the known implementations at the time of writing. + # See GitHub tracker: #236, #230. + counter = count() + deque(zip(iterable, counter), maxlen=0) + return next(counter) + + +def iterate(func, start): + """Return ``start``, ``func(start)``, ``func(func(start))``, ... + + >>> from itertools import islice + >>> list(islice(iterate(lambda x: 2*x, 1), 10)) + [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] + + """ + while True: + yield start + start = func(start) + + +def with_iter(context_manager): + """Wrap an iterable in a ``with`` statement, so it closes once exhausted. + + For example, this will close the file when the iterator is exhausted:: + + upper_lines = (line.upper() for line in with_iter(open('foo'))) + + Any context manager which returns an iterable is a candidate for + ``with_iter``. + + """ + with context_manager as iterable: + yield from iterable + + +def one(iterable, too_short=None, too_long=None): + """Return the first item from *iterable*, which is expected to contain only + that item. Raise an exception if *iterable* is empty or has more than one + item. + + :func:`one` is useful for ensuring that an iterable contains only one item. + For example, it can be used to retrieve the result of a database query + that is expected to return a single row. + + If *iterable* is empty, ``ValueError`` will be raised. You may specify a + different exception with the *too_short* keyword: + + >>> it = [] + >>> one(it) # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + ValueError: too many items in iterable (expected 1)' + >>> too_short = IndexError('too few items') + >>> one(it, too_short=too_short) # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + IndexError: too few items + + Similarly, if *iterable* contains more than one item, ``ValueError`` will + be raised. You may specify a different exception with the *too_long* + keyword: + + >>> it = ['too', 'many'] + >>> one(it) # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + ValueError: Expected exactly one item in iterable, but got 'too', + 'many', and perhaps more. + >>> too_long = RuntimeError + >>> one(it, too_long=too_long) # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + RuntimeError + + Note that :func:`one` attempts to advance *iterable* twice to ensure there + is only one item. See :func:`spy` or :func:`peekable` to check iterable + contents less destructively. + + """ + it = iter(iterable) + + try: + first_value = next(it) + except StopIteration as e: + raise ( + too_short or ValueError('too few items in iterable (expected 1)') + ) from e + + try: + second_value = next(it) + except StopIteration: + pass + else: + msg = ( + 'Expected exactly one item in iterable, but got {!r}, {!r}, ' + 'and perhaps more.'.format(first_value, second_value) + ) + raise too_long or ValueError(msg) + + return first_value + + +def distinct_permutations(iterable, r=None): + """Yield successive distinct permutations of the elements in *iterable*. + + >>> sorted(distinct_permutations([1, 0, 1])) + [(0, 1, 1), (1, 0, 1), (1, 1, 0)] + + Equivalent to ``set(permutations(iterable))``, except duplicates are not + generated and thrown away. For larger input sequences this is much more + efficient. + + Duplicate permutations arise when there are duplicated elements in the + input iterable. The number of items returned is + `n! / (x_1! * x_2! * ... * x_n!)`, where `n` is the total number of + items input, and each `x_i` is the count of a distinct item in the input + sequence. + + If *r* is given, only the *r*-length permutations are yielded. + + >>> sorted(distinct_permutations([1, 0, 1], r=2)) + [(0, 1), (1, 0), (1, 1)] + >>> sorted(distinct_permutations(range(3), r=2)) + [(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)] + + """ + # Algorithm: https://w.wiki/Qai + def _full(A): + while True: + # Yield the permutation we have + yield tuple(A) + + # Find the largest index i such that A[i] < A[i + 1] + for i in range(size - 2, -1, -1): + if A[i] < A[i + 1]: + break + # If no such index exists, this permutation is the last one + else: + return + + # Find the largest index j greater than j such that A[i] < A[j] + for j in range(size - 1, i, -1): + if A[i] < A[j]: + break + + # Swap the value of A[i] with that of A[j], then reverse the + # sequence from A[i + 1] to form the new permutation + A[i], A[j] = A[j], A[i] + A[i + 1 :] = A[: i - size : -1] # A[i + 1:][::-1] + + # Algorithm: modified from the above + def _partial(A, r): + # Split A into the first r items and the last r items + head, tail = A[:r], A[r:] + right_head_indexes = range(r - 1, -1, -1) + left_tail_indexes = range(len(tail)) + + while True: + # Yield the permutation we have + yield tuple(head) + + # Starting from the right, find the first index of the head with + # value smaller than the maximum value of the tail - call it i. + pivot = tail[-1] + for i in right_head_indexes: + if head[i] < pivot: + break + pivot = head[i] + else: + return + + # Starting from the left, find the first value of the tail + # with a value greater than head[i] and swap. + for j in left_tail_indexes: + if tail[j] > head[i]: + head[i], tail[j] = tail[j], head[i] + break + # If we didn't find one, start from the right and find the first + # index of the head with a value greater than head[i] and swap. + else: + for j in right_head_indexes: + if head[j] > head[i]: + head[i], head[j] = head[j], head[i] + break + + # Reverse head[i + 1:] and swap it with tail[:r - (i + 1)] + tail += head[: i - r : -1] # head[i + 1:][::-1] + i += 1 + head[i:], tail[:] = tail[: r - i], tail[r - i :] + + items = sorted(iterable) + + size = len(items) + if r is None: + r = size + + if 0 < r <= size: + return _full(items) if (r == size) else _partial(items, r) + + return iter(() if r else ((),)) + + +def intersperse(e, iterable, n=1): + """Intersperse filler element *e* among the items in *iterable*, leaving + *n* items between each filler element. + + >>> list(intersperse('!', [1, 2, 3, 4, 5])) + [1, '!', 2, '!', 3, '!', 4, '!', 5] + + >>> list(intersperse(None, [1, 2, 3, 4, 5], n=2)) + [1, 2, None, 3, 4, None, 5] + + """ + if n == 0: + raise ValueError('n must be > 0') + elif n == 1: + # interleave(repeat(e), iterable) -> e, x_0, e, e, x_1, e, x_2... + # islice(..., 1, None) -> x_0, e, e, x_1, e, x_2... + return islice(interleave(repeat(e), iterable), 1, None) + else: + # interleave(filler, chunks) -> [e], [x_0, x_1], [e], [x_2, x_3]... + # islice(..., 1, None) -> [x_0, x_1], [e], [x_2, x_3]... + # flatten(...) -> x_0, x_1, e, x_2, x_3... + filler = repeat([e]) + chunks = chunked(iterable, n) + return flatten(islice(interleave(filler, chunks), 1, None)) + + +def unique_to_each(*iterables): + """Return the elements from each of the input iterables that aren't in the + other input iterables. + + For example, suppose you have a set of packages, each with a set of + dependencies:: + + {'pkg_1': {'A', 'B'}, 'pkg_2': {'B', 'C'}, 'pkg_3': {'B', 'D'}} + + If you remove one package, which dependencies can also be removed? + + If ``pkg_1`` is removed, then ``A`` is no longer necessary - it is not + associated with ``pkg_2`` or ``pkg_3``. Similarly, ``C`` is only needed for + ``pkg_2``, and ``D`` is only needed for ``pkg_3``:: + + >>> unique_to_each({'A', 'B'}, {'B', 'C'}, {'B', 'D'}) + [['A'], ['C'], ['D']] + + If there are duplicates in one input iterable that aren't in the others + they will be duplicated in the output. Input order is preserved:: + + >>> unique_to_each("mississippi", "missouri") + [['p', 'p'], ['o', 'u', 'r']] + + It is assumed that the elements of each iterable are hashable. + + """ + pool = [list(it) for it in iterables] + counts = Counter(chain.from_iterable(map(set, pool))) + uniques = {element for element in counts if counts[element] == 1} + return [list(filter(uniques.__contains__, it)) for it in pool] + + +def windowed(seq, n, fillvalue=None, step=1): + """Return a sliding window of width *n* over the given iterable. + + >>> all_windows = windowed([1, 2, 3, 4, 5], 3) + >>> list(all_windows) + [(1, 2, 3), (2, 3, 4), (3, 4, 5)] + + When the window is larger than the iterable, *fillvalue* is used in place + of missing values: + + >>> list(windowed([1, 2, 3], 4)) + [(1, 2, 3, None)] + + Each window will advance in increments of *step*: + + >>> list(windowed([1, 2, 3, 4, 5, 6], 3, fillvalue='!', step=2)) + [(1, 2, 3), (3, 4, 5), (5, 6, '!')] + + To slide into the iterable's items, use :func:`chain` to add filler items + to the left: + + >>> iterable = [1, 2, 3, 4] + >>> n = 3 + >>> padding = [None] * (n - 1) + >>> list(windowed(chain(padding, iterable), 3)) + [(None, None, 1), (None, 1, 2), (1, 2, 3), (2, 3, 4)] + """ + if n < 0: + raise ValueError('n must be >= 0') + if n == 0: + yield tuple() + return + if step < 1: + raise ValueError('step must be >= 1') + + window = deque(maxlen=n) + i = n + for _ in map(window.append, seq): + i -= 1 + if not i: + i = step + yield tuple(window) + + size = len(window) + if size < n: + yield tuple(chain(window, repeat(fillvalue, n - size))) + elif 0 < i < min(step, n): + window += (fillvalue,) * i + yield tuple(window) + + +def substrings(iterable): + """Yield all of the substrings of *iterable*. + + >>> [''.join(s) for s in substrings('more')] + ['m', 'o', 'r', 'e', 'mo', 'or', 're', 'mor', 'ore', 'more'] + + Note that non-string iterables can also be subdivided. + + >>> list(substrings([0, 1, 2])) + [(0,), (1,), (2,), (0, 1), (1, 2), (0, 1, 2)] + + """ + # The length-1 substrings + seq = [] + for item in iter(iterable): + seq.append(item) + yield (item,) + seq = tuple(seq) + item_count = len(seq) + + # And the rest + for n in range(2, item_count + 1): + for i in range(item_count - n + 1): + yield seq[i : i + n] + + +def substrings_indexes(seq, reverse=False): + """Yield all substrings and their positions in *seq* + + The items yielded will be a tuple of the form ``(substr, i, j)``, where + ``substr == seq[i:j]``. + + This function only works for iterables that support slicing, such as + ``str`` objects. + + >>> for item in substrings_indexes('more'): + ... print(item) + ('m', 0, 1) + ('o', 1, 2) + ('r', 2, 3) + ('e', 3, 4) + ('mo', 0, 2) + ('or', 1, 3) + ('re', 2, 4) + ('mor', 0, 3) + ('ore', 1, 4) + ('more', 0, 4) + + Set *reverse* to ``True`` to yield the same items in the opposite order. + + + """ + r = range(1, len(seq) + 1) + if reverse: + r = reversed(r) + return ( + (seq[i : i + L], i, i + L) for L in r for i in range(len(seq) - L + 1) + ) + + +class bucket: + """Wrap *iterable* and return an object that buckets it iterable into + child iterables based on a *key* function. + + >>> iterable = ['a1', 'b1', 'c1', 'a2', 'b2', 'c2', 'b3'] + >>> s = bucket(iterable, key=lambda x: x[0]) # Bucket by 1st character + >>> sorted(list(s)) # Get the keys + ['a', 'b', 'c'] + >>> a_iterable = s['a'] + >>> next(a_iterable) + 'a1' + >>> next(a_iterable) + 'a2' + >>> list(s['b']) + ['b1', 'b2', 'b3'] + + The original iterable will be advanced and its items will be cached until + they are used by the child iterables. This may require significant storage. + + By default, attempting to select a bucket to which no items belong will + exhaust the iterable and cache all values. + If you specify a *validator* function, selected buckets will instead be + checked against it. + + >>> from itertools import count + >>> it = count(1, 2) # Infinite sequence of odd numbers + >>> key = lambda x: x % 10 # Bucket by last digit + >>> validator = lambda x: x in {1, 3, 5, 7, 9} # Odd digits only + >>> s = bucket(it, key=key, validator=validator) + >>> 2 in s + False + >>> list(s[2]) + [] + + """ + + def __init__(self, iterable, key, validator=None): + self._it = iter(iterable) + self._key = key + self._cache = defaultdict(deque) + self._validator = validator or (lambda x: True) + + def __contains__(self, value): + if not self._validator(value): + return False + + try: + item = next(self[value]) + except StopIteration: + return False + else: + self._cache[value].appendleft(item) + + return True + + def _get_values(self, value): + """ + Helper to yield items from the parent iterator that match *value*. + Items that don't match are stored in the local cache as they + are encountered. + """ + while True: + # If we've cached some items that match the target value, emit + # the first one and evict it from the cache. + if self._cache[value]: + yield self._cache[value].popleft() + # Otherwise we need to advance the parent iterator to search for + # a matching item, caching the rest. + else: + while True: + try: + item = next(self._it) + except StopIteration: + return + item_value = self._key(item) + if item_value == value: + yield item + break + elif self._validator(item_value): + self._cache[item_value].append(item) + + def __iter__(self): + for item in self._it: + item_value = self._key(item) + if self._validator(item_value): + self._cache[item_value].append(item) + + yield from self._cache.keys() + + def __getitem__(self, value): + if not self._validator(value): + return iter(()) + + return self._get_values(value) + + +def spy(iterable, n=1): + """Return a 2-tuple with a list containing the first *n* elements of + *iterable*, and an iterator with the same items as *iterable*. + This allows you to "look ahead" at the items in the iterable without + advancing it. + + There is one item in the list by default: + + >>> iterable = 'abcdefg' + >>> head, iterable = spy(iterable) + >>> head + ['a'] + >>> list(iterable) + ['a', 'b', 'c', 'd', 'e', 'f', 'g'] + + You may use unpacking to retrieve items instead of lists: + + >>> (head,), iterable = spy('abcdefg') + >>> head + 'a' + >>> (first, second), iterable = spy('abcdefg', 2) + >>> first + 'a' + >>> second + 'b' + + The number of items requested can be larger than the number of items in + the iterable: + + >>> iterable = [1, 2, 3, 4, 5] + >>> head, iterable = spy(iterable, 10) + >>> head + [1, 2, 3, 4, 5] + >>> list(iterable) + [1, 2, 3, 4, 5] + + """ + it = iter(iterable) + head = take(n, it) + + return head.copy(), chain(head, it) + + +def interleave(*iterables): + """Return a new iterable yielding from each iterable in turn, + until the shortest is exhausted. + + >>> list(interleave([1, 2, 3], [4, 5], [6, 7, 8])) + [1, 4, 6, 2, 5, 7] + + For a version that doesn't terminate after the shortest iterable is + exhausted, see :func:`interleave_longest`. + + """ + return chain.from_iterable(zip(*iterables)) + + +def interleave_longest(*iterables): + """Return a new iterable yielding from each iterable in turn, + skipping any that are exhausted. + + >>> list(interleave_longest([1, 2, 3], [4, 5], [6, 7, 8])) + [1, 4, 6, 2, 5, 7, 3, 8] + + This function produces the same output as :func:`roundrobin`, but may + perform better for some inputs (in particular when the number of iterables + is large). + + """ + i = chain.from_iterable(zip_longest(*iterables, fillvalue=_marker)) + return (x for x in i if x is not _marker) + + +def collapse(iterable, base_type=None, levels=None): + """Flatten an iterable with multiple levels of nesting (e.g., a list of + lists of tuples) into non-iterable types. + + >>> iterable = [(1, 2), ([3, 4], [[5], [6]])] + >>> list(collapse(iterable)) + [1, 2, 3, 4, 5, 6] + + Binary and text strings are not considered iterable and + will not be collapsed. + + To avoid collapsing other types, specify *base_type*: + + >>> iterable = ['ab', ('cd', 'ef'), ['gh', 'ij']] + >>> list(collapse(iterable, base_type=tuple)) + ['ab', ('cd', 'ef'), 'gh', 'ij'] + + Specify *levels* to stop flattening after a certain level: + + >>> iterable = [('a', ['b']), ('c', ['d'])] + >>> list(collapse(iterable)) # Fully flattened + ['a', 'b', 'c', 'd'] + >>> list(collapse(iterable, levels=1)) # Only one level flattened + ['a', ['b'], 'c', ['d']] + + """ + + def walk(node, level): + if ( + ((levels is not None) and (level > levels)) + or isinstance(node, (str, bytes)) + or ((base_type is not None) and isinstance(node, base_type)) + ): + yield node + return + + try: + tree = iter(node) + except TypeError: + yield node + return + else: + for child in tree: + yield from walk(child, level + 1) + + yield from walk(iterable, 0) + + +def side_effect(func, iterable, chunk_size=None, before=None, after=None): + """Invoke *func* on each item in *iterable* (or on each *chunk_size* group + of items) before yielding the item. + + `func` must be a function that takes a single argument. Its return value + will be discarded. + + *before* and *after* are optional functions that take no arguments. They + will be executed before iteration starts and after it ends, respectively. + + `side_effect` can be used for logging, updating progress bars, or anything + that is not functionally "pure." + + Emitting a status message: + + >>> from more_itertools import consume + >>> func = lambda item: print('Received {}'.format(item)) + >>> consume(side_effect(func, range(2))) + Received 0 + Received 1 + + Operating on chunks of items: + + >>> pair_sums = [] + >>> func = lambda chunk: pair_sums.append(sum(chunk)) + >>> list(side_effect(func, [0, 1, 2, 3, 4, 5], 2)) + [0, 1, 2, 3, 4, 5] + >>> list(pair_sums) + [1, 5, 9] + + Writing to a file-like object: + + >>> from io import StringIO + >>> from more_itertools import consume + >>> f = StringIO() + >>> func = lambda x: print(x, file=f) + >>> before = lambda: print(u'HEADER', file=f) + >>> after = f.close + >>> it = [u'a', u'b', u'c'] + >>> consume(side_effect(func, it, before=before, after=after)) + >>> f.closed + True + + """ + try: + if before is not None: + before() + + if chunk_size is None: + for item in iterable: + func(item) + yield item + else: + for chunk in chunked(iterable, chunk_size): + func(chunk) + yield from chunk + finally: + if after is not None: + after() + + +def sliced(seq, n, strict=False): + """Yield slices of length *n* from the sequence *seq*. + + >>> list(sliced((1, 2, 3, 4, 5, 6), 3)) + [(1, 2, 3), (4, 5, 6)] + + By the default, the last yielded slice will have fewer than *n* elements + if the length of *seq* is not divisible by *n*: + + >>> list(sliced((1, 2, 3, 4, 5, 6, 7, 8), 3)) + [(1, 2, 3), (4, 5, 6), (7, 8)] + + If the length of *seq* is not divisible by *n* and *strict* is + ``True``, then ``ValueError`` will be raised before the last + slice is yielded. + + This function will only work for iterables that support slicing. + For non-sliceable iterables, see :func:`chunked`. + + """ + iterator = takewhile(len, (seq[i : i + n] for i in count(0, n))) + if strict: + + def ret(): + for _slice in iterator: + if len(_slice) != n: + raise ValueError("seq is not divisible by n.") + yield _slice + + return iter(ret()) + else: + return iterator + + +def split_at(iterable, pred, maxsplit=-1, keep_separator=False): + """Yield lists of items from *iterable*, where each list is delimited by + an item where callable *pred* returns ``True``. + + >>> list(split_at('abcdcba', lambda x: x == 'b')) + [['a'], ['c', 'd', 'c'], ['a']] + + >>> list(split_at(range(10), lambda n: n % 2 == 1)) + [[0], [2], [4], [6], [8], []] + + At most *maxsplit* splits are done. If *maxsplit* is not specified or -1, + then there is no limit on the number of splits: + + >>> list(split_at(range(10), lambda n: n % 2 == 1, maxsplit=2)) + [[0], [2], [4, 5, 6, 7, 8, 9]] + + By default, the delimiting items are not included in the output. + The include them, set *keep_separator* to ``True``. + + >>> list(split_at('abcdcba', lambda x: x == 'b', keep_separator=True)) + [['a'], ['b'], ['c', 'd', 'c'], ['b'], ['a']] + + """ + if maxsplit == 0: + yield list(iterable) + return + + buf = [] + it = iter(iterable) + for item in it: + if pred(item): + yield buf + if keep_separator: + yield [item] + if maxsplit == 1: + yield list(it) + return + buf = [] + maxsplit -= 1 + else: + buf.append(item) + yield buf + + +def split_before(iterable, pred, maxsplit=-1): + """Yield lists of items from *iterable*, where each list ends just before + an item for which callable *pred* returns ``True``: + + >>> list(split_before('OneTwo', lambda s: s.isupper())) + [['O', 'n', 'e'], ['T', 'w', 'o']] + + >>> list(split_before(range(10), lambda n: n % 3 == 0)) + [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] + + At most *maxsplit* splits are done. If *maxsplit* is not specified or -1, + then there is no limit on the number of splits: + + >>> list(split_before(range(10), lambda n: n % 3 == 0, maxsplit=2)) + [[0, 1, 2], [3, 4, 5], [6, 7, 8, 9]] + """ + if maxsplit == 0: + yield list(iterable) + return + + buf = [] + it = iter(iterable) + for item in it: + if pred(item) and buf: + yield buf + if maxsplit == 1: + yield [item] + list(it) + return + buf = [] + maxsplit -= 1 + buf.append(item) + if buf: + yield buf + + +def split_after(iterable, pred, maxsplit=-1): + """Yield lists of items from *iterable*, where each list ends with an + item where callable *pred* returns ``True``: + + >>> list(split_after('one1two2', lambda s: s.isdigit())) + [['o', 'n', 'e', '1'], ['t', 'w', 'o', '2']] + + >>> list(split_after(range(10), lambda n: n % 3 == 0)) + [[0], [1, 2, 3], [4, 5, 6], [7, 8, 9]] + + At most *maxsplit* splits are done. If *maxsplit* is not specified or -1, + then there is no limit on the number of splits: + + >>> list(split_after(range(10), lambda n: n % 3 == 0, maxsplit=2)) + [[0], [1, 2, 3], [4, 5, 6, 7, 8, 9]] + + """ + if maxsplit == 0: + yield list(iterable) + return + + buf = [] + it = iter(iterable) + for item in it: + buf.append(item) + if pred(item) and buf: + yield buf + if maxsplit == 1: + yield list(it) + return + buf = [] + maxsplit -= 1 + if buf: + yield buf + + +def split_when(iterable, pred, maxsplit=-1): + """Split *iterable* into pieces based on the output of *pred*. + *pred* should be a function that takes successive pairs of items and + returns ``True`` if the iterable should be split in between them. + + For example, to find runs of increasing numbers, split the iterable when + element ``i`` is larger than element ``i + 1``: + + >>> list(split_when([1, 2, 3, 3, 2, 5, 2, 4, 2], lambda x, y: x > y)) + [[1, 2, 3, 3], [2, 5], [2, 4], [2]] + + At most *maxsplit* splits are done. If *maxsplit* is not specified or -1, + then there is no limit on the number of splits: + + >>> list(split_when([1, 2, 3, 3, 2, 5, 2, 4, 2], + ... lambda x, y: x > y, maxsplit=2)) + [[1, 2, 3, 3], [2, 5], [2, 4, 2]] + + """ + if maxsplit == 0: + yield list(iterable) + return + + it = iter(iterable) + try: + cur_item = next(it) + except StopIteration: + return + + buf = [cur_item] + for next_item in it: + if pred(cur_item, next_item): + yield buf + if maxsplit == 1: + yield [next_item] + list(it) + return + buf = [] + maxsplit -= 1 + + buf.append(next_item) + cur_item = next_item + + yield buf + + +def split_into(iterable, sizes): + """Yield a list of sequential items from *iterable* of length 'n' for each + integer 'n' in *sizes*. + + >>> list(split_into([1,2,3,4,5,6], [1,2,3])) + [[1], [2, 3], [4, 5, 6]] + + If the sum of *sizes* is smaller than the length of *iterable*, then the + remaining items of *iterable* will not be returned. + + >>> list(split_into([1,2,3,4,5,6], [2,3])) + [[1, 2], [3, 4, 5]] + + If the sum of *sizes* is larger than the length of *iterable*, fewer items + will be returned in the iteration that overruns *iterable* and further + lists will be empty: + + >>> list(split_into([1,2,3,4], [1,2,3,4])) + [[1], [2, 3], [4], []] + + When a ``None`` object is encountered in *sizes*, the returned list will + contain items up to the end of *iterable* the same way that itertools.slice + does: + + >>> list(split_into([1,2,3,4,5,6,7,8,9,0], [2,3,None])) + [[1, 2], [3, 4, 5], [6, 7, 8, 9, 0]] + + :func:`split_into` can be useful for grouping a series of items where the + sizes of the groups are not uniform. An example would be where in a row + from a table, multiple columns represent elements of the same feature + (e.g. a point represented by x,y,z) but, the format is not the same for + all columns. + """ + # convert the iterable argument into an iterator so its contents can + # be consumed by islice in case it is a generator + it = iter(iterable) + + for size in sizes: + if size is None: + yield list(it) + return + else: + yield list(islice(it, size)) + + +def padded(iterable, fillvalue=None, n=None, next_multiple=False): + """Yield the elements from *iterable*, followed by *fillvalue*, such that + at least *n* items are emitted. + + >>> list(padded([1, 2, 3], '?', 5)) + [1, 2, 3, '?', '?'] + + If *next_multiple* is ``True``, *fillvalue* will be emitted until the + number of items emitted is a multiple of *n*:: + + >>> list(padded([1, 2, 3, 4], n=3, next_multiple=True)) + [1, 2, 3, 4, None, None] + + If *n* is ``None``, *fillvalue* will be emitted indefinitely. + + """ + it = iter(iterable) + if n is None: + yield from chain(it, repeat(fillvalue)) + elif n < 1: + raise ValueError('n must be at least 1') + else: + item_count = 0 + for item in it: + yield item + item_count += 1 + + remaining = (n - item_count) % n if next_multiple else n - item_count + for _ in range(remaining): + yield fillvalue + + +def repeat_last(iterable, default=None): + """After the *iterable* is exhausted, keep yielding its last element. + + >>> list(islice(repeat_last(range(3)), 5)) + [0, 1, 2, 2, 2] + + If the iterable is empty, yield *default* forever:: + + >>> list(islice(repeat_last(range(0), 42), 5)) + [42, 42, 42, 42, 42] + + """ + item = _marker + for item in iterable: + yield item + final = default if item is _marker else item + yield from repeat(final) + + +def distribute(n, iterable): + """Distribute the items from *iterable* among *n* smaller iterables. + + >>> group_1, group_2 = distribute(2, [1, 2, 3, 4, 5, 6]) + >>> list(group_1) + [1, 3, 5] + >>> list(group_2) + [2, 4, 6] + + If the length of *iterable* is not evenly divisible by *n*, then the + length of the returned iterables will not be identical: + + >>> children = distribute(3, [1, 2, 3, 4, 5, 6, 7]) + >>> [list(c) for c in children] + [[1, 4, 7], [2, 5], [3, 6]] + + If the length of *iterable* is smaller than *n*, then the last returned + iterables will be empty: + + >>> children = distribute(5, [1, 2, 3]) + >>> [list(c) for c in children] + [[1], [2], [3], [], []] + + This function uses :func:`itertools.tee` and may require significant + storage. If you need the order items in the smaller iterables to match the + original iterable, see :func:`divide`. + + """ + if n < 1: + raise ValueError('n must be at least 1') + + children = tee(iterable, n) + return [islice(it, index, None, n) for index, it in enumerate(children)] + + +def stagger(iterable, offsets=(-1, 0, 1), longest=False, fillvalue=None): + """Yield tuples whose elements are offset from *iterable*. + The amount by which the `i`-th item in each tuple is offset is given by + the `i`-th item in *offsets*. + + >>> list(stagger([0, 1, 2, 3])) + [(None, 0, 1), (0, 1, 2), (1, 2, 3)] + >>> list(stagger(range(8), offsets=(0, 2, 4))) + [(0, 2, 4), (1, 3, 5), (2, 4, 6), (3, 5, 7)] + + By default, the sequence will end when the final element of a tuple is the + last item in the iterable. To continue until the first element of a tuple + is the last item in the iterable, set *longest* to ``True``:: + + >>> list(stagger([0, 1, 2, 3], longest=True)) + [(None, 0, 1), (0, 1, 2), (1, 2, 3), (2, 3, None), (3, None, None)] + + By default, ``None`` will be used to replace offsets beyond the end of the + sequence. Specify *fillvalue* to use some other value. + + """ + children = tee(iterable, len(offsets)) + + return zip_offset( + *children, offsets=offsets, longest=longest, fillvalue=fillvalue + ) + + +class UnequalIterablesError(ValueError): + def __init__(self, details=None): + msg = 'Iterables have different lengths' + if details is not None: + msg += (': index 0 has length {}; index {} has length {}').format( + *details + ) + + super().__init__(msg) + + +def _zip_equal_generator(iterables): + for combo in zip_longest(*iterables, fillvalue=_marker): + for val in combo: + if val is _marker: + raise UnequalIterablesError() + yield combo + + +def zip_equal(*iterables): + """``zip`` the input *iterables* together, but raise + ``UnequalIterablesError`` if they aren't all the same length. + + >>> it_1 = range(3) + >>> it_2 = iter('abc') + >>> list(zip_equal(it_1, it_2)) + [(0, 'a'), (1, 'b'), (2, 'c')] + + >>> it_1 = range(3) + >>> it_2 = iter('abcd') + >>> list(zip_equal(it_1, it_2)) # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + more_itertools.more.UnequalIterablesError: Iterables have different + lengths + + """ + if hexversion >= 0x30A00A6: + warnings.warn( + ( + 'zip_equal will be removed in a future version of ' + 'more-itertools. Use the builtin zip function with ' + 'strict=True instead.' + ), + DeprecationWarning, + ) + # Check whether the iterables are all the same size. + try: + first_size = len(iterables[0]) + for i, it in enumerate(iterables[1:], 1): + size = len(it) + if size != first_size: + break + else: + # If we didn't break out, we can use the built-in zip. + return zip(*iterables) + + # If we did break out, there was a mismatch. + raise UnequalIterablesError(details=(first_size, i, size)) + # If any one of the iterables didn't have a length, start reading + # them until one runs out. + except TypeError: + return _zip_equal_generator(iterables) + + +def zip_offset(*iterables, offsets, longest=False, fillvalue=None): + """``zip`` the input *iterables* together, but offset the `i`-th iterable + by the `i`-th item in *offsets*. + + >>> list(zip_offset('0123', 'abcdef', offsets=(0, 1))) + [('0', 'b'), ('1', 'c'), ('2', 'd'), ('3', 'e')] + + This can be used as a lightweight alternative to SciPy or pandas to analyze + data sets in which some series have a lead or lag relationship. + + By default, the sequence will end when the shortest iterable is exhausted. + To continue until the longest iterable is exhausted, set *longest* to + ``True``. + + >>> list(zip_offset('0123', 'abcdef', offsets=(0, 1), longest=True)) + [('0', 'b'), ('1', 'c'), ('2', 'd'), ('3', 'e'), (None, 'f')] + + By default, ``None`` will be used to replace offsets beyond the end of the + sequence. Specify *fillvalue* to use some other value. + + """ + if len(iterables) != len(offsets): + raise ValueError("Number of iterables and offsets didn't match") + + staggered = [] + for it, n in zip(iterables, offsets): + if n < 0: + staggered.append(chain(repeat(fillvalue, -n), it)) + elif n > 0: + staggered.append(islice(it, n, None)) + else: + staggered.append(it) + + if longest: + return zip_longest(*staggered, fillvalue=fillvalue) + + return zip(*staggered) + + +def sort_together(iterables, key_list=(0,), key=None, reverse=False): + """Return the input iterables sorted together, with *key_list* as the + priority for sorting. All iterables are trimmed to the length of the + shortest one. + + This can be used like the sorting function in a spreadsheet. If each + iterable represents a column of data, the key list determines which + columns are used for sorting. + + By default, all iterables are sorted using the ``0``-th iterable:: + + >>> iterables = [(4, 3, 2, 1), ('a', 'b', 'c', 'd')] + >>> sort_together(iterables) + [(1, 2, 3, 4), ('d', 'c', 'b', 'a')] + + Set a different key list to sort according to another iterable. + Specifying multiple keys dictates how ties are broken:: + + >>> iterables = [(3, 1, 2), (0, 1, 0), ('c', 'b', 'a')] + >>> sort_together(iterables, key_list=(1, 2)) + [(2, 3, 1), (0, 0, 1), ('a', 'c', 'b')] + + To sort by a function of the elements of the iterable, pass a *key* + function. Its arguments are the elements of the iterables corresponding to + the key list:: + + >>> names = ('a', 'b', 'c') + >>> lengths = (1, 2, 3) + >>> widths = (5, 2, 1) + >>> def area(length, width): + ... return length * width + >>> sort_together([names, lengths, widths], key_list=(1, 2), key=area) + [('c', 'b', 'a'), (3, 2, 1), (1, 2, 5)] + + Set *reverse* to ``True`` to sort in descending order. + + >>> sort_together([(1, 2, 3), ('c', 'b', 'a')], reverse=True) + [(3, 2, 1), ('a', 'b', 'c')] + + """ + if key is None: + # if there is no key function, the key argument to sorted is an + # itemgetter + key_argument = itemgetter(*key_list) + else: + # if there is a key function, call it with the items at the offsets + # specified by the key function as arguments + key_list = list(key_list) + if len(key_list) == 1: + # if key_list contains a single item, pass the item at that offset + # as the only argument to the key function + key_offset = key_list[0] + key_argument = lambda zipped_items: key(zipped_items[key_offset]) + else: + # if key_list contains multiple items, use itemgetter to return a + # tuple of items, which we pass as *args to the key function + get_key_items = itemgetter(*key_list) + key_argument = lambda zipped_items: key( + *get_key_items(zipped_items) + ) + + return list( + zip(*sorted(zip(*iterables), key=key_argument, reverse=reverse)) + ) + + +def unzip(iterable): + """The inverse of :func:`zip`, this function disaggregates the elements + of the zipped *iterable*. + + The ``i``-th iterable contains the ``i``-th element from each element + of the zipped iterable. The first element is used to to determine the + length of the remaining elements. + + >>> iterable = [('a', 1), ('b', 2), ('c', 3), ('d', 4)] + >>> letters, numbers = unzip(iterable) + >>> list(letters) + ['a', 'b', 'c', 'd'] + >>> list(numbers) + [1, 2, 3, 4] + + This is similar to using ``zip(*iterable)``, but it avoids reading + *iterable* into memory. Note, however, that this function uses + :func:`itertools.tee` and thus may require significant storage. + + """ + head, iterable = spy(iter(iterable)) + if not head: + # empty iterable, e.g. zip([], [], []) + return () + # spy returns a one-length iterable as head + head = head[0] + iterables = tee(iterable, len(head)) + + def itemgetter(i): + def getter(obj): + try: + return obj[i] + except IndexError: + # basically if we have an iterable like + # iter([(1, 2, 3), (4, 5), (6,)]) + # the second unzipped iterable would fail at the third tuple + # since it would try to access tup[1] + # same with the third unzipped iterable and the second tuple + # to support these "improperly zipped" iterables, + # we create a custom itemgetter + # which just stops the unzipped iterables + # at first length mismatch + raise StopIteration + + return getter + + return tuple(map(itemgetter(i), it) for i, it in enumerate(iterables)) + + +def divide(n, iterable): + """Divide the elements from *iterable* into *n* parts, maintaining + order. + + >>> group_1, group_2 = divide(2, [1, 2, 3, 4, 5, 6]) + >>> list(group_1) + [1, 2, 3] + >>> list(group_2) + [4, 5, 6] + + If the length of *iterable* is not evenly divisible by *n*, then the + length of the returned iterables will not be identical: + + >>> children = divide(3, [1, 2, 3, 4, 5, 6, 7]) + >>> [list(c) for c in children] + [[1, 2, 3], [4, 5], [6, 7]] + + If the length of the iterable is smaller than n, then the last returned + iterables will be empty: + + >>> children = divide(5, [1, 2, 3]) + >>> [list(c) for c in children] + [[1], [2], [3], [], []] + + This function will exhaust the iterable before returning and may require + significant storage. If order is not important, see :func:`distribute`, + which does not first pull the iterable into memory. + + """ + if n < 1: + raise ValueError('n must be at least 1') + + try: + iterable[:0] + except TypeError: + seq = tuple(iterable) + else: + seq = iterable + + q, r = divmod(len(seq), n) + + ret = [] + stop = 0 + for i in range(1, n + 1): + start = stop + stop += q + 1 if i <= r else q + ret.append(iter(seq[start:stop])) + + return ret + + +def always_iterable(obj, base_type=(str, bytes)): + """If *obj* is iterable, return an iterator over its items:: + + >>> obj = (1, 2, 3) + >>> list(always_iterable(obj)) + [1, 2, 3] + + If *obj* is not iterable, return a one-item iterable containing *obj*:: + + >>> obj = 1 + >>> list(always_iterable(obj)) + [1] + + If *obj* is ``None``, return an empty iterable: + + >>> obj = None + >>> list(always_iterable(None)) + [] + + By default, binary and text strings are not considered iterable:: + + >>> obj = 'foo' + >>> list(always_iterable(obj)) + ['foo'] + + If *base_type* is set, objects for which ``isinstance(obj, base_type)`` + returns ``True`` won't be considered iterable. + + >>> obj = {'a': 1} + >>> list(always_iterable(obj)) # Iterate over the dict's keys + ['a'] + >>> list(always_iterable(obj, base_type=dict)) # Treat dicts as a unit + [{'a': 1}] + + Set *base_type* to ``None`` to avoid any special handling and treat objects + Python considers iterable as iterable: + + >>> obj = 'foo' + >>> list(always_iterable(obj, base_type=None)) + ['f', 'o', 'o'] + """ + if obj is None: + return iter(()) + + if (base_type is not None) and isinstance(obj, base_type): + return iter((obj,)) + + try: + return iter(obj) + except TypeError: + return iter((obj,)) + + +def adjacent(predicate, iterable, distance=1): + """Return an iterable over `(bool, item)` tuples where the `item` is + drawn from *iterable* and the `bool` indicates whether + that item satisfies the *predicate* or is adjacent to an item that does. + + For example, to find whether items are adjacent to a ``3``:: + + >>> list(adjacent(lambda x: x == 3, range(6))) + [(False, 0), (False, 1), (True, 2), (True, 3), (True, 4), (False, 5)] + + Set *distance* to change what counts as adjacent. For example, to find + whether items are two places away from a ``3``: + + >>> list(adjacent(lambda x: x == 3, range(6), distance=2)) + [(False, 0), (True, 1), (True, 2), (True, 3), (True, 4), (True, 5)] + + This is useful for contextualizing the results of a search function. + For example, a code comparison tool might want to identify lines that + have changed, but also surrounding lines to give the viewer of the diff + context. + + The predicate function will only be called once for each item in the + iterable. + + See also :func:`groupby_transform`, which can be used with this function + to group ranges of items with the same `bool` value. + + """ + # Allow distance=0 mainly for testing that it reproduces results with map() + if distance < 0: + raise ValueError('distance must be at least 0') + + i1, i2 = tee(iterable) + padding = [False] * distance + selected = chain(padding, map(predicate, i1), padding) + adjacent_to_selected = map(any, windowed(selected, 2 * distance + 1)) + return zip(adjacent_to_selected, i2) + + +def groupby_transform(iterable, keyfunc=None, valuefunc=None, reducefunc=None): + """An extension of :func:`itertools.groupby` that can apply transformations + to the grouped data. + + * *keyfunc* is a function computing a key value for each item in *iterable* + * *valuefunc* is a function that transforms the individual items from + *iterable* after grouping + * *reducefunc* is a function that transforms each group of items + + >>> iterable = 'aAAbBBcCC' + >>> keyfunc = lambda k: k.upper() + >>> valuefunc = lambda v: v.lower() + >>> reducefunc = lambda g: ''.join(g) + >>> list(groupby_transform(iterable, keyfunc, valuefunc, reducefunc)) + [('A', 'aaa'), ('B', 'bbb'), ('C', 'ccc')] + + Each optional argument defaults to an identity function if not specified. + + :func:`groupby_transform` is useful when grouping elements of an iterable + using a separate iterable as the key. To do this, :func:`zip` the iterables + and pass a *keyfunc* that extracts the first element and a *valuefunc* + that extracts the second element:: + + >>> from operator import itemgetter + >>> keys = [0, 0, 1, 1, 1, 2, 2, 2, 3] + >>> values = 'abcdefghi' + >>> iterable = zip(keys, values) + >>> grouper = groupby_transform(iterable, itemgetter(0), itemgetter(1)) + >>> [(k, ''.join(g)) for k, g in grouper] + [(0, 'ab'), (1, 'cde'), (2, 'fgh'), (3, 'i')] + + Note that the order of items in the iterable is significant. + Only adjacent items are grouped together, so if you don't want any + duplicate groups, you should sort the iterable by the key function. + + """ + ret = groupby(iterable, keyfunc) + if valuefunc: + ret = ((k, map(valuefunc, g)) for k, g in ret) + if reducefunc: + ret = ((k, reducefunc(g)) for k, g in ret) + + return ret + + +class numeric_range(abc.Sequence, abc.Hashable): + """An extension of the built-in ``range()`` function whose arguments can + be any orderable numeric type. + + With only *stop* specified, *start* defaults to ``0`` and *step* + defaults to ``1``. The output items will match the type of *stop*: + + >>> list(numeric_range(3.5)) + [0.0, 1.0, 2.0, 3.0] + + With only *start* and *stop* specified, *step* defaults to ``1``. The + output items will match the type of *start*: + + >>> from decimal import Decimal + >>> start = Decimal('2.1') + >>> stop = Decimal('5.1') + >>> list(numeric_range(start, stop)) + [Decimal('2.1'), Decimal('3.1'), Decimal('4.1')] + + With *start*, *stop*, and *step* specified the output items will match + the type of ``start + step``: + + >>> from fractions import Fraction + >>> start = Fraction(1, 2) # Start at 1/2 + >>> stop = Fraction(5, 2) # End at 5/2 + >>> step = Fraction(1, 2) # Count by 1/2 + >>> list(numeric_range(start, stop, step)) + [Fraction(1, 2), Fraction(1, 1), Fraction(3, 2), Fraction(2, 1)] + + If *step* is zero, ``ValueError`` is raised. Negative steps are supported: + + >>> list(numeric_range(3, -1, -1.0)) + [3.0, 2.0, 1.0, 0.0] + + Be aware of the limitations of floating point numbers; the representation + of the yielded numbers may be surprising. + + ``datetime.datetime`` objects can be used for *start* and *stop*, if *step* + is a ``datetime.timedelta`` object: + + >>> import datetime + >>> start = datetime.datetime(2019, 1, 1) + >>> stop = datetime.datetime(2019, 1, 3) + >>> step = datetime.timedelta(days=1) + >>> items = iter(numeric_range(start, stop, step)) + >>> next(items) + datetime.datetime(2019, 1, 1, 0, 0) + >>> next(items) + datetime.datetime(2019, 1, 2, 0, 0) + + """ + + _EMPTY_HASH = hash(range(0, 0)) + + def __init__(self, *args): + argc = len(args) + if argc == 1: + (self._stop,) = args + self._start = type(self._stop)(0) + self._step = type(self._stop - self._start)(1) + elif argc == 2: + self._start, self._stop = args + self._step = type(self._stop - self._start)(1) + elif argc == 3: + self._start, self._stop, self._step = args + elif argc == 0: + raise TypeError( + 'numeric_range expected at least ' + '1 argument, got {}'.format(argc) + ) + else: + raise TypeError( + 'numeric_range expected at most ' + '3 arguments, got {}'.format(argc) + ) + + self._zero = type(self._step)(0) + if self._step == self._zero: + raise ValueError('numeric_range() arg 3 must not be zero') + self._growing = self._step > self._zero + self._init_len() + + def __bool__(self): + if self._growing: + return self._start < self._stop + else: + return self._start > self._stop + + def __contains__(self, elem): + if self._growing: + if self._start <= elem < self._stop: + return (elem - self._start) % self._step == self._zero + else: + if self._start >= elem > self._stop: + return (self._start - elem) % (-self._step) == self._zero + + return False + + def __eq__(self, other): + if isinstance(other, numeric_range): + empty_self = not bool(self) + empty_other = not bool(other) + if empty_self or empty_other: + return empty_self and empty_other # True if both empty + else: + return ( + self._start == other._start + and self._step == other._step + and self._get_by_index(-1) == other._get_by_index(-1) + ) + else: + return False + + def __getitem__(self, key): + if isinstance(key, int): + return self._get_by_index(key) + elif isinstance(key, slice): + step = self._step if key.step is None else key.step * self._step + + if key.start is None or key.start <= -self._len: + start = self._start + elif key.start >= self._len: + start = self._stop + else: # -self._len < key.start < self._len + start = self._get_by_index(key.start) + + if key.stop is None or key.stop >= self._len: + stop = self._stop + elif key.stop <= -self._len: + stop = self._start + else: # -self._len < key.stop < self._len + stop = self._get_by_index(key.stop) + + return numeric_range(start, stop, step) + else: + raise TypeError( + 'numeric range indices must be ' + 'integers or slices, not {}'.format(type(key).__name__) + ) + + def __hash__(self): + if self: + return hash((self._start, self._get_by_index(-1), self._step)) + else: + return self._EMPTY_HASH + + def __iter__(self): + values = (self._start + (n * self._step) for n in count()) + if self._growing: + return takewhile(partial(gt, self._stop), values) + else: + return takewhile(partial(lt, self._stop), values) + + def __len__(self): + return self._len + + def _init_len(self): + if self._growing: + start = self._start + stop = self._stop + step = self._step + else: + start = self._stop + stop = self._start + step = -self._step + distance = stop - start + if distance <= self._zero: + self._len = 0 + else: # distance > 0 and step > 0: regular euclidean division + q, r = divmod(distance, step) + self._len = int(q) + int(r != self._zero) + + def __reduce__(self): + return numeric_range, (self._start, self._stop, self._step) + + def __repr__(self): + if self._step == 1: + return "numeric_range({}, {})".format( + repr(self._start), repr(self._stop) + ) + else: + return "numeric_range({}, {}, {})".format( + repr(self._start), repr(self._stop), repr(self._step) + ) + + def __reversed__(self): + return iter( + numeric_range( + self._get_by_index(-1), self._start - self._step, -self._step + ) + ) + + def count(self, value): + return int(value in self) + + def index(self, value): + if self._growing: + if self._start <= value < self._stop: + q, r = divmod(value - self._start, self._step) + if r == self._zero: + return int(q) + else: + if self._start >= value > self._stop: + q, r = divmod(self._start - value, -self._step) + if r == self._zero: + return int(q) + + raise ValueError("{} is not in numeric range".format(value)) + + def _get_by_index(self, i): + if i < 0: + i += self._len + if i < 0 or i >= self._len: + raise IndexError("numeric range object index out of range") + return self._start + i * self._step + + +def count_cycle(iterable, n=None): + """Cycle through the items from *iterable* up to *n* times, yielding + the number of completed cycles along with each item. If *n* is omitted the + process repeats indefinitely. + + >>> list(count_cycle('AB', 3)) + [(0, 'A'), (0, 'B'), (1, 'A'), (1, 'B'), (2, 'A'), (2, 'B')] + + """ + iterable = tuple(iterable) + if not iterable: + return iter(()) + counter = count() if n is None else range(n) + return ((i, item) for i in counter for item in iterable) + + +def mark_ends(iterable): + """Yield 3-tuples of the form ``(is_first, is_last, item)``. + + >>> list(mark_ends('ABC')) + [(True, False, 'A'), (False, False, 'B'), (False, True, 'C')] + + Use this when looping over an iterable to take special action on its first + and/or last items: + + >>> iterable = ['Header', 100, 200, 'Footer'] + >>> total = 0 + >>> for is_first, is_last, item in mark_ends(iterable): + ... if is_first: + ... continue # Skip the header + ... if is_last: + ... continue # Skip the footer + ... total += item + >>> print(total) + 300 + """ + it = iter(iterable) + + try: + b = next(it) + except StopIteration: + return + + try: + for i in count(): + a = b + b = next(it) + yield i == 0, False, a + + except StopIteration: + yield i == 0, True, a + + +def locate(iterable, pred=bool, window_size=None): + """Yield the index of each item in *iterable* for which *pred* returns + ``True``. + + *pred* defaults to :func:`bool`, which will select truthy items: + + >>> list(locate([0, 1, 1, 0, 1, 0, 0])) + [1, 2, 4] + + Set *pred* to a custom function to, e.g., find the indexes for a particular + item. + + >>> list(locate(['a', 'b', 'c', 'b'], lambda x: x == 'b')) + [1, 3] + + If *window_size* is given, then the *pred* function will be called with + that many items. This enables searching for sub-sequences: + + >>> iterable = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3] + >>> pred = lambda *args: args == (1, 2, 3) + >>> list(locate(iterable, pred=pred, window_size=3)) + [1, 5, 9] + + Use with :func:`seekable` to find indexes and then retrieve the associated + items: + + >>> from itertools import count + >>> from more_itertools import seekable + >>> source = (3 * n + 1 if (n % 2) else n // 2 for n in count()) + >>> it = seekable(source) + >>> pred = lambda x: x > 100 + >>> indexes = locate(it, pred=pred) + >>> i = next(indexes) + >>> it.seek(i) + >>> next(it) + 106 + + """ + if window_size is None: + return compress(count(), map(pred, iterable)) + + if window_size < 1: + raise ValueError('window size must be at least 1') + + it = windowed(iterable, window_size, fillvalue=_marker) + return compress(count(), starmap(pred, it)) + + +def lstrip(iterable, pred): + """Yield the items from *iterable*, but strip any from the beginning + for which *pred* returns ``True``. + + For example, to remove a set of items from the start of an iterable: + + >>> iterable = (None, False, None, 1, 2, None, 3, False, None) + >>> pred = lambda x: x in {None, False, ''} + >>> list(lstrip(iterable, pred)) + [1, 2, None, 3, False, None] + + This function is analogous to to :func:`str.lstrip`, and is essentially + an wrapper for :func:`itertools.dropwhile`. + + """ + return dropwhile(pred, iterable) + + +def rstrip(iterable, pred): + """Yield the items from *iterable*, but strip any from the end + for which *pred* returns ``True``. + + For example, to remove a set of items from the end of an iterable: + + >>> iterable = (None, False, None, 1, 2, None, 3, False, None) + >>> pred = lambda x: x in {None, False, ''} + >>> list(rstrip(iterable, pred)) + [None, False, None, 1, 2, None, 3] + + This function is analogous to :func:`str.rstrip`. + + """ + cache = [] + cache_append = cache.append + cache_clear = cache.clear + for x in iterable: + if pred(x): + cache_append(x) + else: + yield from cache + cache_clear() + yield x + + +def strip(iterable, pred): + """Yield the items from *iterable*, but strip any from the + beginning and end for which *pred* returns ``True``. + + For example, to remove a set of items from both ends of an iterable: + + >>> iterable = (None, False, None, 1, 2, None, 3, False, None) + >>> pred = lambda x: x in {None, False, ''} + >>> list(strip(iterable, pred)) + [1, 2, None, 3] + + This function is analogous to :func:`str.strip`. + + """ + return rstrip(lstrip(iterable, pred), pred) + + +class islice_extended: + """An extension of :func:`itertools.islice` that supports negative values + for *stop*, *start*, and *step*. + + >>> iterable = iter('abcdefgh') + >>> list(islice_extended(iterable, -4, -1)) + ['e', 'f', 'g'] + + Slices with negative values require some caching of *iterable*, but this + function takes care to minimize the amount of memory required. + + For example, you can use a negative step with an infinite iterator: + + >>> from itertools import count + >>> list(islice_extended(count(), 110, 99, -2)) + [110, 108, 106, 104, 102, 100] + + You can also use slice notation directly: + + >>> iterable = map(str, count()) + >>> it = islice_extended(iterable)[10:20:2] + >>> list(it) + ['10', '12', '14', '16', '18'] + + """ + + def __init__(self, iterable, *args): + it = iter(iterable) + if args: + self._iterable = _islice_helper(it, slice(*args)) + else: + self._iterable = it + + def __iter__(self): + return self + + def __next__(self): + return next(self._iterable) + + def __getitem__(self, key): + if isinstance(key, slice): + return islice_extended(_islice_helper(self._iterable, key)) + + raise TypeError('islice_extended.__getitem__ argument must be a slice') + + +def _islice_helper(it, s): + start = s.start + stop = s.stop + if s.step == 0: + raise ValueError('step argument must be a non-zero integer or None.') + step = s.step or 1 + + if step > 0: + start = 0 if (start is None) else start + + if start < 0: + # Consume all but the last -start items + cache = deque(enumerate(it, 1), maxlen=-start) + len_iter = cache[-1][0] if cache else 0 + + # Adjust start to be positive + i = max(len_iter + start, 0) + + # Adjust stop to be positive + if stop is None: + j = len_iter + elif stop >= 0: + j = min(stop, len_iter) + else: + j = max(len_iter + stop, 0) + + # Slice the cache + n = j - i + if n <= 0: + return + + for index, item in islice(cache, 0, n, step): + yield item + elif (stop is not None) and (stop < 0): + # Advance to the start position + next(islice(it, start, start), None) + + # When stop is negative, we have to carry -stop items while + # iterating + cache = deque(islice(it, -stop), maxlen=-stop) + + for index, item in enumerate(it): + cached_item = cache.popleft() + if index % step == 0: + yield cached_item + cache.append(item) + else: + # When both start and stop are positive we have the normal case + yield from islice(it, start, stop, step) + else: + start = -1 if (start is None) else start + + if (stop is not None) and (stop < 0): + # Consume all but the last items + n = -stop - 1 + cache = deque(enumerate(it, 1), maxlen=n) + len_iter = cache[-1][0] if cache else 0 + + # If start and stop are both negative they are comparable and + # we can just slice. Otherwise we can adjust start to be negative + # and then slice. + if start < 0: + i, j = start, stop + else: + i, j = min(start - len_iter, -1), None + + for index, item in list(cache)[i:j:step]: + yield item + else: + # Advance to the stop position + if stop is not None: + m = stop + 1 + next(islice(it, m, m), None) + + # stop is positive, so if start is negative they are not comparable + # and we need the rest of the items. + if start < 0: + i = start + n = None + # stop is None and start is positive, so we just need items up to + # the start index. + elif stop is None: + i = None + n = start + 1 + # Both stop and start are positive, so they are comparable. + else: + i = None + n = start - stop + if n <= 0: + return + + cache = list(islice(it, n)) + + yield from cache[i::step] + + +def always_reversible(iterable): + """An extension of :func:`reversed` that supports all iterables, not + just those which implement the ``Reversible`` or ``Sequence`` protocols. + + >>> print(*always_reversible(x for x in range(3))) + 2 1 0 + + If the iterable is already reversible, this function returns the + result of :func:`reversed()`. If the iterable is not reversible, + this function will cache the remaining items in the iterable and + yield them in reverse order, which may require significant storage. + """ + try: + return reversed(iterable) + except TypeError: + return reversed(list(iterable)) + + +def consecutive_groups(iterable, ordering=lambda x: x): + """Yield groups of consecutive items using :func:`itertools.groupby`. + The *ordering* function determines whether two items are adjacent by + returning their position. + + By default, the ordering function is the identity function. This is + suitable for finding runs of numbers: + + >>> iterable = [1, 10, 11, 12, 20, 30, 31, 32, 33, 40] + >>> for group in consecutive_groups(iterable): + ... print(list(group)) + [1] + [10, 11, 12] + [20] + [30, 31, 32, 33] + [40] + + For finding runs of adjacent letters, try using the :meth:`index` method + of a string of letters: + + >>> from string import ascii_lowercase + >>> iterable = 'abcdfgilmnop' + >>> ordering = ascii_lowercase.index + >>> for group in consecutive_groups(iterable, ordering): + ... print(list(group)) + ['a', 'b', 'c', 'd'] + ['f', 'g'] + ['i'] + ['l', 'm', 'n', 'o', 'p'] + + Each group of consecutive items is an iterator that shares it source with + *iterable*. When an an output group is advanced, the previous group is + no longer available unless its elements are copied (e.g., into a ``list``). + + >>> iterable = [1, 2, 11, 12, 21, 22] + >>> saved_groups = [] + >>> for group in consecutive_groups(iterable): + ... saved_groups.append(list(group)) # Copy group elements + >>> saved_groups + [[1, 2], [11, 12], [21, 22]] + + """ + for k, g in groupby( + enumerate(iterable), key=lambda x: x[0] - ordering(x[1]) + ): + yield map(itemgetter(1), g) + + +def difference(iterable, func=sub, *, initial=None): + """This function is the inverse of :func:`itertools.accumulate`. By default + it will compute the first difference of *iterable* using + :func:`operator.sub`: + + >>> from itertools import accumulate + >>> iterable = accumulate([0, 1, 2, 3, 4]) # produces 0, 1, 3, 6, 10 + >>> list(difference(iterable)) + [0, 1, 2, 3, 4] + + *func* defaults to :func:`operator.sub`, but other functions can be + specified. They will be applied as follows:: + + A, B, C, D, ... --> A, func(B, A), func(C, B), func(D, C), ... + + For example, to do progressive division: + + >>> iterable = [1, 2, 6, 24, 120] + >>> func = lambda x, y: x // y + >>> list(difference(iterable, func)) + [1, 2, 3, 4, 5] + + If the *initial* keyword is set, the first element will be skipped when + computing successive differences. + + >>> it = [10, 11, 13, 16] # from accumulate([1, 2, 3], initial=10) + >>> list(difference(it, initial=10)) + [1, 2, 3] + + """ + a, b = tee(iterable) + try: + first = [next(b)] + except StopIteration: + return iter([]) + + if initial is not None: + first = [] + + return chain(first, starmap(func, zip(b, a))) + + +class SequenceView(Sequence): + """Return a read-only view of the sequence object *target*. + + :class:`SequenceView` objects are analogous to Python's built-in + "dictionary view" types. They provide a dynamic view of a sequence's items, + meaning that when the sequence updates, so does the view. + + >>> seq = ['0', '1', '2'] + >>> view = SequenceView(seq) + >>> view + SequenceView(['0', '1', '2']) + >>> seq.append('3') + >>> view + SequenceView(['0', '1', '2', '3']) + + Sequence views support indexing, slicing, and length queries. They act + like the underlying sequence, except they don't allow assignment: + + >>> view[1] + '1' + >>> view[1:-1] + ['1', '2'] + >>> len(view) + 4 + + Sequence views are useful as an alternative to copying, as they don't + require (much) extra storage. + + """ + + def __init__(self, target): + if not isinstance(target, Sequence): + raise TypeError + self._target = target + + def __getitem__(self, index): + return self._target[index] + + def __len__(self): + return len(self._target) + + def __repr__(self): + return '{}({})'.format(self.__class__.__name__, repr(self._target)) + + +class seekable: + """Wrap an iterator to allow for seeking backward and forward. This + progressively caches the items in the source iterable so they can be + re-visited. + + Call :meth:`seek` with an index to seek to that position in the source + iterable. + + To "reset" an iterator, seek to ``0``: + + >>> from itertools import count + >>> it = seekable((str(n) for n in count())) + >>> next(it), next(it), next(it) + ('0', '1', '2') + >>> it.seek(0) + >>> next(it), next(it), next(it) + ('0', '1', '2') + >>> next(it) + '3' + + You can also seek forward: + + >>> it = seekable((str(n) for n in range(20))) + >>> it.seek(10) + >>> next(it) + '10' + >>> it.seek(20) # Seeking past the end of the source isn't a problem + >>> list(it) + [] + >>> it.seek(0) # Resetting works even after hitting the end + >>> next(it), next(it), next(it) + ('0', '1', '2') + + Call :meth:`peek` to look ahead one item without advancing the iterator: + + >>> it = seekable('1234') + >>> it.peek() + '1' + >>> list(it) + ['1', '2', '3', '4'] + >>> it.peek(default='empty') + 'empty' + + Before the iterator is at its end, calling :func:`bool` on it will return + ``True``. After it will return ``False``: + + >>> it = seekable('5678') + >>> bool(it) + True + >>> list(it) + ['5', '6', '7', '8'] + >>> bool(it) + False + + You may view the contents of the cache with the :meth:`elements` method. + That returns a :class:`SequenceView`, a view that updates automatically: + + >>> it = seekable((str(n) for n in range(10))) + >>> next(it), next(it), next(it) + ('0', '1', '2') + >>> elements = it.elements() + >>> elements + SequenceView(['0', '1', '2']) + >>> next(it) + '3' + >>> elements + SequenceView(['0', '1', '2', '3']) + + By default, the cache grows as the source iterable progresses, so beware of + wrapping very large or infinite iterables. Supply *maxlen* to limit the + size of the cache (this of course limits how far back you can seek). + + >>> from itertools import count + >>> it = seekable((str(n) for n in count()), maxlen=2) + >>> next(it), next(it), next(it), next(it) + ('0', '1', '2', '3') + >>> list(it.elements()) + ['2', '3'] + >>> it.seek(0) + >>> next(it), next(it), next(it), next(it) + ('2', '3', '4', '5') + >>> next(it) + '6' + + """ + + def __init__(self, iterable, maxlen=None): + self._source = iter(iterable) + if maxlen is None: + self._cache = [] + else: + self._cache = deque([], maxlen) + self._index = None + + def __iter__(self): + return self + + def __next__(self): + if self._index is not None: + try: + item = self._cache[self._index] + except IndexError: + self._index = None + else: + self._index += 1 + return item + + item = next(self._source) + self._cache.append(item) + return item + + def __bool__(self): + try: + self.peek() + except StopIteration: + return False + return True + + def peek(self, default=_marker): + try: + peeked = next(self) + except StopIteration: + if default is _marker: + raise + return default + if self._index is None: + self._index = len(self._cache) + self._index -= 1 + return peeked + + def elements(self): + return SequenceView(self._cache) + + def seek(self, index): + self._index = index + remainder = index - len(self._cache) + if remainder > 0: + consume(self, remainder) + + +class run_length: + """ + :func:`run_length.encode` compresses an iterable with run-length encoding. + It yields groups of repeated items with the count of how many times they + were repeated: + + >>> uncompressed = 'abbcccdddd' + >>> list(run_length.encode(uncompressed)) + [('a', 1), ('b', 2), ('c', 3), ('d', 4)] + + :func:`run_length.decode` decompresses an iterable that was previously + compressed with run-length encoding. It yields the items of the + decompressed iterable: + + >>> compressed = [('a', 1), ('b', 2), ('c', 3), ('d', 4)] + >>> list(run_length.decode(compressed)) + ['a', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'd'] + + """ + + @staticmethod + def encode(iterable): + return ((k, ilen(g)) for k, g in groupby(iterable)) + + @staticmethod + def decode(iterable): + return chain.from_iterable(repeat(k, n) for k, n in iterable) + + +def exactly_n(iterable, n, predicate=bool): + """Return ``True`` if exactly ``n`` items in the iterable are ``True`` + according to the *predicate* function. + + >>> exactly_n([True, True, False], 2) + True + >>> exactly_n([True, True, False], 1) + False + >>> exactly_n([0, 1, 2, 3, 4, 5], 3, lambda x: x < 3) + True + + The iterable will be advanced until ``n + 1`` truthy items are encountered, + so avoid calling it on infinite iterables. + + """ + return len(take(n + 1, filter(predicate, iterable))) == n + + +def circular_shifts(iterable): + """Return a list of circular shifts of *iterable*. + + >>> circular_shifts(range(4)) + [(0, 1, 2, 3), (1, 2, 3, 0), (2, 3, 0, 1), (3, 0, 1, 2)] + """ + lst = list(iterable) + return take(len(lst), windowed(cycle(lst), len(lst))) + + +def make_decorator(wrapping_func, result_index=0): + """Return a decorator version of *wrapping_func*, which is a function that + modifies an iterable. *result_index* is the position in that function's + signature where the iterable goes. + + This lets you use itertools on the "production end," i.e. at function + definition. This can augment what the function returns without changing the + function's code. + + For example, to produce a decorator version of :func:`chunked`: + + >>> from more_itertools import chunked + >>> chunker = make_decorator(chunked, result_index=0) + >>> @chunker(3) + ... def iter_range(n): + ... return iter(range(n)) + ... + >>> list(iter_range(9)) + [[0, 1, 2], [3, 4, 5], [6, 7, 8]] + + To only allow truthy items to be returned: + + >>> truth_serum = make_decorator(filter, result_index=1) + >>> @truth_serum(bool) + ... def boolean_test(): + ... return [0, 1, '', ' ', False, True] + ... + >>> list(boolean_test()) + [1, ' ', True] + + The :func:`peekable` and :func:`seekable` wrappers make for practical + decorators: + + >>> from more_itertools import peekable + >>> peekable_function = make_decorator(peekable) + >>> @peekable_function() + ... def str_range(*args): + ... return (str(x) for x in range(*args)) + ... + >>> it = str_range(1, 20, 2) + >>> next(it), next(it), next(it) + ('1', '3', '5') + >>> it.peek() + '7' + >>> next(it) + '7' + + """ + # See https://sites.google.com/site/bbayles/index/decorator_factory for + # notes on how this works. + def decorator(*wrapping_args, **wrapping_kwargs): + def outer_wrapper(f): + def inner_wrapper(*args, **kwargs): + result = f(*args, **kwargs) + wrapping_args_ = list(wrapping_args) + wrapping_args_.insert(result_index, result) + return wrapping_func(*wrapping_args_, **wrapping_kwargs) + + return inner_wrapper + + return outer_wrapper + + return decorator + + +def map_reduce(iterable, keyfunc, valuefunc=None, reducefunc=None): + """Return a dictionary that maps the items in *iterable* to categories + defined by *keyfunc*, transforms them with *valuefunc*, and + then summarizes them by category with *reducefunc*. + + *valuefunc* defaults to the identity function if it is unspecified. + If *reducefunc* is unspecified, no summarization takes place: + + >>> keyfunc = lambda x: x.upper() + >>> result = map_reduce('abbccc', keyfunc) + >>> sorted(result.items()) + [('A', ['a']), ('B', ['b', 'b']), ('C', ['c', 'c', 'c'])] + + Specifying *valuefunc* transforms the categorized items: + + >>> keyfunc = lambda x: x.upper() + >>> valuefunc = lambda x: 1 + >>> result = map_reduce('abbccc', keyfunc, valuefunc) + >>> sorted(result.items()) + [('A', [1]), ('B', [1, 1]), ('C', [1, 1, 1])] + + Specifying *reducefunc* summarizes the categorized items: + + >>> keyfunc = lambda x: x.upper() + >>> valuefunc = lambda x: 1 + >>> reducefunc = sum + >>> result = map_reduce('abbccc', keyfunc, valuefunc, reducefunc) + >>> sorted(result.items()) + [('A', 1), ('B', 2), ('C', 3)] + + You may want to filter the input iterable before applying the map/reduce + procedure: + + >>> all_items = range(30) + >>> items = [x for x in all_items if 10 <= x <= 20] # Filter + >>> keyfunc = lambda x: x % 2 # Evens map to 0; odds to 1 + >>> categories = map_reduce(items, keyfunc=keyfunc) + >>> sorted(categories.items()) + [(0, [10, 12, 14, 16, 18, 20]), (1, [11, 13, 15, 17, 19])] + >>> summaries = map_reduce(items, keyfunc=keyfunc, reducefunc=sum) + >>> sorted(summaries.items()) + [(0, 90), (1, 75)] + + Note that all items in the iterable are gathered into a list before the + summarization step, which may require significant storage. + + The returned object is a :obj:`collections.defaultdict` with the + ``default_factory`` set to ``None``, such that it behaves like a normal + dictionary. + + """ + valuefunc = (lambda x: x) if (valuefunc is None) else valuefunc + + ret = defaultdict(list) + for item in iterable: + key = keyfunc(item) + value = valuefunc(item) + ret[key].append(value) + + if reducefunc is not None: + for key, value_list in ret.items(): + ret[key] = reducefunc(value_list) + + ret.default_factory = None + return ret + + +def rlocate(iterable, pred=bool, window_size=None): + """Yield the index of each item in *iterable* for which *pred* returns + ``True``, starting from the right and moving left. + + *pred* defaults to :func:`bool`, which will select truthy items: + + >>> list(rlocate([0, 1, 1, 0, 1, 0, 0])) # Truthy at 1, 2, and 4 + [4, 2, 1] + + Set *pred* to a custom function to, e.g., find the indexes for a particular + item: + + >>> iterable = iter('abcb') + >>> pred = lambda x: x == 'b' + >>> list(rlocate(iterable, pred)) + [3, 1] + + If *window_size* is given, then the *pred* function will be called with + that many items. This enables searching for sub-sequences: + + >>> iterable = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3] + >>> pred = lambda *args: args == (1, 2, 3) + >>> list(rlocate(iterable, pred=pred, window_size=3)) + [9, 5, 1] + + Beware, this function won't return anything for infinite iterables. + If *iterable* is reversible, ``rlocate`` will reverse it and search from + the right. Otherwise, it will search from the left and return the results + in reverse order. + + See :func:`locate` to for other example applications. + + """ + if window_size is None: + try: + len_iter = len(iterable) + return (len_iter - i - 1 for i in locate(reversed(iterable), pred)) + except TypeError: + pass + + return reversed(list(locate(iterable, pred, window_size))) + + +def replace(iterable, pred, substitutes, count=None, window_size=1): + """Yield the items from *iterable*, replacing the items for which *pred* + returns ``True`` with the items from the iterable *substitutes*. + + >>> iterable = [1, 1, 0, 1, 1, 0, 1, 1] + >>> pred = lambda x: x == 0 + >>> substitutes = (2, 3) + >>> list(replace(iterable, pred, substitutes)) + [1, 1, 2, 3, 1, 1, 2, 3, 1, 1] + + If *count* is given, the number of replacements will be limited: + + >>> iterable = [1, 1, 0, 1, 1, 0, 1, 1, 0] + >>> pred = lambda x: x == 0 + >>> substitutes = [None] + >>> list(replace(iterable, pred, substitutes, count=2)) + [1, 1, None, 1, 1, None, 1, 1, 0] + + Use *window_size* to control the number of items passed as arguments to + *pred*. This allows for locating and replacing subsequences. + + >>> iterable = [0, 1, 2, 5, 0, 1, 2, 5] + >>> window_size = 3 + >>> pred = lambda *args: args == (0, 1, 2) # 3 items passed to pred + >>> substitutes = [3, 4] # Splice in these items + >>> list(replace(iterable, pred, substitutes, window_size=window_size)) + [3, 4, 5, 3, 4, 5] + + """ + if window_size < 1: + raise ValueError('window_size must be at least 1') + + # Save the substitutes iterable, since it's used more than once + substitutes = tuple(substitutes) + + # Add padding such that the number of windows matches the length of the + # iterable + it = chain(iterable, [_marker] * (window_size - 1)) + windows = windowed(it, window_size) + + n = 0 + for w in windows: + # If the current window matches our predicate (and we haven't hit + # our maximum number of replacements), splice in the substitutes + # and then consume the following windows that overlap with this one. + # For example, if the iterable is (0, 1, 2, 3, 4...) + # and the window size is 2, we have (0, 1), (1, 2), (2, 3)... + # If the predicate matches on (0, 1), we need to zap (0, 1) and (1, 2) + if pred(*w): + if (count is None) or (n < count): + n += 1 + yield from substitutes + consume(windows, window_size - 1) + continue + + # If there was no match (or we've reached the replacement limit), + # yield the first item from the window. + if w and (w[0] is not _marker): + yield w[0] + + +def partitions(iterable): + """Yield all possible order-preserving partitions of *iterable*. + + >>> iterable = 'abc' + >>> for part in partitions(iterable): + ... print([''.join(p) for p in part]) + ['abc'] + ['a', 'bc'] + ['ab', 'c'] + ['a', 'b', 'c'] + + This is unrelated to :func:`partition`. + + """ + sequence = list(iterable) + n = len(sequence) + for i in powerset(range(1, n)): + yield [sequence[i:j] for i, j in zip((0,) + i, i + (n,))] + + +def set_partitions(iterable, k=None): + """ + Yield the set partitions of *iterable* into *k* parts. Set partitions are + not order-preserving. + + >>> iterable = 'abc' + >>> for part in set_partitions(iterable, 2): + ... print([''.join(p) for p in part]) + ['a', 'bc'] + ['ab', 'c'] + ['b', 'ac'] + + + If *k* is not given, every set partition is generated. + + >>> iterable = 'abc' + >>> for part in set_partitions(iterable): + ... print([''.join(p) for p in part]) + ['abc'] + ['a', 'bc'] + ['ab', 'c'] + ['b', 'ac'] + ['a', 'b', 'c'] + + """ + L = list(iterable) + n = len(L) + if k is not None: + if k < 1: + raise ValueError( + "Can't partition in a negative or zero number of groups" + ) + elif k > n: + return + + def set_partitions_helper(L, k): + n = len(L) + if k == 1: + yield [L] + elif n == k: + yield [[s] for s in L] + else: + e, *M = L + for p in set_partitions_helper(M, k - 1): + yield [[e], *p] + for p in set_partitions_helper(M, k): + for i in range(len(p)): + yield p[:i] + [[e] + p[i]] + p[i + 1 :] + + if k is None: + for k in range(1, n + 1): + yield from set_partitions_helper(L, k) + else: + yield from set_partitions_helper(L, k) + + +class time_limited: + """ + Yield items from *iterable* until *limit_seconds* have passed. + If the time limit expires before all items have been yielded, the + ``timed_out`` parameter will be set to ``True``. + + >>> from time import sleep + >>> def generator(): + ... yield 1 + ... yield 2 + ... sleep(0.2) + ... yield 3 + >>> iterable = time_limited(0.1, generator()) + >>> list(iterable) + [1, 2] + >>> iterable.timed_out + True + + Note that the time is checked before each item is yielded, and iteration + stops if the time elapsed is greater than *limit_seconds*. If your time + limit is 1 second, but it takes 2 seconds to generate the first item from + the iterable, the function will run for 2 seconds and not yield anything. + + """ + + def __init__(self, limit_seconds, iterable): + if limit_seconds < 0: + raise ValueError('limit_seconds must be positive') + self.limit_seconds = limit_seconds + self._iterable = iter(iterable) + self._start_time = monotonic() + self.timed_out = False + + def __iter__(self): + return self + + def __next__(self): + item = next(self._iterable) + if monotonic() - self._start_time > self.limit_seconds: + self.timed_out = True + raise StopIteration + + return item + + +def only(iterable, default=None, too_long=None): + """If *iterable* has only one item, return it. + If it has zero items, return *default*. + If it has more than one item, raise the exception given by *too_long*, + which is ``ValueError`` by default. + + >>> only([], default='missing') + 'missing' + >>> only([1]) + 1 + >>> only([1, 2]) # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + ValueError: Expected exactly one item in iterable, but got 1, 2, + and perhaps more.' + >>> only([1, 2], too_long=TypeError) # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + TypeError + + Note that :func:`only` attempts to advance *iterable* twice to ensure there + is only one item. See :func:`spy` or :func:`peekable` to check + iterable contents less destructively. + """ + it = iter(iterable) + first_value = next(it, default) + + try: + second_value = next(it) + except StopIteration: + pass + else: + msg = ( + 'Expected exactly one item in iterable, but got {!r}, {!r}, ' + 'and perhaps more.'.format(first_value, second_value) + ) + raise too_long or ValueError(msg) + + return first_value + + +def ichunked(iterable, n): + """Break *iterable* into sub-iterables with *n* elements each. + :func:`ichunked` is like :func:`chunked`, but it yields iterables + instead of lists. + + If the sub-iterables are read in order, the elements of *iterable* + won't be stored in memory. + If they are read out of order, :func:`itertools.tee` is used to cache + elements as necessary. + + >>> from itertools import count + >>> all_chunks = ichunked(count(), 4) + >>> c_1, c_2, c_3 = next(all_chunks), next(all_chunks), next(all_chunks) + >>> list(c_2) # c_1's elements have been cached; c_3's haven't been + [4, 5, 6, 7] + >>> list(c_1) + [0, 1, 2, 3] + >>> list(c_3) + [8, 9, 10, 11] + + """ + source = iter(iterable) + + while True: + # Check to see whether we're at the end of the source iterable + item = next(source, _marker) + if item is _marker: + return + + # Clone the source and yield an n-length slice + source, it = tee(chain([item], source)) + yield islice(it, n) + + # Advance the source iterable + consume(source, n) + + +def distinct_combinations(iterable, r): + """Yield the distinct combinations of *r* items taken from *iterable*. + + >>> list(distinct_combinations([0, 0, 1], 2)) + [(0, 0), (0, 1)] + + Equivalent to ``set(combinations(iterable))``, except duplicates are not + generated and thrown away. For larger input sequences this is much more + efficient. + + """ + if r < 0: + raise ValueError('r must be non-negative') + elif r == 0: + yield () + return + pool = tuple(iterable) + generators = [unique_everseen(enumerate(pool), key=itemgetter(1))] + current_combo = [None] * r + level = 0 + while generators: + try: + cur_idx, p = next(generators[-1]) + except StopIteration: + generators.pop() + level -= 1 + continue + current_combo[level] = p + if level + 1 == r: + yield tuple(current_combo) + else: + generators.append( + unique_everseen( + enumerate(pool[cur_idx + 1 :], cur_idx + 1), + key=itemgetter(1), + ) + ) + level += 1 + + +def filter_except(validator, iterable, *exceptions): + """Yield the items from *iterable* for which the *validator* function does + not raise one of the specified *exceptions*. + + *validator* is called for each item in *iterable*. + It should be a function that accepts one argument and raises an exception + if that item is not valid. + + >>> iterable = ['1', '2', 'three', '4', None] + >>> list(filter_except(int, iterable, ValueError, TypeError)) + ['1', '2', '4'] + + If an exception other than one given by *exceptions* is raised by + *validator*, it is raised like normal. + """ + for item in iterable: + try: + validator(item) + except exceptions: + pass + else: + yield item + + +def map_except(function, iterable, *exceptions): + """Transform each item from *iterable* with *function* and yield the + result, unless *function* raises one of the specified *exceptions*. + + *function* is called to transform each item in *iterable*. + It should be a accept one argument. + + >>> iterable = ['1', '2', 'three', '4', None] + >>> list(map_except(int, iterable, ValueError, TypeError)) + [1, 2, 4] + + If an exception other than one given by *exceptions* is raised by + *function*, it is raised like normal. + """ + for item in iterable: + try: + yield function(item) + except exceptions: + pass + + +def _sample_unweighted(iterable, k): + # Implementation of "Algorithm L" from the 1994 paper by Kim-Hung Li: + # "Reservoir-Sampling Algorithms of Time Complexity O(n(1+log(N/n)))". + + # Fill up the reservoir (collection of samples) with the first `k` samples + reservoir = take(k, iterable) + + # Generate random number that's the largest in a sample of k U(0,1) numbers + # Largest order statistic: https://en.wikipedia.org/wiki/Order_statistic + W = exp(log(random()) / k) + + # The number of elements to skip before changing the reservoir is a random + # number with a geometric distribution. Sample it using random() and logs. + next_index = k + floor(log(random()) / log(1 - W)) + + for index, element in enumerate(iterable, k): + + if index == next_index: + reservoir[randrange(k)] = element + # The new W is the largest in a sample of k U(0, `old_W`) numbers + W *= exp(log(random()) / k) + next_index += floor(log(random()) / log(1 - W)) + 1 + + return reservoir + + +def _sample_weighted(iterable, k, weights): + # Implementation of "A-ExpJ" from the 2006 paper by Efraimidis et al. : + # "Weighted random sampling with a reservoir". + + # Log-transform for numerical stability for weights that are small/large + weight_keys = (log(random()) / weight for weight in weights) + + # Fill up the reservoir (collection of samples) with the first `k` + # weight-keys and elements, then heapify the list. + reservoir = take(k, zip(weight_keys, iterable)) + heapify(reservoir) + + # The number of jumps before changing the reservoir is a random variable + # with an exponential distribution. Sample it using random() and logs. + smallest_weight_key, _ = reservoir[0] + weights_to_skip = log(random()) / smallest_weight_key + + for weight, element in zip(weights, iterable): + if weight >= weights_to_skip: + # The notation here is consistent with the paper, but we store + # the weight-keys in log-space for better numerical stability. + smallest_weight_key, _ = reservoir[0] + t_w = exp(weight * smallest_weight_key) + r_2 = uniform(t_w, 1) # generate U(t_w, 1) + weight_key = log(r_2) / weight + heapreplace(reservoir, (weight_key, element)) + smallest_weight_key, _ = reservoir[0] + weights_to_skip = log(random()) / smallest_weight_key + else: + weights_to_skip -= weight + + # Equivalent to [element for weight_key, element in sorted(reservoir)] + return [heappop(reservoir)[1] for _ in range(k)] + + +def sample(iterable, k, weights=None): + """Return a *k*-length list of elements chosen (without replacement) + from the *iterable*. Like :func:`random.sample`, but works on iterables + of unknown length. + + >>> iterable = range(100) + >>> sample(iterable, 5) # doctest: +SKIP + [81, 60, 96, 16, 4] + + An iterable with *weights* may also be given: + + >>> iterable = range(100) + >>> weights = (i * i + 1 for i in range(100)) + >>> sampled = sample(iterable, 5, weights=weights) # doctest: +SKIP + [79, 67, 74, 66, 78] + + The algorithm can also be used to generate weighted random permutations. + The relative weight of each item determines the probability that it + appears late in the permutation. + + >>> data = "abcdefgh" + >>> weights = range(1, len(data) + 1) + >>> sample(data, k=len(data), weights=weights) # doctest: +SKIP + ['c', 'a', 'b', 'e', 'g', 'd', 'h', 'f'] + """ + if k == 0: + return [] + + iterable = iter(iterable) + if weights is None: + return _sample_unweighted(iterable, k) + else: + weights = iter(weights) + return _sample_weighted(iterable, k, weights) + + +def is_sorted(iterable, key=None, reverse=False): + """Returns ``True`` if the items of iterable are in sorted order, and + ``False`` otherwise. *key* and *reverse* have the same meaning that they do + in the built-in :func:`sorted` function. + + >>> is_sorted(['1', '2', '3', '4', '5'], key=int) + True + >>> is_sorted([5, 4, 3, 1, 2], reverse=True) + False + + The function returns ``False`` after encountering the first out-of-order + item. If there are no out-of-order items, the iterable is exhausted. + """ + + compare = lt if reverse else gt + it = iterable if (key is None) else map(key, iterable) + return not any(starmap(compare, pairwise(it))) + + +class AbortThread(BaseException): + pass + + +class callback_iter: + """Convert a function that uses callbacks to an iterator. + + Let *func* be a function that takes a `callback` keyword argument. + For example: + + >>> def func(callback=None): + ... for i, c in [(1, 'a'), (2, 'b'), (3, 'c')]: + ... if callback: + ... callback(i, c) + ... return 4 + + + Use ``with callback_iter(func)`` to get an iterator over the parameters + that are delivered to the callback. + + >>> with callback_iter(func) as it: + ... for args, kwargs in it: + ... print(args) + (1, 'a') + (2, 'b') + (3, 'c') + + The function will be called in a background thread. The ``done`` property + indicates whether it has completed execution. + + >>> it.done + True + + If it completes successfully, its return value will be available + in the ``result`` property. + + >>> it.result + 4 + + Notes: + + * If the function uses some keyword argument besides ``callback``, supply + *callback_kwd*. + * If it finished executing, but raised an exception, accessing the + ``result`` property will raise the same exception. + * If it hasn't finished executing, accessing the ``result`` + property from within the ``with`` block will raise ``RuntimeError``. + * If it hasn't finished executing, accessing the ``result`` property from + outside the ``with`` block will raise a + ``more_itertools.AbortThread`` exception. + * Provide *wait_seconds* to adjust how frequently the it is polled for + output. + + """ + + def __init__(self, func, callback_kwd='callback', wait_seconds=0.1): + self._func = func + self._callback_kwd = callback_kwd + self._aborted = False + self._future = None + self._wait_seconds = wait_seconds + self._executor = ThreadPoolExecutor(max_workers=1) + self._iterator = self._reader() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self._aborted = True + self._executor.shutdown() + + def __iter__(self): + return self + + def __next__(self): + return next(self._iterator) + + @property + def done(self): + if self._future is None: + return False + return self._future.done() + + @property + def result(self): + if not self.done: + raise RuntimeError('Function has not yet completed') + + return self._future.result() + + def _reader(self): + q = Queue() + + def callback(*args, **kwargs): + if self._aborted: + raise AbortThread('canceled by user') + + q.put((args, kwargs)) + + self._future = self._executor.submit( + self._func, **{self._callback_kwd: callback} + ) + + while True: + try: + item = q.get(timeout=self._wait_seconds) + except Empty: + pass + else: + q.task_done() + yield item + + if self._future.done(): + break + + remaining = [] + while True: + try: + item = q.get_nowait() + except Empty: + break + else: + q.task_done() + remaining.append(item) + q.join() + yield from remaining + + +def windowed_complete(iterable, n): + """ + Yield ``(beginning, middle, end)`` tuples, where: + + * Each ``middle`` has *n* items from *iterable* + * Each ``beginning`` has the items before the ones in ``middle`` + * Each ``end`` has the items after the ones in ``middle`` + + >>> iterable = range(7) + >>> n = 3 + >>> for beginning, middle, end in windowed_complete(iterable, n): + ... print(beginning, middle, end) + () (0, 1, 2) (3, 4, 5, 6) + (0,) (1, 2, 3) (4, 5, 6) + (0, 1) (2, 3, 4) (5, 6) + (0, 1, 2) (3, 4, 5) (6,) + (0, 1, 2, 3) (4, 5, 6) () + + Note that *n* must be at least 0 and most equal to the length of + *iterable*. + + This function will exhaust the iterable and may require significant + storage. + """ + if n < 0: + raise ValueError('n must be >= 0') + + seq = tuple(iterable) + size = len(seq) + + if n > size: + raise ValueError('n must be <= len(seq)') + + for i in range(size - n + 1): + beginning = seq[:i] + middle = seq[i : i + n] + end = seq[i + n :] + yield beginning, middle, end + + +def all_unique(iterable, key=None): + """ + Returns ``True`` if all the elements of *iterable* are unique (no two + elements are equal). + + >>> all_unique('ABCB') + False + + If a *key* function is specified, it will be used to make comparisons. + + >>> all_unique('ABCb') + True + >>> all_unique('ABCb', str.lower) + False + + The function returns as soon as the first non-unique element is + encountered. Iterables with a mix of hashable and unhashable items can + be used, but the function will be slower for unhashable items. + """ + seenset = set() + seenset_add = seenset.add + seenlist = [] + seenlist_add = seenlist.append + for element in map(key, iterable) if key else iterable: + try: + if element in seenset: + return False + seenset_add(element) + except TypeError: + if element in seenlist: + return False + seenlist_add(element) + return True + + +def nth_product(index, *args): + """Equivalent to ``list(product(*args))[index]``. + + The products of *args* can be ordered lexicographically. + :func:`nth_product` computes the product at sort position *index* without + computing the previous products. + + >>> nth_product(8, range(2), range(2), range(2), range(2)) + (1, 0, 0, 0) + + ``IndexError`` will be raised if the given *index* is invalid. + """ + pools = list(map(tuple, reversed(args))) + ns = list(map(len, pools)) + + c = reduce(mul, ns) + + if index < 0: + index += c + + if not 0 <= index < c: + raise IndexError + + result = [] + for pool, n in zip(pools, ns): + result.append(pool[index % n]) + index //= n + + return tuple(reversed(result)) + + +def nth_permutation(iterable, r, index): + """Equivalent to ``list(permutations(iterable, r))[index]``` + + The subsequences of *iterable* that are of length *r* where order is + important can be ordered lexicographically. :func:`nth_permutation` + computes the subsequence at sort position *index* directly, without + computing the previous subsequences. + + >>> nth_permutation('ghijk', 2, 5) + ('h', 'i') + + ``ValueError`` will be raised If *r* is negative or greater than the length + of *iterable*. + ``IndexError`` will be raised if the given *index* is invalid. + """ + pool = list(iterable) + n = len(pool) + + if r is None or r == n: + r, c = n, factorial(n) + elif not 0 <= r < n: + raise ValueError + else: + c = factorial(n) // factorial(n - r) + + if index < 0: + index += c + + if not 0 <= index < c: + raise IndexError + + if c == 0: + return tuple() + + result = [0] * r + q = index * factorial(n) // c if r < n else index + for d in range(1, n + 1): + q, i = divmod(q, d) + if 0 <= n - d < r: + result[n - d] = i + if q == 0: + break + + return tuple(map(pool.pop, result)) + + +def value_chain(*args): + """Yield all arguments passed to the function in the same order in which + they were passed. If an argument itself is iterable then iterate over its + values. + + >>> list(value_chain(1, 2, 3, [4, 5, 6])) + [1, 2, 3, 4, 5, 6] + + Binary and text strings are not considered iterable and are emitted + as-is: + + >>> list(value_chain('12', '34', ['56', '78'])) + ['12', '34', '56', '78'] + + + Multiple levels of nesting are not flattened. + + """ + for value in args: + if isinstance(value, (str, bytes)): + yield value + continue + try: + yield from value + except TypeError: + yield value + + +def product_index(element, *args): + """Equivalent to ``list(product(*args)).index(element)`` + + The products of *args* can be ordered lexicographically. + :func:`product_index` computes the first index of *element* without + computing the previous products. + + >>> product_index([8, 2], range(10), range(5)) + 42 + + ``ValueError`` will be raised if the given *element* isn't in the product + of *args*. + """ + index = 0 + + for x, pool in zip_longest(element, args, fillvalue=_marker): + if x is _marker or pool is _marker: + raise ValueError('element is not a product of args') + + pool = tuple(pool) + index = index * len(pool) + pool.index(x) + + return index + + +def combination_index(element, iterable): + """Equivalent to ``list(combinations(iterable, r)).index(element)`` + + The subsequences of *iterable* that are of length *r* can be ordered + lexicographically. :func:`combination_index` computes the index of the + first *element*, without computing the previous combinations. + + >>> combination_index('adf', 'abcdefg') + 10 + + ``ValueError`` will be raised if the given *element* isn't one of the + combinations of *iterable*. + """ + element = enumerate(element) + k, y = next(element, (None, None)) + if k is None: + return 0 + + indexes = [] + pool = enumerate(iterable) + for n, x in pool: + if x == y: + indexes.append(n) + tmp, y = next(element, (None, None)) + if tmp is None: + break + else: + k = tmp + else: + raise ValueError('element is not a combination of iterable') + + n, _ = last(pool, default=(n, None)) + + # Python versiosn below 3.8 don't have math.comb + index = 1 + for i, j in enumerate(reversed(indexes), start=1): + j = n - j + if i <= j: + index += factorial(j) // (factorial(i) * factorial(j - i)) + + return factorial(n + 1) // (factorial(k + 1) * factorial(n - k)) - index + + +def permutation_index(element, iterable): + """Equivalent to ``list(permutations(iterable, r)).index(element)``` + + The subsequences of *iterable* that are of length *r* where order is + important can be ordered lexicographically. :func:`permutation_index` + computes the index of the first *element* directly, without computing + the previous permutations. + + >>> permutation_index([1, 3, 2], range(5)) + 19 + + ``ValueError`` will be raised if the given *element* isn't one of the + permutations of *iterable*. + """ + index = 0 + pool = list(iterable) + for i, x in zip(range(len(pool), -1, -1), element): + r = pool.index(x) + index = index * i + r + del pool[r] + + return index + + +class countable: + """Wrap *iterable* and keep a count of how many items have been consumed. + + The ``items_seen`` attribute starts at ``0`` and increments as the iterable + is consumed: + + >>> iterable = map(str, range(10)) + >>> it = countable(iterable) + >>> it.items_seen + 0 + >>> next(it), next(it) + ('0', '1') + >>> list(it) + ['2', '3', '4', '5', '6', '7', '8', '9'] + >>> it.items_seen + 10 + """ + + def __init__(self, iterable): + self._it = iter(iterable) + self.items_seen = 0 + + def __iter__(self): + return self + + def __next__(self): + item = next(self._it) + self.items_seen += 1 + + return item diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py new file mode 100644 index 00000000..521abd7c --- /dev/null +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py @@ -0,0 +1,620 @@ +"""Imported from the recipes section of the itertools documentation. + +All functions taken from the recipes section of the itertools library docs +[1]_. +Some backward-compatible usability improvements have been made. + +.. [1] http://docs.python.org/library/itertools.html#recipes + +""" +import warnings +from collections import deque +from itertools import ( + chain, + combinations, + count, + cycle, + groupby, + islice, + repeat, + starmap, + tee, + zip_longest, +) +import operator +from random import randrange, sample, choice + +__all__ = [ + 'all_equal', + 'consume', + 'convolve', + 'dotproduct', + 'first_true', + 'flatten', + 'grouper', + 'iter_except', + 'ncycles', + 'nth', + 'nth_combination', + 'padnone', + 'pad_none', + 'pairwise', + 'partition', + 'powerset', + 'prepend', + 'quantify', + 'random_combination_with_replacement', + 'random_combination', + 'random_permutation', + 'random_product', + 'repeatfunc', + 'roundrobin', + 'tabulate', + 'tail', + 'take', + 'unique_everseen', + 'unique_justseen', +] + + +def take(n, iterable): + """Return first *n* items of the iterable as a list. + + >>> take(3, range(10)) + [0, 1, 2] + + If there are fewer than *n* items in the iterable, all of them are + returned. + + >>> take(10, range(3)) + [0, 1, 2] + + """ + return list(islice(iterable, n)) + + +def tabulate(function, start=0): + """Return an iterator over the results of ``func(start)``, + ``func(start + 1)``, ``func(start + 2)``... + + *func* should be a function that accepts one integer argument. + + If *start* is not specified it defaults to 0. It will be incremented each + time the iterator is advanced. + + >>> square = lambda x: x ** 2 + >>> iterator = tabulate(square, -3) + >>> take(4, iterator) + [9, 4, 1, 0] + + """ + return map(function, count(start)) + + +def tail(n, iterable): + """Return an iterator over the last *n* items of *iterable*. + + >>> t = tail(3, 'ABCDEFG') + >>> list(t) + ['E', 'F', 'G'] + + """ + return iter(deque(iterable, maxlen=n)) + + +def consume(iterator, n=None): + """Advance *iterable* by *n* steps. If *n* is ``None``, consume it + entirely. + + Efficiently exhausts an iterator without returning values. Defaults to + consuming the whole iterator, but an optional second argument may be + provided to limit consumption. + + >>> i = (x for x in range(10)) + >>> next(i) + 0 + >>> consume(i, 3) + >>> next(i) + 4 + >>> consume(i) + >>> next(i) + Traceback (most recent call last): + File "", line 1, in + StopIteration + + If the iterator has fewer items remaining than the provided limit, the + whole iterator will be consumed. + + >>> i = (x for x in range(3)) + >>> consume(i, 5) + >>> next(i) + Traceback (most recent call last): + File "", line 1, in + StopIteration + + """ + # Use functions that consume iterators at C speed. + if n is None: + # feed the entire iterator into a zero-length deque + deque(iterator, maxlen=0) + else: + # advance to the empty slice starting at position n + next(islice(iterator, n, n), None) + + +def nth(iterable, n, default=None): + """Returns the nth item or a default value. + + >>> l = range(10) + >>> nth(l, 3) + 3 + >>> nth(l, 20, "zebra") + 'zebra' + + """ + return next(islice(iterable, n, None), default) + + +def all_equal(iterable): + """ + Returns ``True`` if all the elements are equal to each other. + + >>> all_equal('aaaa') + True + >>> all_equal('aaab') + False + + """ + g = groupby(iterable) + return next(g, True) and not next(g, False) + + +def quantify(iterable, pred=bool): + """Return the how many times the predicate is true. + + >>> quantify([True, False, True]) + 2 + + """ + return sum(map(pred, iterable)) + + +def pad_none(iterable): + """Returns the sequence of elements and then returns ``None`` indefinitely. + + >>> take(5, pad_none(range(3))) + [0, 1, 2, None, None] + + Useful for emulating the behavior of the built-in :func:`map` function. + + See also :func:`padded`. + + """ + return chain(iterable, repeat(None)) + + +padnone = pad_none + + +def ncycles(iterable, n): + """Returns the sequence elements *n* times + + >>> list(ncycles(["a", "b"], 3)) + ['a', 'b', 'a', 'b', 'a', 'b'] + + """ + return chain.from_iterable(repeat(tuple(iterable), n)) + + +def dotproduct(vec1, vec2): + """Returns the dot product of the two iterables. + + >>> dotproduct([10, 10], [20, 20]) + 400 + + """ + return sum(map(operator.mul, vec1, vec2)) + + +def flatten(listOfLists): + """Return an iterator flattening one level of nesting in a list of lists. + + >>> list(flatten([[0, 1], [2, 3]])) + [0, 1, 2, 3] + + See also :func:`collapse`, which can flatten multiple levels of nesting. + + """ + return chain.from_iterable(listOfLists) + + +def repeatfunc(func, times=None, *args): + """Call *func* with *args* repeatedly, returning an iterable over the + results. + + If *times* is specified, the iterable will terminate after that many + repetitions: + + >>> from operator import add + >>> times = 4 + >>> args = 3, 5 + >>> list(repeatfunc(add, times, *args)) + [8, 8, 8, 8] + + If *times* is ``None`` the iterable will not terminate: + + >>> from random import randrange + >>> times = None + >>> args = 1, 11 + >>> take(6, repeatfunc(randrange, times, *args)) # doctest:+SKIP + [2, 4, 8, 1, 8, 4] + + """ + if times is None: + return starmap(func, repeat(args)) + return starmap(func, repeat(args, times)) + + +def _pairwise(iterable): + """Returns an iterator of paired items, overlapping, from the original + + >>> take(4, pairwise(count())) + [(0, 1), (1, 2), (2, 3), (3, 4)] + + On Python 3.10 and above, this is an alias for :func:`itertools.pairwise`. + + """ + a, b = tee(iterable) + next(b, None) + yield from zip(a, b) + + +try: + from itertools import pairwise as itertools_pairwise +except ImportError: + pairwise = _pairwise +else: + + def pairwise(iterable): + yield from itertools_pairwise(iterable) + + pairwise.__doc__ = _pairwise.__doc__ + + +def grouper(iterable, n, fillvalue=None): + """Collect data into fixed-length chunks or blocks. + + >>> list(grouper('ABCDEFG', 3, 'x')) + [('A', 'B', 'C'), ('D', 'E', 'F'), ('G', 'x', 'x')] + + """ + if isinstance(iterable, int): + warnings.warn( + "grouper expects iterable as first parameter", DeprecationWarning + ) + n, iterable = iterable, n + args = [iter(iterable)] * n + return zip_longest(fillvalue=fillvalue, *args) + + +def roundrobin(*iterables): + """Yields an item from each iterable, alternating between them. + + >>> list(roundrobin('ABC', 'D', 'EF')) + ['A', 'D', 'E', 'B', 'F', 'C'] + + This function produces the same output as :func:`interleave_longest`, but + may perform better for some inputs (in particular when the number of + iterables is small). + + """ + # Recipe credited to George Sakkis + pending = len(iterables) + nexts = cycle(iter(it).__next__ for it in iterables) + while pending: + try: + for next in nexts: + yield next() + except StopIteration: + pending -= 1 + nexts = cycle(islice(nexts, pending)) + + +def partition(pred, iterable): + """ + Returns a 2-tuple of iterables derived from the input iterable. + The first yields the items that have ``pred(item) == False``. + The second yields the items that have ``pred(item) == True``. + + >>> is_odd = lambda x: x % 2 != 0 + >>> iterable = range(10) + >>> even_items, odd_items = partition(is_odd, iterable) + >>> list(even_items), list(odd_items) + ([0, 2, 4, 6, 8], [1, 3, 5, 7, 9]) + + If *pred* is None, :func:`bool` is used. + + >>> iterable = [0, 1, False, True, '', ' '] + >>> false_items, true_items = partition(None, iterable) + >>> list(false_items), list(true_items) + ([0, False, ''], [1, True, ' ']) + + """ + if pred is None: + pred = bool + + evaluations = ((pred(x), x) for x in iterable) + t1, t2 = tee(evaluations) + return ( + (x for (cond, x) in t1 if not cond), + (x for (cond, x) in t2 if cond), + ) + + +def powerset(iterable): + """Yields all possible subsets of the iterable. + + >>> list(powerset([1, 2, 3])) + [(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)] + + :func:`powerset` will operate on iterables that aren't :class:`set` + instances, so repeated elements in the input will produce repeated elements + in the output. Use :func:`unique_everseen` on the input to avoid generating + duplicates: + + >>> seq = [1, 1, 0] + >>> list(powerset(seq)) + [(), (1,), (1,), (0,), (1, 1), (1, 0), (1, 0), (1, 1, 0)] + >>> from more_itertools import unique_everseen + >>> list(powerset(unique_everseen(seq))) + [(), (1,), (0,), (1, 0)] + + """ + s = list(iterable) + return chain.from_iterable(combinations(s, r) for r in range(len(s) + 1)) + + +def unique_everseen(iterable, key=None): + """ + Yield unique elements, preserving order. + + >>> list(unique_everseen('AAAABBBCCDAABBB')) + ['A', 'B', 'C', 'D'] + >>> list(unique_everseen('ABBCcAD', str.lower)) + ['A', 'B', 'C', 'D'] + + Sequences with a mix of hashable and unhashable items can be used. + The function will be slower (i.e., `O(n^2)`) for unhashable items. + + Remember that ``list`` objects are unhashable - you can use the *key* + parameter to transform the list to a tuple (which is hashable) to + avoid a slowdown. + + >>> iterable = ([1, 2], [2, 3], [1, 2]) + >>> list(unique_everseen(iterable)) # Slow + [[1, 2], [2, 3]] + >>> list(unique_everseen(iterable, key=tuple)) # Faster + [[1, 2], [2, 3]] + + Similary, you may want to convert unhashable ``set`` objects with + ``key=frozenset``. For ``dict`` objects, + ``key=lambda x: frozenset(x.items())`` can be used. + + """ + seenset = set() + seenset_add = seenset.add + seenlist = [] + seenlist_add = seenlist.append + use_key = key is not None + + for element in iterable: + k = key(element) if use_key else element + try: + if k not in seenset: + seenset_add(k) + yield element + except TypeError: + if k not in seenlist: + seenlist_add(k) + yield element + + +def unique_justseen(iterable, key=None): + """Yields elements in order, ignoring serial duplicates + + >>> list(unique_justseen('AAAABBBCCDAABBB')) + ['A', 'B', 'C', 'D', 'A', 'B'] + >>> list(unique_justseen('ABBCcAD', str.lower)) + ['A', 'B', 'C', 'A', 'D'] + + """ + return map(next, map(operator.itemgetter(1), groupby(iterable, key))) + + +def iter_except(func, exception, first=None): + """Yields results from a function repeatedly until an exception is raised. + + Converts a call-until-exception interface to an iterator interface. + Like ``iter(func, sentinel)``, but uses an exception instead of a sentinel + to end the loop. + + >>> l = [0, 1, 2] + >>> list(iter_except(l.pop, IndexError)) + [2, 1, 0] + + """ + try: + if first is not None: + yield first() + while 1: + yield func() + except exception: + pass + + +def first_true(iterable, default=None, pred=None): + """ + Returns the first true value in the iterable. + + If no true value is found, returns *default* + + If *pred* is not None, returns the first item for which + ``pred(item) == True`` . + + >>> first_true(range(10)) + 1 + >>> first_true(range(10), pred=lambda x: x > 5) + 6 + >>> first_true(range(10), default='missing', pred=lambda x: x > 9) + 'missing' + + """ + return next(filter(pred, iterable), default) + + +def random_product(*args, repeat=1): + """Draw an item at random from each of the input iterables. + + >>> random_product('abc', range(4), 'XYZ') # doctest:+SKIP + ('c', 3, 'Z') + + If *repeat* is provided as a keyword argument, that many items will be + drawn from each iterable. + + >>> random_product('abcd', range(4), repeat=2) # doctest:+SKIP + ('a', 2, 'd', 3) + + This equivalent to taking a random selection from + ``itertools.product(*args, **kwarg)``. + + """ + pools = [tuple(pool) for pool in args] * repeat + return tuple(choice(pool) for pool in pools) + + +def random_permutation(iterable, r=None): + """Return a random *r* length permutation of the elements in *iterable*. + + If *r* is not specified or is ``None``, then *r* defaults to the length of + *iterable*. + + >>> random_permutation(range(5)) # doctest:+SKIP + (3, 4, 0, 1, 2) + + This equivalent to taking a random selection from + ``itertools.permutations(iterable, r)``. + + """ + pool = tuple(iterable) + r = len(pool) if r is None else r + return tuple(sample(pool, r)) + + +def random_combination(iterable, r): + """Return a random *r* length subsequence of the elements in *iterable*. + + >>> random_combination(range(5), 3) # doctest:+SKIP + (2, 3, 4) + + This equivalent to taking a random selection from + ``itertools.combinations(iterable, r)``. + + """ + pool = tuple(iterable) + n = len(pool) + indices = sorted(sample(range(n), r)) + return tuple(pool[i] for i in indices) + + +def random_combination_with_replacement(iterable, r): + """Return a random *r* length subsequence of elements in *iterable*, + allowing individual elements to be repeated. + + >>> random_combination_with_replacement(range(3), 5) # doctest:+SKIP + (0, 0, 1, 2, 2) + + This equivalent to taking a random selection from + ``itertools.combinations_with_replacement(iterable, r)``. + + """ + pool = tuple(iterable) + n = len(pool) + indices = sorted(randrange(n) for i in range(r)) + return tuple(pool[i] for i in indices) + + +def nth_combination(iterable, r, index): + """Equivalent to ``list(combinations(iterable, r))[index]``. + + The subsequences of *iterable* that are of length *r* can be ordered + lexicographically. :func:`nth_combination` computes the subsequence at + sort position *index* directly, without computing the previous + subsequences. + + >>> nth_combination(range(5), 3, 5) + (0, 3, 4) + + ``ValueError`` will be raised If *r* is negative or greater than the length + of *iterable*. + ``IndexError`` will be raised if the given *index* is invalid. + """ + pool = tuple(iterable) + n = len(pool) + if (r < 0) or (r > n): + raise ValueError + + c = 1 + k = min(r, n - r) + for i in range(1, k + 1): + c = c * (n - k + i) // i + + if index < 0: + index += c + + if (index < 0) or (index >= c): + raise IndexError + + result = [] + while r: + c, n, r = c * r // n, n - 1, r - 1 + while index >= c: + index -= c + c, n = c * (n - r) // n, n - 1 + result.append(pool[-1 - n]) + + return tuple(result) + + +def prepend(value, iterator): + """Yield *value*, followed by the elements in *iterator*. + + >>> value = '0' + >>> iterator = ['1', '2', '3'] + >>> list(prepend(value, iterator)) + ['0', '1', '2', '3'] + + To prepend multiple values, see :func:`itertools.chain` + or :func:`value_chain`. + + """ + return chain([value], iterator) + + +def convolve(signal, kernel): + """Convolve the iterable *signal* with the iterable *kernel*. + + >>> signal = (1, 2, 3, 4, 5) + >>> kernel = [3, 2, 1] + >>> list(convolve(signal, kernel)) + [3, 8, 14, 20, 26, 14, 5] + + Note: the input arguments are not interchangeable, as the *kernel* + is immediately consumed and stored. + + """ + kernel = tuple(kernel)[::-1] + n = len(kernel) + window = deque([0], maxlen=n) * n + for x in chain(signal, repeat(0, n - 1)): + window.append(x) + yield sum(map(operator.mul, kernel, window)) diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-39.pyc index e0112f22e693ab46b7b35f45f3a447e2369de2cd..14e0b948ac8600b196ff919f8159f736117fef84 100644 GIT binary patch delta 35 pcmdnSx{H-Nk(ZZ?0SNdmJ8a}uX5vb7v5E<(%qYpvn{2|=1OSl}2_ygj delta 31 lcmdnRx{Z}Pk(ZZ?0SE%)?Kg5OGqEMPSj7}nPPSlb0sv~+2UP$7 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-39.pyc index 7769136072617b8ffc3e40f5842050de12aab71f..17bd6a8f83d4fee474b43d0f54e16edfba80c670 100644 GIT binary patch delta 35 pcmbQkvVeswk(ZZ?0SE%)?Kg6}FtH`LSj7}nZjNNCVPw2D`5N;A0KW?h6#xJL diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-39.pyc index f5bc0f2220d00f931a054b052b5688fc64759b5b..033239e9441492f0de3c65662618e30af9d85b30 100644 GIT binary patch delta 36 qcmX>jc0r6gk(ZZ?0SNdmJ8a}mWaP?lv5E<(%qYpv+g!wWixU8=b_#C* delta 32 mcmca0c1Dalk(ZZ?0SE%)?Kg5KGP0$(Sj7}nZZ2cI#R&j`IS8Nt diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_typing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_typing.cpython-39.pyc index b19d7a975746da82201c2154d703868c4404b4e0..cbe4a7f14b3ca7632f0827dd44d7813d0e4e95b5 100644 GIT binary patch delta 35 pcmX@jeV&^;k(ZZ?0SNdmJ8b0s&cc=AViglmnNgCTH<^R=FaV|w3Pu0` delta 31 lcmX@leVUs)k(ZZ?0SE%)?Kg6NXJJclv5G0EoXo>|7yx^$2zLMg diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-39.pyc index f9117b9cde7f2bcb3357cbc389d9e3d4f534bf0b..954b09e567fd97bfc7a4eb5b5716dbc38afd5676 100644 GIT binary patch delta 80 zcmccMam9l>k(ZZ?0SNdmJ8a~B%F31EViglmnNgCTxA`0Eb#cb1&F5sTm>E}0{=gVo4D{P+QdG3yP79w>E1jsWAZn8RZ%D delta 76 zcmccOalwN-k(ZZ?0SE%)?Kg5iWo1inv5G0E-2996x;W#l&6i}Ym>E}2e#j#+SygcX f|1I|Tb8;JfUwk=vY^E8WE^CZIB-BtLJn2lHNUktp`~deQE_TYSZYymW`16g6Hw;Xb82#mMi$ZgKdmh55`Q&73thk38J$SwBxmx}=i_%1ta6Hu8^lApJUd6B91E%t(fWHXbT)FL@X z28N<#K$S)EK-MkRVq;5#id*c7iABj7W+p{z7&f1^=;mOInjGmE$arh>YRBD-0NPL= AeEmx}=i0^{vBa=&L{i*>PzDX84c!o0{-yJ!ti;udSMv86#p(J~O5 uJu$H;Im67PNS+bID=0`dGs#IUl4IO_(W0A!@z&&6$3VuY&FdX^GXelqVja5x diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-39.pyc index 05dc68cacd2aa3bd4af1262dc78a17b20c44b96a..5f055483fb082d7983a3a2300298535d6317dfe2 100644 GIT binary patch delta 42 wcmaFM^O1);k(ZZ?0SNdmJ8b0M%*d7GViglmnNgCTxA_R86bob2#TQVN8jxRH;*wehlDfqcT$<#QpPZNj=5ZpJY|gm_-l>(h ZczjaR6O${UJeH*V{G3~xFB|DH0su1MGT#6I delta 139 zcmZq4XvpABtYQi(H!ox9*JZpl+04i(K8n{fFD)}Kvm`a7 zvLLm%$PTEwC<91D@dXs62ILo)xTKbWq@s9&OOt%^lM{2mJWd3Y%{jNgJGC;3$0s#C VF}V`LyTy`}pPv)8`MQxVBLL7vE*Jm+ diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/pyparsing.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/pyparsing.py index 4aa30ee6..1333c00e 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/pyparsing.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/_vendor/pyparsing.py @@ -1625,7 +1625,7 @@ class ParserElement(object): (see L{I{parseWithTabs}}) - define your parse action using the full C{(s,loc,toks)} signature, and reference the input string using the parse action's C{s} argument - - explictly expand the tabs in your input string before calling + - explicitly expand the tabs in your input string before calling C{parseString} Example:: diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__init__.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__init__.py index 570e6957..b966dcea 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__init__.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__init__.py @@ -1,15 +1,6 @@ -__all__ = [ - 'alias', 'bdist_egg', 'bdist_rpm', 'build_ext', 'build_py', 'develop', - 'easy_install', 'egg_info', 'install', 'install_lib', 'rotate', 'saveopts', - 'sdist', 'setopt', 'test', 'install_egg_info', 'install_scripts', - 'upload_docs', 'build_clib', 'dist_info', -] - from distutils.command.bdist import bdist import sys -from setuptools.command import install_scripts - if 'egg' not in bdist.format_commands: bdist.format_command['egg'] = ('bdist_egg', "Python .egg file") bdist.format_commands.append('egg') diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/__init__.cpython-39.pyc index 8ba666de389a56f9391acd0de5ecbbc49b325729..6a6502d4f9bb23dd29b96bb84323b3051f4384d9 100644 GIT binary patch delta 222 zcmZo>{mjId$ji&c00exO9TIOcOyrZPw*m4}7*ZH>7;+h-7#TrqrW~dyrWEE>#w_MC z#v+px79fiyh1rGyB(i`tg?S-RT{L4fQwmcsgC^@skb#GK)+6ZZW5(r)x4r zae}$=Ku(oFKxIirex8CJkfV^6nUku?79|c+Tv{TXnNzHnoS&PUn3tjl)=|U+H0~C2 uab@x3D~viKY(QQSi1-!lViglmnNgCTH(7uwkq_h#9!3r(E=Dd!9wq>leK&^y literal 643 zcmY*W%Wl*#6t$hnW2VziRUz1Rhq55uql$+F5(tEfx?wap5c)YL|E>g*XR!Shgf$ZAJEllrK{Rd& zC3wV%PG|z>L{Hk3rog3=e9U_6UWp7)F49XhGG7ake#02ukefs#*Qm_Pdokr&aUZ8k zp?qL+y*@x^TY#O?g2~Sz7CUH%mgZ8twc&yZ)A%^s_0@m{oo;6s zd-w&=r=K1Vl^X;HA-*)2kuen$39y-1$mrSx#fl7>vRgeK0C@L1|w# zrfvB~R9hu?2Bk6agQsWEc4vbzcXxIsiB;{@%(%63BYq%vAJn$t_lFmc zYdh2qoJ?C^H@Bc$zkc)bIfJRWm9DOOx#{b-YFT>~gt-tmILKd8W1 d1;15XwnlVXKEdGSPaqWe92aCxW_X6@d3 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/alias.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/alias.cpython-39.pyc index 984a526db6e79d41ec34a95088622a563a6b5ce5..99111a75fc093eabd2c064638582ba7ca6efb074 100644 GIT binary patch delta 36 qcmdlfv{#5bk(ZZ?0SNdmJ8b06VdRQ%v5E<(%qYpv+g!`IhaCW<_zEWg delta 32 mcmdlhv{Q&Xk(ZZ?0SE%)?Kg7gFtUZXSj7}nZf<1U!wvv@hX_~z diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-39.pyc index 04d212b224992ef8c6b63c288c7df02152b98126..5ace73bc2d79ea9812ae34fafbe3e1e99486c5a4 100644 GIT binary patch delta 1374 zcmXYxe@t6d6vsKGozU`Q3`U`){19k;K!7rxhG;;tqT7^hB8q^Pwmewl;}!2KZfzE} zu^((q!|*I|F)){yWs(21PV^s*i6;JK)QK@KnrIfCCPw|kWQj4E_j_yq_`Gw!=iGDd zJ@?+;(r@dYSZS%dK>o^Z_P^tK-r=6u(>rl6b2yzcbEadXm~5^s`Epyoj1Z6J{w(>O zsE@xdyPqOlQNBora+k`#C5rQl6{9qs`?SJWxMQ!3wcYXgq%jpu7|FOez<*U8rTv`T z`NN(#oX*+Ql>RmeHE>TQt#oucY3P<{lU{9?m_{`xFb4DheZUY9;pJ){jq|nY-TMY0 z)Bw)`NGLSmF$wz~q0bqygf2!gDv4*(dNh%mos+f1Q;3=b3V{^2dRHmUo8AFR=Kk@H zILP3Gz9TfopZfwkRGn%WXuGEL`237G$#;BD(h5iX57Aj(@L#7>9ISgdbRNkffLi|< zO!36bn32iqQGI46znLtbuWOVuHtI||$F+ew4XQvtqKnW9L-s_}Bh9nG2zS+w(L!#y zevLd=pzH@`Io!B6sCKUAtGa{mpj)Z)1!LZ@Yb<`KQfu?$?`KN{QU6|QXxP=+6Dy3zSKV!jPY=vvV$UL|o)_OZxzp zC9p-iC=oNGmV{V^rjEpeaa7)^c|+HV#k+815$v2cVl%d5+7#;?_E*Z|3I{7`jf-1D zlHt~C&j`d?5^~e;!M*`h0#$%&E2`Vhcq(OxlMq{gR^YgV=E_%GhwuULA$J68Xptkq z23pMN!PDeX$5jF6mE7NYRSmoGq8Bpuj4US^-r%oa83)zO*%`IDoj9fG2WSJ6>?m%Y3(ULq6+` zuD}CtLRWh_0ZVO6bx37@O={XUo3i4tv}_kHoh6s|Zk!m+TZ6R-sLQem3msQI5(!vKvXfrE*fabeGKOQB delta 1447 zcmYL}TWnNC7{@z%Dcjxc4cgsiyW0!Btfy_D1tF#?RZ`K`v=OXOR%O|3&#o(HFMekm zx>c~PrFdg4e8x1P5Fd;N9!SU$H1Wk~OnlIUAkpL`CPqbk;7Lt1F)_}6*2I1Io&Wr2 z=9`&szMVVzPr5HrTkEZozy0x%tG;I))zhQH&lE})IWE_T7)Sg!sz+omJ!JjvzbnKZ z{-N$(G0M&L%i;-Zz5ZJv5}a?G7BTC~#*lOKV{)wRP0nSE+4zi+Nzx?$(KIi{IotgG zXab$CY<^b1BuF*9vl+7(Ph||wV%BFSmXmmbowdK=f4v8wJ$B?bBd?wr>XIu&A#A%L1{%ltZAj`G~sW4=S(^Pw?-n?kk*TF*%MFA8AdLV)v3&% zb_Bx6SY@?Wq|$se4C6K6b^fiRPrSjA&WM=j`#Y~~dla_H-chI+@Fs8ySO!i5CxCgY zZEH|8Wu>0foYXGAwks#MK=1Ha*KlM_8pEQh%B+*3%Ha`p!Xv!GFG*|sZr2xEFm>M) z9h090*S13GIK9R5-TlvFr-Y;1o|!~0Zb}fMk-91$+HqNHbB3-IHN(J>$=ef2g>N+naFE%vuM9-OnFTf`WnJNqVLtqQg1gIOq25na| zpEqa`W;f6SoRrYql})K#d<6Gn9_(!qOFY)wE|#oJ?~3rLn{Gts1?#V9r)W@tr(nDY z9AZt|El%=LEgD3*X|Qw41CBCS2iw*u<>lD}dw)UW8SKrMrYQlEPLL)Z<-NIxi zeFt6U#{Q7F#RL5j$+b;Qe5C(w=xa>y$iGxEm8Wc_SX>ys!fjhy?ztxAI_}XUMU@CR zT=EtPuI8di`Jn>vxb@z^5r>##=l09;Rk*S}vg;yzb*`78)ZtW?RP?jb)2eN;KxwIL zH;UGz^0~o~e0W+1$p`zt_k!042U04xwYGmDQ&10!s`A?yWC969@!%mK-888P?^oa# z;12L3pu+xN7pf$FMu#eiRqh*#id8-^^mH>4Q@Q$cP@TXH{%q)_k(-d;NZ4+(U}TE) fJ`7c(s3uwhRQX(o!X2oLQ4(rZ<~7J~?|AZG>Jev* diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-39.pyc index 35aade7403877c67b1965f3f485d6ebc787e2b24..226325160b887feb1455822600fea6afea7681e2 100644 GIT binary patch delta 36 qcmX@ib)1Vkk(ZZ?0SNdmJ8a~ZW#Wo)v5E<(%qYpv+pNbV$_xOV$Oz~F delta 32 mcmX@kb(o7gk(ZZ?0SE%)?Kg7EGO_^5*uW_V06C8lg8%>k diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/build_ext.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/build_ext.cpython-39.pyc index 4e937dba05091f451bbbcf791aab03f9661d9b6b..48420b4890c6fb266e206e4e7e3c45e68f767f53 100644 GIT binary patch delta 1323 zcmZuwOKcle6rDFe8~>8nP93{|<2VVpkch@W6dEL?5|ct8X`B+rSRG9|rm^dv-aHpv z%_tO$AOsZ9MJ!N-Y+!-dMP^qaK@G_-C5XmeeH$(N=Al8xM2_ zEtL&*#jL=Bd?>jbqI-@`zO8fFs*_8W%TO#eBB0iivO-FIEj>F=d5QmwPqe zH9|6QEHF*pgpGhrPQ#CZhaNo1i_V<;gOyV4f~m2(X0&R0wRDa?gS8BT7hws~10N~R z^YHcF-hf3^9oa?54K+vsz8(5lS?9#3&!BFu+3 zlrpbe?|m2^C4)KqL!@i`)0g<{;hTXl*@GLym;Go)qqpl&Ju>6{37IN~OH*(>5`*hU zCTCA0=d=K=4%Q^;wH7^xX$b*6XbmBTu)*PbNJL&B%V0-lqpL_d8V4K=<6IxUi`-29 z=Ss7vI}|&*2Ip?TFC(ql!`Vs)tC2T#vzS+2tYK&Gu*ctiN4qM#6)nXbQ}oM+G>xAX z&1B6@Q>!;wqsh#D2*<9HRoIO^K>q0M$94&^dhgu*x2W1^p~Fr*NpjE~3Bi}~X_AMV z@uS{Xur!5WLvZxOy-x1v@0iLQ*Zc(+M!%lM14FUT6dOvheH1(8Y#7BIp-qGq!W?W* zM4*uvCK1?4oaI~jTVj6r4J(H7e12K_H~t4i+&J_A delta 1175 zcmZuvO>7%g5Z>9p82=@4nz(jKaqUEr0Y{BX38h692q%=bA!+*KCWWnI8@lPnj^4gj zHF;L4Oc4hPg=u?2Rni+$s0e#PAjAcM;DQiRsU@TcBm@!{B#uS!W(y4m_G!QUX6BoD zJM-QT2U-WBrAQ>G$Y;vhTly)#7QLdG#it)XvDoldwO!`<4`hfd%ODg1D{4~}lFh4U z6}C!W0STq4aZP9yXsPvKuD6t?E_7DpMn!Ew(-3M!;ifQJ5K=CxQmqP=RB_38htPPS zrLtG}ee=QPkWg3PgxWNlnyejOjtG;_MOV~mg?GyBwD~T!>I=L75q309-;RlniYCms zLRul;tUfUlU2Is6ysJ*qS~vHny+$vQ}|&*&a3^dt)P*3nkMmAbDGJ zspG-vOaG2OaV zJ;(9;P^x#U3@H$Xpj=&`LjYnB#NP00xp5h2o9-#co^#n#(s&Q<)=fyxd`J>|PQsG+ zW%y%&0=^m@hKuM$n=pwZo!cL#Jpa$yU5;Hl?OMEURT{O@f?a0MQmjDW_p%=^bzV1) zNc)1fy-R?3l0xJ7VfP};VkUOOI4T|2@vGRSz=UL3gB8%~IcU5jjgN4xrybfTHjdXe z9XD(l`PBPkQwjpdC_`n_xTSBiaabDP;I6(45h~>O;>W(|%bVYl$HBk)3Zs)mX`+m> z@3x_pY7I6=<|zVy3=72kSrjGv8kgd;FoCz?qlu||nvHq6()S$>ZT>BDuPQr4x(%^k zt1f-F@zF%%KR>C-20lrof)rb)90z|+*f52Y$@}3J){^f^9_oJxe)LBB*8rBhU$^|O znu4S!as7b|978?z-7{*Bae{MrbK3}XF_Zhv^Q#GWU35ih3? z^_L~x3X0-}B~c8zhqUxNtc-uA--OfnMkZ;FQNlC0ntAZCw}@UQ_}`)wc$?rI0wlOX va22BiX@hpl;m&~qob{Fl@?iQ`aUXhvgHXoXgA4Jgn67}o?t~+{_Amb%Ctemf diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/build_py.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/build_py.cpython-39.pyc index e72287070b2a31d759a2520d3e1c9df70d4ce3d9..d36812cdb7f5b9e15556916b0fe5286f21e37dbf 100644 GIT binary patch delta 2158 zcmZuyU5pb|6rMYsPN(hkXG^zby9*RBN?CV7euChF3%fuNO%MZQ%j!7o+;%JNOuaLO z1)`e>CMG5XauZ@qltdnkF(#V67&IY1nE1j2!KaB2#wUN{qfsOAoI7m0RNKrq_nvd^ zx#xWM+%vz;e7-+vCK53Te#v{&<_{aLCCA7&*T(6RC0R-{)k>GsM7ofMS-3gW%9Jxi zIwjdfMWUeg$R)X)nUidJt7K_b^s-dWf-YvoK^Ld$D`A?sq?E&! zZY4lBY=vHsO39ya?-KEqdef=ETdz9yS;}~V#L}sb-FUS_4GIF6Qk!SVED7^D@_bf> zRSe;;)3bZ#kDXue9Gl-F^CZLb@{tM5NT^pp6lGz6A$VLFKqF$#uc`(9p?q?p=aiwX zpJq((I8|ug;$8Uw-8i{~xaJLbVJ<>g`o+ZzTh}NRb zIsjjxnS!#08D04Gs*OAjo(geTVDA` zVplv^iK;z(cXIcLhQo)6Wz!(5cHd6sNLp|jY>b9``DdwO3eVh+m=(8edJC+;zfX$YitYJ4TQ20WM21F`Y-`L zZww8qN6@IiZw(dlNUfhTU6(S?V6B1H{Z;XLcf+1)dgBTW3) ztspaTI~X|q79JOqRb-iH_e&ak0w!z*VGLmw;UK~x06zqE!W0;RWiP3qvPDeKf~w3P zFBC`7DQxe-D+pKYc@(B!ck6{u$&Lr~Kg<;ip?w=cTw`$#y=Z^rN5^Jn`XN07b|uAE z+%~QD?^s!9<~b-2LDmDZ`#k|u`;Olodul0;yXXiB06$_FmQythhTWMxim(X*o0w=& z4BLt52MlkbsA~2Sjqp-af`1Lj8B-h=r z?l@WQPZx@7$VL86u{ezvja@{ap_W@8EX@<3_#GY>`ILxG6r#&|ME+CJ80tzn{&#Wu z1a1>ltsvaN>FWpQ38poTfWT7qRdrTMnZ}1BOD%6y8`rx*0#6 ne)QmCmA1WxV~dZV*m*^y!7=jg`qB_YCzCW_HmoVxCF$h9&xgEs delta 2506 zcmZuzO>7%Q6y8~{?e$L_*L4z-wAB5hbz9QXMzo<(+mQ5+(xR3^RMTp;@s87N?6vcD zoi>q6gi;U}klHyRAq2D+!~rB8a-~))vJ*c9E?Sd-Rh#Vyh-)Z-Gg320|Ji zUq>(*7~;0>?`SgtImw=iJ;$x9;0E?gnfI-_YYei@BcWS5>l63FZx2S$(9Qn@&TVc6 zkp*^I#ju`yo3A&)*ML@53#3yaU<2cF!BoJ)-jM#-xyvBNkw)4Y@FXK7XF zRy5=|F23u{^=9#>jM_7P%?>WZpt#>Ve35n>b|B>As{TMB!x+I4f(Zm^u7(Y3X&CjP zNHfwvHI!h4{JKKfgmZqgmOjo-lSP_*cGhyeQgtabQd`WgffKZ75TTHDy<)lUaI0n) z=j>Uo^a8Xgve))~4uJ){YzOWFhl9e%?Cn#zcal3qRO8}QW@x)gB%u;1=#^5z#7HeH zysy$KM7V1eD-Q0^JDH(wS?ordH^i42Z-g|~O6YMaPd%#X_nOmdk1@9I_6J!u)Hy6Y z#ml@nx0(|c`)=QbNNW?tK>vo#uTg$xvFZif!{gLdJ{zs?iwphBlS=OfSQJu+J>zoo>iopUXSv6()!@+g zVrsCy+%7ye1GQ8y;VK!Lv7J_h)NALF^d3GwMQ7+bGylz-um=b5Ji#!*B*7HHQ3M(C zc_7nP-E-&b+~O!DpK}kFwKGJ`V;^iqcuI^8Z5gISF%X|fRN(6EFW~T-ra$yK8-1`h zk5&yr4={6WmFh%Nx@0YrNPwdW9s|S5Z5vZ2xN&l;khs*L4S% z>3)L*K@vemEz7AEEeoi(!&ZWA1k~_UGXv@}Ky3o(fC5P#E)kI6lv-N4pd@9|$JXo? zD?GSdby}rW$+RKSYF%_W42qA}?_8!|MIB-Fqjm@fMSOe*A<$N|>v}`K!mfuJ%wct` zQlNhr!WpBXeWXummonFlMyO$|Fs3z(SMg4s-{fs?XlU7l7Dkrq;YPTjFEAKK&v4sw zS(_hs7+$~n(uo(bG3Q#_o#SO*p;NXiS3?zZSa7}BTooJ+Be`>Es?2c6+2wNEF-HQ) zkwQk!zEbeH~x(Cl!jCw`N3GgqbXZPh2+<=?nGdkL%B|Ep5rkuv6q#TJL53>+Z1)?_qXEmT`NXHOBr{l2Pe%3oh6!ZLvorZV zac9Gk5!%^S^H8t$X!sTZ?JT@WP$E#uPK&YJ@NW7CM#hd_D{|GKAWL@2QBgk>iqexQ WUeD#%;9*W<2-&b{WS6z+c;-L;i5Ri~ diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/develop.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/develop.cpython-39.pyc index 5e5472bcf1ef86cb462539980742d3335b2a9f26..8cb92f3a3aca3a3c19f9dadffdc0398300f63833 100644 GIT binary patch delta 36 qcmZ2yw8@A&k(ZZ?0SNdmJ8a~3VCIT)v5E<(%qYpv+Z@PzR}=uJL<%kd delta 32 mcmdmFw9be-k(ZZ?0SE%)?Kg5eFtdfZSj7}nZVqL>D+&O8%Lrcp diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/dist_info.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/dist_info.cpython-39.pyc index 0565df04d0d86f3020a0138ef87690c8925f06ed..bd796873a9dbe8873c6da0ac4b8a8efd8ffcf924 100644 GIT binary patch delta 36 qcmaFK^_Gh}k(ZZ?0SNdmJ8a~>!N?WkViglmnNgCTxA`Sw12X`*01FcU delta 32 mcmaFM^^%J_k(ZZ?0SE%)?Kg7YU}TGMv5G0E-29fYff)ddj|oHo diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/easy_install.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/easy_install.cpython-39.pyc index 021d5e5a34febf22b8986c733ac49bf0782f1fa5..b6fa651e77a5b719aa5f9fe58cfba59ddd36924d 100644 GIT binary patch delta 38 scmdn?fqB;lX6{5@UM>b8;JfUwkvo@zE8fK_CZIB-BtLI+9mkIM0OrsP-T(jq delta 34 ocmdn>fqB~pX6{5@UM>b82#mMi$eqi<7VTmcQ&73NiDSom0Jb*^4*&oF diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/egg_info.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/egg_info.cpython-39.pyc index 720dc9fd3c8d907b3e4e2b52b82ef8721690d277..712540dce87774db27b1d50124a7542c795730c5 100644 GIT binary patch delta 1405 zcmZuwTWlLu5Zzg?*IRqNab9lHBqfOml|d;Igb?y*5;x5YC$5{eK%nG-o#5b@JLO_xGgLp_#fe?Z(K!Q{V6%apt@F)clm4umfTiOas_jvA| zxo6JIo&DrB`08~qCW1k~L_g!pu8F@U-!^QY|NfrV2X;R3u=Qv*f5i7&jhZ93cqRW- zgQpadc(7%ko-ALMMvY{6M2c+8pJ^Ef$ly@xK%*1LNg&zM3^@7~D_F1`;sGfsjYy(} z2qOl*+q$=;cp{k`%cLJlWzE#sR63I~G1S&y9A-(NfkDefoNhY`H|0a^odDnC&W>uh z4QD%Ya5ENdd%p4%D{Q&~cd%s>G~-9xj{mRs2lBS!;m)C@Lu6T!1Gba{SG(+Zr~>7h zotJl(YWWUG2VfCw5K)Se9nA*zWW&~m8NU;tGl~@V+EStZ!fBFX#GD)NVVko!!K9pn zMcLlKG=?qD6k(>TDi9Jr7XJ+a=DMENyJbl-D`+QyA3M4`aj0Ee+D==O%Oy_g^^82H zPfM(-N7@%!lr4{=B*B(*GD!0!tjSReI=TB1d3b*Xbv>P(uD#UwT5f#pmIiZ6#3$|| zUNJ|o61?VJgqI!51e4-9Ha{eYctktfKM}0RnW^g^VTH~|xCD2`+~?FmhW)j(6WR1s z%CyF2Cmu#Dh18Yr@+Y91}9DVnY+GWb=kMDyjxx3>c%^Dp%*g7+*1&f^WeHS$?%cB~W= zz3&HpVWM9d#&AAShK+sYrORA_MrRV}pn$wC&f}iGB{+>=_eJ0^uJ=vCA9$*-6c_r- zN)KHXEo-tL#45hne*#u~$R6+iKX&ZPYMR*23JFNX;*#MamRUvWKQkiYTIx7T+3dE_OJB zO1{DeCcOCP;OB4@Pu$&473r~#;5zyKyR$cT`^H!Kj_%%3K$W#MWnEE)AD!3^_}#7i z@0bxh#!8M>>8Ha{SjRxT9xmY4c!heY#8|u<&bX57xB>6s!FU~%<===u z3vdy4B=*1;_(GxvD)F5}6NK?x!m0{WrtdCm*Ff+-0=1EZNhFY$A69LG(?15jJ5s>4UiK#p%X$FP&S_opV#c1-{??&iQ`l zcYZm1-;d|u+6tIy!w3rc?Mn@%*U}fvvR`{+tnWbagnP#Ss9pP#j%3w6)#bC`0Dc@h zsLqLKllyn<5I`39_f2-?p;BKJAj*Pvq1vvZ@i!~xgp83u)WGliUdLGf_@+kg1v;3t z2=SBtub|8A9T)<*gC_>tU>ANmScNFYc7G0cF}%a7D^tbG_+a<98}ZK+_u|E&_|h5L zIidn(Q3W%h-jI zjqdPib663g)Ix^>f}mskl_6XnslYF|eRMzkitmkf;^0UCS4MkiJa~@&hy`--Jh$ZNih2n;TC)r=jRd5agP`@T`SbCeOnf7N%xfpKDE;t7C_!n@dCb&*7}gki2^P$f?Hntnr2X!( zoU}{weLi_Y5LIQZA6}mB37=(YjncInDHRfI#OA#hp^7*6PQX2Ei4Pj<|EtT!U)u5o z*M+<~6*NVEqCQnM>Bn#4d*DxRe*PKLSYZ||QkMbjoGG>OsCP!c3F4;qAuEj;%Tf@ii-Wuao{RzZeswjt#R{$=R*h5m?8qiB9+n2NKQCN*5As z@SA7h!-NUn;n_q7gxyPt&j23dTyh?+;YzX{B6vO74Hm8^omPuF-FoI#2gz|1UXAw4 zEqH29YTkf1yS~?6fNs7w@*#saYlZSj7}nZl1-Y!V3U@j|dn5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-39.pyc index 126d85c7a83fb752068b8481f6781b6e314596ec..ea726679fd9a304840c6d84ce7bffd3167d6b20a 100644 GIT binary patch delta 36 qcmew;^i_yEk(ZZ?0SNdmJ8a~>%gB}NViglmnNgCTxA`4oGdlpjF$+ro delta 32 mcmew=^ihaAk(ZZ?0SE%)?Kg7YWn_zYv5G0E-292LnH>O;5D9z$ diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/install_lib.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/install_lib.cpython-39.pyc index 26ca87ab5d291a098fb2dcb6959b8d5b772a7d70..efedc47dd3c2bb1c729da8ddf8041f2b22c7146a 100644 GIT binary patch delta 36 qcmbQEut0%3k(ZZ?0SNdmJ8a}W#mE)sViglmnNgCTxA``sBOd^$K?+v@ delta 32 mcmZ3WFh_wqk(ZZ?0SE%)?Kg6tVq}YQv5G0E+< diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/install_scripts.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/install_scripts.cpython-39.pyc index c8df62327f048a9a6a84bb6f482d2235091488b2..672d933d5691f3babd9e23bf2ffd1980f9a4b95e 100644 GIT binary patch delta 36 qcmaDO^g)O_k(ZZ?0SNdmJ8a~B#>kcAViglmnNgCTxA{9`DLVkYZVN;J delta 32 mcmew$^hSs~k(ZZ?0SE%)?Kg5iV`PhSv5G0E-29udlpO$&RS9(f diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/py36compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/py36compat.cpython-39.pyc index cadd46e242903072bc70ca486e7b5a8acfec5bfe..aafcdcacb74efd74afbb3ce6fbf9bc160cf38744 100644 GIT binary patch delta 36 qcmaE?{9Ktkk(ZZ?0SNdmJ8a~xV&#f;v5E<(%qYpv+uY3>!2%E%S%ViglmnNgCTxA_@kEF%D{^9qvy delta 32 mcmX@kc9@Mjk(ZZ?0SE%)?Kg5?Wn>F?v5G0E-293$mJtAf;t0e5 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/rotate.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/rotate.cpython-39.pyc index ffc834f0997782f1810165d675b959edda7d3a80..b92678c0f8f142e1c4d6078e4b22ddf44cbaba82 100644 GIT binary patch delta 36 qcmdldd`Or(k(ZZ?0SNdmJ8a}mX5xx;v5E<(%qYpv+g!rr#SQ?a6A7{a delta 32 mcmX>kyib@rk(ZZ?0SE%)?Kg5KGqHubSj7}nZmwYRVg~?wjtAoa diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/saveopts.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/saveopts.cpython-39.pyc index c023af669ed5b5453107903e96303671aed2bd00..c75205dd9a153e4f921203aa0f71da9a1cd1fbc8 100644 GIT binary patch delta 36 qcmbQpK9!w2k(ZZ?0SNdmJ8a~(X5xx=v5E<(%qYpv+w8;S$_N0GGYIDZ delta 32 mcmbQrK9QX}k(ZZ?0SE%)?Kg5;GqHucSj7}nZVq5_Wds0g4hI+j diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/sdist.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/sdist.cpython-39.pyc index abdc057c83c9371374f994825e7d56db6f1ab951..3f200422f0cbb4dbae76f7432c1a753c485463e2 100644 GIT binary patch delta 1521 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 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/setopt.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/setopt.cpython-39.pyc index eb66822f36231f48a3e7498c814e3bb859d20293..5bf36b02626f277f38c307215904b6ff9c63bdf5 100644 GIT binary patch delta 36 qcmZ3hyiu7uk(ZZ?0SNdmJ8a}uVCIT+v5E<(%qYpv+ib{O!v_GLY6)ck delta 32 mcmdm}yjGbzk(ZZ?0SE%)?Kg5OFtdfaSj7}nZZ>7E;R676^#_&! diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/test.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/test.cpython-39.pyc index e6f0e6f4bb054d1714eb6ef5e8f7744945cd0db2..6c6047e4297db2c3d2789742f03f4bc4125efa5f 100644 GIT binary patch delta 856 zcmZWnOK1~87~YxPCflUhyh!tCLW)FTQyXj5gMuhUsI3PD4~3;dZW*H}XiDmn_v9eI!|C!+Thn`MMrKN_Rw}b$CZC9T{^dXZQ~Z}b>S_(iqcLtEF?qIQPD{~$iqVD{>il9NB#wUX%S0uNb%2BIH*`vXcG2A_jD0^g?-Y+&D=hF{&u$IoL_hNWb+B5uluq?!%Zx@|JT_lm_2^w-1lEcOK^YcuIIR;;pXD%yyetb>YHx|sKI`?` kc8%O&gm!D49wqe_-+ED+5Prm;Mr#621?~OS`aU`P2SsMMEC2ui delta 771 zcmX@?w8Dumk(ZZ?0SE%)?Gyj1Oyt{W&z{1OBatf^CCSL(&XB^H!qvi%!j;P1%p4^J z4J3?fwUG$ zO?GFiGZXmLj3a-`J`(g@N3ajJH_Q(o;(`nTjNU z+#&-Ifu>(%@+|f^Es*LWeITL93|4xJIX@{YiXBLlR2HNn>zS;?;VA`nk`bzD5EpN5 z<#PS$Oge@jb}=&GixmOhBVQNXerJOG)c8 zGRjT%ka+-<)Ra|2mYf_V+lt}O&F^K|7?D*?lD{Q@h(So0Pktr;K&!|H6xxCy0+bwz P^gx6$h`>-TsAvQL>RFWf diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/upload.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/upload.cpython-39.pyc index d89e8b31c84736daf509948d6bf5a814015a7b84..052f59025c66b48188aa94f10f369caecf923606 100644 GIT binary patch delta 36 qcmZ3%wuX&6k(ZZ?0SNdmJ8a}W&&U<&ViglmnNgCTxA_612O|Ka#R@tA delta 32 mcmZ3(wt|g2k(ZZ?0SE%)?Kg6tXJiX?v5G0E-28;mgAo9FtO#oW diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/upload_docs.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/__pycache__/upload_docs.cpython-39.pyc index b4d2b883afc6142b99278cfd0bd7b5e70062f2c3..57c2be7e511bff1daa8de6c38981405b06970262 100644 GIT binary patch delta 36 qcmZoS=r-U^ A B C D - # unique_everseen('ABBCcAD', str.lower) --> A B C D - seen = set() - seen_add = seen.add - if key is None: - for element in itertools.filterfalse(seen.__contains__, iterable): - seen_add(element) - yield element - else: - for element in iterable: - k = key(element) - if k not in seen: - seen_add(k) - yield element - - def assert_relative(path): if not os.path.isabs(path): return path diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/egg_info.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/egg_info.py index 1f120b67..18b81340 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/egg_info.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/egg_info.py @@ -541,6 +541,7 @@ class manifest_maker(sdist): self.add_defaults() if os.path.exists(self.template): self.read_template() + self.add_license_files() self.prune_file_list() self.filelist.sort() self.filelist.remove_duplicates() @@ -575,7 +576,6 @@ class manifest_maker(sdist): def add_defaults(self): sdist.add_defaults(self) - self.check_license() self.filelist.append(self.template) self.filelist.append(self.manifest) rcfiles = list(walk_revctrl()) @@ -592,6 +592,13 @@ class manifest_maker(sdist): ei_cmd = self.get_finalized_command('egg_info') self.filelist.graft(ei_cmd.egg_info) + def add_license_files(self): + license_files = self.distribution.metadata.license_files or [] + for lf in license_files: + log.info("adding license file '%s'", lf) + pass + self.filelist.extend(license_files) + def prune_file_list(self): build = self.get_finalized_command('build') base_dir = self.distribution.get_fullname() diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/sdist.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/sdist.py index a6ea814a..4a014283 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/sdist.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/sdist.py @@ -4,9 +4,6 @@ import os import sys import io import contextlib -from glob import iglob - -from setuptools.extern import ordered_set from .py36compat import sdist_add_defaults @@ -190,46 +187,3 @@ class sdist(sdist_add_defaults, orig.sdist): continue self.filelist.append(line) manifest.close() - - def check_license(self): - """Checks if license_file' or 'license_files' is configured and adds any - valid paths to 'self.filelist'. - """ - opts = self.distribution.get_option_dict('metadata') - - files = ordered_set.OrderedSet() - try: - license_files = self.distribution.metadata.license_files - except TypeError: - log.warn("warning: 'license_files' option is malformed") - license_files = ordered_set.OrderedSet() - patterns = license_files if isinstance(license_files, ordered_set.OrderedSet) \ - else ordered_set.OrderedSet(license_files) - - if 'license_file' in opts: - log.warn( - "warning: the 'license_file' option is deprecated, " - "use 'license_files' instead") - patterns.append(opts['license_file'][1]) - - if 'license_file' not in opts and 'license_files' not in opts: - # Default patterns match the ones wheel uses - # See https://wheel.readthedocs.io/en/stable/user_guide.html - # -> 'Including license files in the generated wheel file' - patterns = ('LICEN[CS]E*', 'COPYING*', 'NOTICE*', 'AUTHORS*') - - for pattern in patterns: - for path in iglob(pattern): - if path.endswith('~'): - log.debug( - "ignoring license file '%s' as it looks like a backup", - path) - continue - - if path not in files and os.path.isfile(path): - log.info( - "adding license file '%s' (matched pattern '%s')", - path, pattern) - files.add(path) - - self.filelist.extend(sorted(files)) diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/test.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/test.py index cf71ad01..de4f3d11 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/test.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/command/test.py @@ -12,7 +12,7 @@ from pkg_resources import (resource_listdir, resource_exists, normalize_path, working_set, _namespace_packages, evaluate_marker, add_activation_listener, require, EntryPoint) from setuptools import Command -from .build_py import _unique_everseen +from setuptools.extern.more_itertools import unique_everseen class ScanningLoader(TestLoader): @@ -182,7 +182,7 @@ class test(Command): orig_pythonpath = os.environ.get('PYTHONPATH', nothing) current_pythonpath = os.environ.get('PYTHONPATH', '') try: - prefix = os.pathsep.join(_unique_everseen(paths)) + prefix = os.pathsep.join(unique_everseen(paths)) to_join = filter(None, [prefix, current_pythonpath]) new_path = os.pathsep.join(to_join) if new_path: diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/config.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/config.py index 4a6cd469..44de7cf5 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/config.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/config.py @@ -520,6 +520,11 @@ class ConfigMetadataHandler(ConfigHandler): 'obsoletes': parse_list, 'classifiers': self._get_parser_compound(parse_file, parse_list), 'license': exclude_files_parser('license'), + 'license_file': self._deprecated_config_handler( + exclude_files_parser('license_file'), + "The license_file parameter is deprecated, " + "use license_files instead.", + DeprecationWarning), 'license_files': parse_list, 'description': parse_file, 'long_description': parse_file, diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/dist.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/dist.py index 7cebcb37..df071c16 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/dist.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/dist.py @@ -15,7 +15,10 @@ import distutils.command from distutils.util import strtobool from distutils.debug import DEBUG from distutils.fancy_getopt import translate_longopt +from glob import iglob import itertools +import textwrap +from typing import List, Optional, TYPE_CHECKING from collections import defaultdict from email import message_from_file @@ -26,6 +29,7 @@ from distutils.version import StrictVersion from setuptools.extern import packaging from setuptools.extern import ordered_set +from setuptools.extern.more_itertools import unique_everseen from . import SetuptoolsDeprecationWarning @@ -36,6 +40,9 @@ from setuptools.monkey import get_unpatched from setuptools.config import parse_configuration import pkg_resources +if TYPE_CHECKING: + from email.message import Message + __import__('setuptools.extern.packaging.specifiers') __import__('setuptools.extern.packaging.version') @@ -47,78 +54,97 @@ def _get_unpatched(cls): def get_metadata_version(self): mv = getattr(self, 'metadata_version', None) - if mv is None: - if self.long_description_content_type or self.provides_extras: - mv = StrictVersion('2.1') - elif (self.maintainer is not None or - self.maintainer_email is not None or - getattr(self, 'python_requires', None) is not None or - self.project_urls): - mv = StrictVersion('1.2') - elif (self.provides or self.requires or self.obsoletes or - self.classifiers or self.download_url): - mv = StrictVersion('1.1') - else: - mv = StrictVersion('1.0') - + mv = StrictVersion('2.1') self.metadata_version = mv - return mv +def rfc822_unescape(content: str) -> str: + """Reverse RFC-822 escaping by removing leading whitespaces from content.""" + lines = content.splitlines() + if len(lines) == 1: + return lines[0].lstrip() + return '\n'.join( + (lines[0].lstrip(), + textwrap.dedent('\n'.join(lines[1:])))) + + +def _read_field_from_msg(msg: "Message", field: str) -> Optional[str]: + """Read Message header field.""" + value = msg[field] + if value == 'UNKNOWN': + return None + return value + + +def _read_field_unescaped_from_msg(msg: "Message", field: str) -> Optional[str]: + """Read Message header field and apply rfc822_unescape.""" + value = _read_field_from_msg(msg, field) + if value is None: + return value + return rfc822_unescape(value) + + +def _read_list_from_msg(msg: "Message", field: str) -> Optional[List[str]]: + """Read Message header field and return all results as list.""" + values = msg.get_all(field, None) + if values == []: + return None + return values + + +def _read_payload_from_msg(msg: "Message") -> Optional[str]: + value = msg.get_payload().strip() + if value == 'UNKNOWN': + return None + return value + + def read_pkg_file(self, file): """Reads the metadata values from a file object.""" msg = message_from_file(file) - def _read_field(name): - value = msg[name] - if value == 'UNKNOWN': - return None - return value - - def _read_list(name): - values = msg.get_all(name, None) - if values == []: - return None - return values - self.metadata_version = StrictVersion(msg['metadata-version']) - self.name = _read_field('name') - self.version = _read_field('version') - self.description = _read_field('summary') + self.name = _read_field_from_msg(msg, 'name') + self.version = _read_field_from_msg(msg, 'version') + self.description = _read_field_from_msg(msg, 'summary') # we are filling author only. - self.author = _read_field('author') + self.author = _read_field_from_msg(msg, 'author') self.maintainer = None - self.author_email = _read_field('author-email') + self.author_email = _read_field_from_msg(msg, 'author-email') self.maintainer_email = None - self.url = _read_field('home-page') - self.license = _read_field('license') + self.url = _read_field_from_msg(msg, 'home-page') + self.license = _read_field_unescaped_from_msg(msg, 'license') if 'download-url' in msg: - self.download_url = _read_field('download-url') + self.download_url = _read_field_from_msg(msg, 'download-url') else: self.download_url = None - self.long_description = _read_field('description') - self.description = _read_field('summary') + self.long_description = _read_field_unescaped_from_msg(msg, 'description') + if self.long_description is None and self.metadata_version >= StrictVersion('2.1'): + self.long_description = _read_payload_from_msg(msg) + self.description = _read_field_from_msg(msg, 'summary') if 'keywords' in msg: - self.keywords = _read_field('keywords').split(',') + self.keywords = _read_field_from_msg(msg, 'keywords').split(',') - self.platforms = _read_list('platform') - self.classifiers = _read_list('classifier') + self.platforms = _read_list_from_msg(msg, 'platform') + self.classifiers = _read_list_from_msg(msg, 'classifier') # PEP 314 - these fields only exist in 1.1 if self.metadata_version == StrictVersion('1.1'): - self.requires = _read_list('requires') - self.provides = _read_list('provides') - self.obsoletes = _read_list('obsoletes') + self.requires = _read_list_from_msg(msg, 'requires') + self.provides = _read_list_from_msg(msg, 'provides') + self.obsoletes = _read_list_from_msg(msg, 'obsoletes') else: self.requires = None self.provides = None self.obsoletes = None + self.license_files = _read_list_from_msg(msg, 'license-file') + def single_line(val): # quick and dirty validation for description pypa/setuptools#1390 @@ -144,41 +170,31 @@ def write_pkg_file(self, file): # noqa: C901 # is too complex (14) # FIXME write_field('Summary', single_line(self.get_description())) write_field('Home-page', self.get_url()) - if version < StrictVersion('1.2'): - write_field('Author', self.get_contact()) - write_field('Author-email', self.get_contact_email()) - else: - optional_fields = ( - ('Author', 'author'), - ('Author-email', 'author_email'), - ('Maintainer', 'maintainer'), - ('Maintainer-email', 'maintainer_email'), - ) + optional_fields = ( + ('Author', 'author'), + ('Author-email', 'author_email'), + ('Maintainer', 'maintainer'), + ('Maintainer-email', 'maintainer_email'), + ) - for field, attr in optional_fields: - attr_val = getattr(self, attr) + for field, attr in optional_fields: + attr_val = getattr(self, attr, None) + if attr_val is not None: + write_field(field, attr_val) - if attr_val is not None: - write_field(field, attr_val) - - write_field('License', self.get_license()) + license = rfc822_escape(self.get_license()) + write_field('License', license) if self.download_url: write_field('Download-URL', self.download_url) for project_url in self.project_urls.items(): write_field('Project-URL', '%s, %s' % project_url) - long_desc = rfc822_escape(self.get_long_description()) - write_field('Description', long_desc) - keywords = ','.join(self.get_keywords()) if keywords: write_field('Keywords', keywords) - if version >= StrictVersion('1.2'): - for platform in self.get_platforms(): - write_field('Platform', platform) - else: - self._write_list(file, 'Platform', self.get_platforms()) + for platform in self.get_platforms(): + write_field('Platform', platform) self._write_list(file, 'Classifier', self.get_classifiers()) @@ -201,6 +217,10 @@ def write_pkg_file(self, file): # noqa: C901 # is too complex (14) # FIXME for extra in self.provides_extras: write_field('Provides-Extra', extra) + self._write_list(file, 'License-File', self.license_files or []) + + file.write("\n%s\n\n" % self.get_long_description()) + sequence = tuple, list @@ -397,10 +417,11 @@ class Distribution(_Distribution): """ _DISTUTILS_UNSUPPORTED_METADATA = { - 'long_description_content_type': None, + 'long_description_content_type': lambda: None, 'project_urls': dict, 'provides_extras': ordered_set.OrderedSet, - 'license_files': ordered_set.OrderedSet, + 'license_file': lambda: None, + 'license_files': lambda: None, } _patched_dist = None @@ -436,22 +457,22 @@ class Distribution(_Distribution): if k not in self._DISTUTILS_UNSUPPORTED_METADATA }) - # Fill-in missing metadata fields not supported by distutils. - # Note some fields may have been set by other tools (e.g. pbr) - # above; they are taken preferrentially to setup() arguments - for option, default in self._DISTUTILS_UNSUPPORTED_METADATA.items(): - for source in self.metadata.__dict__, attrs: - if option in source: - value = source[option] - break - else: - value = default() if default else None - setattr(self.metadata, option, value) + self._set_metadata_defaults(attrs) self.metadata.version = self._normalize_version( self._validate_version(self.metadata.version)) self._finalize_requires() + def _set_metadata_defaults(self, attrs): + """ + Fill-in missing metadata fields not supported by distutils. + Some fields may have been set by other tools (e.g. pbr). + Those fields (vars(self.metadata)) take precedence to + supplied attrs. + """ + for option, default in self._DISTUTILS_UNSUPPORTED_METADATA.items(): + vars(self.metadata).setdefault(option, attrs.get(option, default())) + @staticmethod def _normalize_version(version): if isinstance(version, setuptools.sic) or version is None: @@ -559,6 +580,40 @@ class Distribution(_Distribution): req.marker = None return req + def _finalize_license_files(self): + """Compute names of all license files which should be included.""" + license_files: Optional[List[str]] = self.metadata.license_files + patterns: List[str] = license_files if license_files else [] + + license_file: Optional[str] = self.metadata.license_file + if license_file and license_file not in patterns: + patterns.append(license_file) + + if license_files is None and license_file is None: + # Default patterns match the ones wheel uses + # See https://wheel.readthedocs.io/en/stable/user_guide.html + # -> 'Including license files in the generated wheel file' + patterns = ('LICEN[CS]E*', 'COPYING*', 'NOTICE*', 'AUTHORS*') + + self.metadata.license_files = list( + unique_everseen(self._expand_patterns(patterns))) + + @staticmethod + def _expand_patterns(patterns): + """ + >>> list(Distribution._expand_patterns(['LICENSE'])) + ['LICENSE'] + >>> list(Distribution._expand_patterns(['setup.cfg', 'LIC*'])) + ['setup.cfg', 'LICENSE'] + """ + return ( + path + for pattern in patterns + for path in sorted(iglob(pattern)) + if not path.endswith('~') + and os.path.isfile(path) + ) + # FIXME: 'Distribution._parse_config_files' is too complex (14) def _parse_config_files(self, filenames=None): # noqa: C901 """ @@ -633,7 +688,7 @@ class Distribution(_Distribution): return opt underscore_opt = opt.replace('-', '_') - commands = distutils.command.__all__ + setuptools.command.__all__ + commands = distutils.command.__all__ + self._setuptools_commands() if (not section.startswith('options') and section != 'metadata' and section not in commands): return underscore_opt @@ -645,6 +700,14 @@ class Distribution(_Distribution): % (opt, underscore_opt)) return underscore_opt + def _setuptools_commands(self): + try: + dist = pkg_resources.get_distribution('setuptools') + return list(dist.get_entry_map('distutils.commands')) + except pkg_resources.DistributionNotFound: + # during bootstrapping, distribution doesn't exist + return [] + def make_option_lowercase(self, opt, section): if section != 'metadata' or opt.islower(): return opt @@ -715,6 +778,7 @@ class Distribution(_Distribution): parse_configuration(self, self.command_options, ignore_option_errors=ignore_option_errors) self._finalize_requires() + self._finalize_license_files() def fetch_build_eggs(self, requires): """Resolve pre-setup requirements""" diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/extern/__init__.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/extern/__init__.py index 7df32fde..baca1afa 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/extern/__init__.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/extern/__init__.py @@ -69,5 +69,5 @@ class VendorImporter: sys.meta_path.append(self) -names = 'packaging', 'pyparsing', 'ordered_set', +names = 'packaging', 'pyparsing', 'ordered_set', 'more_itertools', VendorImporter(__name__, names, 'setuptools._vendor').install() diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/extern/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/setuptools/extern/__pycache__/__init__.cpython-39.pyc index 3dd7f35caa2711308498211c3d64d209fe98b799..a7c6e4cf5ca16b27581a6792c416bf7a81628e4a 100644 GIT binary patch delta 65 zcmX>r_E3yBk(ZZ?0SNdmJ0zxW5{$ A B C D - - _unique_everseen('ABBCcAD', str.lower) --> A B C D - """ - seen = set() - seen_add = seen.add - if key is None: - for element in itertools.filterfalse(seen.__contains__, iterable): - seen_add(element) - yield element - else: - for element in iterable: - k = key(element) - if k not in seen: - seen_add(k) - yield element diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/package_index.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/package_index.py index 123e9582..d818f44a 100644 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/package_index.py +++ b/IKEA_scraper/.venv/Lib/site-packages/setuptools/package_index.py @@ -23,11 +23,12 @@ from pkg_resources import ( Environment, find_distributions, safe_name, safe_version, to_filename, Requirement, DEVELOP_DIST, EGG_DIST, ) -from setuptools import ssl_support from distutils import log from distutils.errors import DistutilsError from fnmatch import translate from setuptools.wheel import Wheel +from setuptools.extern.more_itertools import unique_everseen + EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.+!]+)$') HREF = re.compile(r"""href\s*=\s*['"]?([^'"> ]+)""", re.I) @@ -161,7 +162,7 @@ def interpret_distro_name( # Generate alternative interpretations of a source distro name # Because some packages are ambiguous as to name/versions split # e.g. "adns-python-1.1.0", "egenix-mx-commercial", etc. - # So, we generate each possible interepretation (e.g. "adns, python-1.1.0" + # So, we generate each possible interpretation (e.g. "adns, python-1.1.0" # "adns-python, 1.1.0", and "adns-python-1.1.0, no version"). In practice, # the spurious interpretations should be ignored, because in the event # there's also an "adns" package, the spurious "python-1.1.0" version will @@ -183,25 +184,6 @@ def interpret_distro_name( ) -# From Python 2.7 docs -def unique_everseen(iterable, key=None): - "List unique elements, preserving order. Remember all elements ever seen." - # unique_everseen('AAAABBBCCDAABBB') --> A B C D - # unique_everseen('ABBCcAD', str.lower) --> A B C D - seen = set() - seen_add = seen.add - if key is None: - for element in itertools.filterfalse(seen.__contains__, iterable): - seen_add(element) - yield element - else: - for element in iterable: - k = key(element) - if k not in seen: - seen_add(k) - yield element - - def unique_values(func): """ Wrap a function returning an iterable such that the resulting iterable @@ -310,15 +292,7 @@ class PackageIndex(Environment): self.package_pages = {} self.allows = re.compile('|'.join(map(translate, hosts))).match self.to_scan = [] - use_ssl = ( - verify_ssl - and ssl_support.is_available - and (ca_bundle or ssl_support.find_ca_bundle()) - ) - if use_ssl: - self.opener = ssl_support.opener_for(ca_bundle) - else: - self.opener = urllib.request.urlopen + self.opener = urllib.request.urlopen # FIXME: 'PackageIndex.process_url' is too complex (14) def process_url(self, url, retrieve=False): # noqa: C901 diff --git a/IKEA_scraper/.venv/Lib/site-packages/setuptools/ssl_support.py b/IKEA_scraper/.venv/Lib/site-packages/setuptools/ssl_support.py deleted file mode 100644 index b58cca37..00000000 --- a/IKEA_scraper/.venv/Lib/site-packages/setuptools/ssl_support.py +++ /dev/null @@ -1,266 +0,0 @@ -import os -import socket -import atexit -import re -import functools -import urllib.request -import http.client - - -from pkg_resources import ResolutionError, ExtractionError - -try: - import ssl -except ImportError: - ssl = None - -__all__ = [ - 'VerifyingHTTPSHandler', 'find_ca_bundle', 'is_available', 'cert_paths', - 'opener_for' -] - -cert_paths = """ -/etc/pki/tls/certs/ca-bundle.crt -/etc/ssl/certs/ca-certificates.crt -/usr/share/ssl/certs/ca-bundle.crt -/usr/local/share/certs/ca-root.crt -/etc/ssl/cert.pem -/System/Library/OpenSSL/certs/cert.pem -/usr/local/share/certs/ca-root-nss.crt -/etc/ssl/ca-bundle.pem -""".strip().split() - -try: - HTTPSHandler = urllib.request.HTTPSHandler - HTTPSConnection = http.client.HTTPSConnection -except AttributeError: - HTTPSHandler = HTTPSConnection = object - -is_available = ssl is not None and object not in ( - HTTPSHandler, HTTPSConnection) - - -try: - from ssl import CertificateError, match_hostname -except ImportError: - try: - from backports.ssl_match_hostname import CertificateError - from backports.ssl_match_hostname import match_hostname - except ImportError: - CertificateError = None - match_hostname = None - -if not CertificateError: - - class CertificateError(ValueError): - pass - - -if not match_hostname: # noqa: C901 # 'If 59' is too complex (21) # FIXME - - def _dnsname_match(dn, hostname, max_wildcards=1): - """Matching according to RFC 6125, section 6.4.3 - - https://tools.ietf.org/html/rfc6125#section-6.4.3 - """ - pats = [] - if not dn: - return False - - # Ported from python3-syntax: - # leftmost, *remainder = dn.split(r'.') - parts = dn.split(r'.') - leftmost = parts[0] - remainder = parts[1:] - - wildcards = leftmost.count('*') - if wildcards > max_wildcards: - # Issue #17980: avoid denials of service by refusing more - # than one wildcard per fragment. A survey of established - # policy among SSL implementations showed it to be a - # reasonable choice. - raise CertificateError( - "too many wildcards in certificate DNS name: " + repr(dn)) - - # speed up common case w/o wildcards - if not wildcards: - return dn.lower() == hostname.lower() - - # RFC 6125, section 6.4.3, subitem 1. - # The client SHOULD NOT attempt to match a - # presented identifier in which the wildcard - # character comprises a label other than the - # left-most label. - if leftmost == '*': - # When '*' is a fragment by itself, it matches a non-empty dotless - # fragment. - pats.append('[^.]+') - elif leftmost.startswith('xn--') or hostname.startswith('xn--'): - # RFC 6125, section 6.4.3, subitem 3. - # The client SHOULD NOT attempt to match a presented identifier - # where the wildcard character is embedded within an A-label or - # U-label of an internationalized domain name. - pats.append(re.escape(leftmost)) - else: - # Otherwise, '*' matches any dotless string, e.g. www* - pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) - - # add the remaining fragments, ignore any wildcards - for frag in remainder: - pats.append(re.escape(frag)) - - pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) - return pat.match(hostname) - - def match_hostname(cert, hostname): - """Verify that *cert* (in decoded format as returned by - SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 - rules are followed, but IP addresses are not accepted for *hostname*. - - CertificateError is raised on failure. On success, the function - returns nothing. - """ - if not cert: - raise ValueError("empty or no certificate") - dnsnames = [] - san = cert.get('subjectAltName', ()) - for key, value in san: - if key == 'DNS': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if not dnsnames: - # The subject is only checked when there is no dNSName entry - # in subjectAltName - for sub in cert.get('subject', ()): - for key, value in sub: - # XXX according to RFC 2818, the most specific Common Name - # must be used. - if key == 'commonName': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if len(dnsnames) > 1: - raise CertificateError( - "hostname %r doesn't match either of %s" - % (hostname, ', '.join(map(repr, dnsnames)))) - elif len(dnsnames) == 1: - raise CertificateError( - "hostname %r doesn't match %r" - % (hostname, dnsnames[0])) - else: - raise CertificateError( - "no appropriate commonName or " - "subjectAltName fields were found") - - -class VerifyingHTTPSHandler(HTTPSHandler): - """Simple verifying handler: no auth, subclasses, timeouts, etc.""" - - def __init__(self, ca_bundle): - self.ca_bundle = ca_bundle - HTTPSHandler.__init__(self) - - def https_open(self, req): - return self.do_open( - lambda host, **kw: VerifyingHTTPSConn(host, self.ca_bundle, **kw), - req - ) - - -class VerifyingHTTPSConn(HTTPSConnection): - """Simple verifying connection: no auth, subclasses, timeouts, etc.""" - - def __init__(self, host, ca_bundle, **kw): - HTTPSConnection.__init__(self, host, **kw) - self.ca_bundle = ca_bundle - - def connect(self): - sock = socket.create_connection( - (self.host, self.port), getattr(self, 'source_address', None) - ) - - # Handle the socket if a (proxy) tunnel is present - if hasattr(self, '_tunnel') and getattr(self, '_tunnel_host', None): - self.sock = sock - self._tunnel() - # http://bugs.python.org/issue7776: Python>=3.4.1 and >=2.7.7 - # change self.host to mean the proxy server host when tunneling is - # being used. Adapt, since we are interested in the destination - # host for the match_hostname() comparison. - actual_host = self._tunnel_host - else: - actual_host = self.host - - if hasattr(ssl, 'create_default_context'): - ctx = ssl.create_default_context(cafile=self.ca_bundle) - self.sock = ctx.wrap_socket(sock, server_hostname=actual_host) - else: - # This is for python < 2.7.9 and < 3.4? - self.sock = ssl.wrap_socket( - sock, cert_reqs=ssl.CERT_REQUIRED, ca_certs=self.ca_bundle - ) - try: - match_hostname(self.sock.getpeercert(), actual_host) - except CertificateError: - self.sock.shutdown(socket.SHUT_RDWR) - self.sock.close() - raise - - -def opener_for(ca_bundle=None): - """Get a urlopen() replacement that uses ca_bundle for verification""" - return urllib.request.build_opener( - VerifyingHTTPSHandler(ca_bundle or find_ca_bundle()) - ).open - - -# from jaraco.functools -def once(func): - @functools.wraps(func) - def wrapper(*args, **kwargs): - if not hasattr(func, 'always_returns'): - func.always_returns = func(*args, **kwargs) - return func.always_returns - return wrapper - - -@once -def get_win_certfile(): - try: - import wincertstore - except ImportError: - return None - - class CertFile(wincertstore.CertFile): - def __init__(self): - super(CertFile, self).__init__() - atexit.register(self.close) - - def close(self): - try: - super(CertFile, self).close() - except OSError: - pass - - _wincerts = CertFile() - _wincerts.addstore('CA') - _wincerts.addstore('ROOT') - return _wincerts.name - - -def find_ca_bundle(): - """Return an existing CA bundle path, or None""" - extant_cert_paths = filter(os.path.isfile, cert_paths) - return ( - get_win_certfile() - or next(extant_cert_paths, None) - or _certifi_where() - ) - - -def _certifi_where(): - try: - return __import__('certifi').where() - except (ImportError, ResolutionError, ExtractionError): - pass diff --git a/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/__init__.cpython-39.pyc index 46f17d9fd4950bc10a0dee1614c3df178b3372f7..fe328eb5f80441b89289c3b60246a26d75889570 100644 GIT binary patch delta 55 zcmX>nb4i9fk(ZZ?0SMGDJ8b0U;*bq;v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JtjD3i1^}{15MlrT delta 51 zcmca4b54dkk(ZZ?0SI#A?Kg6BaY*{5Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@HsVlV F0|0N_4^{vG diff --git a/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/__meta__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/__meta__.cpython-39.pyc index 2b257b9501d83a9357ab87481ec6acb8cbe088df..e876d1da651b093c4f632a2307e3471e63e87054 100644 GIT binary patch delta 55 zcmeCy?bqc_bUt9D^EQD3QQ9y delta 53 zcmaFW$@Hv~i93;(mx}=ia^vkca&Kdm^iQ#hDX5GoO3X{i&y6Wg&dATtiOI}PP27Bs Hm8Tv6!1WRw diff --git a/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/css_parser.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/css_parser.cpython-39.pyc index 86286c2e9baaf59a20fd309f41acac54451c2098..74d9869b8d7075798d51a35e9ac11e3dca52adf2 100644 GIT binary patch delta 887 zcmX|?)OFM??uU?wq3sjU;pQmFV?T}VuyqQ zb(t>%k0~ee%Mmn}#}pbH%9V%oPXc`bxnXxxFg2Y1tr=D;Lnay-K*TgIlZ}(2DYd z%P_3eCL`&_ku&Go=OV3;5Ly6h9Kq1In9+cHX_d@)1Vz2nB$}!*!&~|i9F0{t{CzoN zDupXZmj*D9g_wXhbv2*i5ZzcQCN!jitt4EG)8;zWrnE^$v5pmksE|T=4?I@AVR2a6 zpo$F}WbQNY+9o`LExJ-@%0-lyiIA9nN;Rx0$}45!(`fn4*nQC=P9)>d+4v5&A(6U+ zxQ!|8;x5H8d#48m*x*qJ?c=P9N6;!X+|Kf)*|+M2TD+I+gE==3-aIA4SBbBs7{Y8l zIUT-seJO+Cv*)KLS-TZ?tS*-8A&!)&L4!FOi zc2LGusV2fk>>^r-8Umla+C$tx>?5ur4iPvtWg&`dcTj2|ZXvE9ZUWNm;iD6yfo+|s iW3=|O_m2;^jJqh`%RUX-W~saUdU{?u%J$EGbpHYQgBnW! delta 936 zcmZ9K%We}f6oyILBu#Vcg;L6;ErqrqF%m0~EELoQ-NFMzD(=|nSe@8|?McXNA|&3R zPr(vp$s@2TOLpu*Vm&MVGfAYvEWSB&e*5_MIrHbL^y{ir=gsEI4Lthv)tCCurE!gM zJqlu_FY+ccIvxe47x+;k^D?u>_`JeoKk*~HU1*T5F{J~`^|{RJ%t|hTp;eypLOFgG zOOY=#A$vTHJtC>E<&=inVm)P@pPqC1tXv+4kqj@Otg|HMp^Qu{qzznTh8kzY9E-z9 z#Ufvs9!NIfwh-oS8?&m@h4txGrXRRhS{yfZU1r5?YpC@;RaS~IEGaFdm$t7oFYaOz zuZ-q#XBE9dDNH8Qx%lGiefpMtiQb3#gS#EaEO(WXd7b#-m7|`!ISZ9i}&5nz#Sk3)jO)TG?4d zWxEH!HT9#YE33Zi z854Kah2)dXcDi+ZfQt5zun+uLO`J@HIYq(KVz5sZ>|;`oNNrzJ>Gy^Bbn@-+cWX?) zyIm(V2z3DBJ&LJU_9lVGYw+VL$H6WY3 qcz#@IkkOOEDQtauxw}w#L@ORnK6lotrGv|_ug^;Rlbw_A`+otcwk=Em diff --git a/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/css_types.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/css_types.cpython-39.pyc index b0db4bd1b8b1f9d1c780449bf18ba4527b04b721..418648ff2caac161519ee09f17047f4c65b389d4 100644 GIT binary patch delta 55 zcmewn^e2crk(ZZ?0SMGDJ8a~ZW04JZv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?8IWG3IN?<5qJOq delta 51 zcmewp^dpEnk(ZZ?0SNNq?Kg7Eu}J!-Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@c4IM9 F1pt@V5N!Ye diff --git a/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/util.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/soupsieve/__pycache__/util.cpython-39.pyc index dd043b8047d7ce428124df506f667ec465d9973a..fbda7a0efb84c6d0343e7dd59b6875c144e51f5d 100644 GIT binary patch delta 55 zcmZ22wqA@ok(ZZ?0SMGDJ8a}W#VG6NViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`5mJzCjh=|5uN}5 delta 51 zcmZ24wpxrkk(ZZ?0SNNq?Kg6tVwChsv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{E5+) F699Ue5R(7^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/__init__.cpython-39.pyc index d88832166499b1da0d8103520d4f9fbde289fe26..07886e5a0b9620d146b8a02935d2eb10135be074 100644 GIT binary patch delta 55 zcmew=@Kb<0k(ZZ?0SIg^J8a~(VU-PVv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoWLr|3;@Vx5c>cC delta 51 zcmew<@Ku02k(ZZ?0SKDo?Kg7UuuA%*Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@PGJ>g F1^|RW5AXm0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/_collections.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/_collections.cpython-39.pyc index d3c3149e29a3622d89dfbaecc3ac862a43d9543c..757a0bd739b55476672ac74067a8b13489c8c6ff 100644 GIT binary patch delta 55 zcmeAO=?URZJq JzQd@a0RYOa5!nC$ delta 51 zcmeAP=?LLY#h5r_7h)-~tVHG==(%bB)@sJw;gOC`N delta 72 zcmZ3Mu_%K(k(ZZ?0SKDo?Kg6ZGfVoVSj7}n#uO#yrR3+v6enlo=jX&^W~U}@wrBpX Y!e7N6;uBnEsAqVK6~x%=s_~E;03{R`jsO4v diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/connectionpool.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/connectionpool.cpython-39.pyc index 711f3fb28e3300e72db5ec3ae05a6c1403a0f6be..4a727beb2d23d02f4e590bc32a708fb2fc507bf0 100644 GIT binary patch delta 57 zcmeyhkMZ9=M(#vjUM>b8u(|B8kz0gaHq6B;CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p4^0yHf-J6PFU7 delta 53 zcmeyjkMY+&M(#vjUM>b8XpXnv$SuMy8I)obQ&1UGl$e*2pBq!0oROcO6O);pnz-49 H-6;Y9%0>~C diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/exceptions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/exceptions.cpython-39.pyc index 373e7ab1541131ba386494b420621aada9d999ed..9dbf27a161f617a9ce66fed78949e71cbd8c2a83 100644 GIT binary patch delta 55 zcmaDB^(u-xk(ZZ?0SIg^J8b06XO<0ev5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJem2jCIISr61e~X delta 51 zcmaDA^(=}zk(ZZ?0SKDo?Kg7gGfVoVSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p3Zz( F69A*H5v~9L diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/fields.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/fields.cpython-39.pyc index 5623a84033ae42ef01f8231216af7293cabd3a70..6716a3f34fb4d2e4e804169bc8e12bd800d736e2 100644 GIT binary patch delta 55 zcmX?Uf7YHmk(ZZ?0SIg^J8b0kXOi`Ev5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT+9?E3joYI5qbas delta 51 zcmX?Wf6|^ik(ZZ?0SKDo?Kg7!Gf8@-Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@E@ujp F1ptS{5N`kg diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/filepost.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/filepost.cpython-39.pyc index 6ca65197d8e977e89de4dc23ee0b3d3db0536c77..d0c0ed531e645e363eeb0a8863264b985d8690d7 100644 GIT binary patch delta 55 zcmdlax=oZjk(ZZ?0SIg^J8a~B#wZ)$ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTu%!2LQ$Z5o7=W delta 51 zcmdlcx=EBfk(ZZ?0SKDo?Kg5iW0dqsv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*V8X F0|0?C5Lo~K diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/poolmanager.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/__pycache__/poolmanager.cpython-39.pyc index d3d56e8f016da5c5e3f1df3467cd19286fda43bd..b2966872642ff5e67cbd55de7be7f0c03d288906 100644 GIT binary patch delta 55 zcmZ2dwxWzXk(ZZ?0SIg^J8b0Mz$qK-ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3h%%ApqpC5`h2! delta 51 zcmZ2cwxoF*bOi_OK=$2G+D7K?|gqswGL l)&NQG6swqm%9x_Wyp;UhnBwG&{QR7l%b8u(|B8k$XC`Y=DbZOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;U~%oBY92j3G% delta 53 zcmcbxi1ExKM(#vjUM>b8XpXnv$UU7|(kI0#rl2yWC^0W3KR2d0IU_$mCnhsHHF5KP H=83)lzWNe8 diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/__pycache__/__init__.cpython-39.pyc index ca3a8a059d637fef2b20fd8fdf7091073177e51f..f4d0b3adadbc44891716f62d0247365e75eca1fd 100644 GIT binary patch delta 52 zcmZ3_xS5eVk(ZZ?0SIg^J51!Zk&SS%iV3L9D9O)@DN4*s$$RQi)ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`74LEH~`Wv5)=Rc delta 51 zcmZ4Du)u*kk(ZZ?0SKDo?Kg5? F0RUql590s; diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-39.pyc index a3ecd0603c8299f77e2501176ee36025677644d6..2a0689e0f9121ade31d2072fb1c82c490eeeebdb 100644 GIT binary patch delta 55 zcmdm0xv!Etk(ZZ?0SIg^J8a~>%PAY_ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnUQO!5dicJ5`F*x delta 51 zcmdm2xvP>pk(ZZ?0SKDo?Kg7Y<&+Ffv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*wUX F2mq_U5pw_l diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-39.pyc index 82a46dbff7d9acbd74fe7b0c5b98417cec4dfed8..b65b411b2395766dd5e48d8c13758a14c3eecb82 100644 GIT binary patch delta 57 zcmaF1it*JdM(#vjUM>b8u(|B8kvoQ8Hr~Z5CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2tJ|1(zr5snjy delta 53 zcmaF0it*VhM(#vjUM>b8XpXnv$Q{Ek8J%JkQ&1UGl$e*2pBq!0oROcO6O);pnz*@z H|CuWQ$QcrT diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/__pycache__/socks.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/__pycache__/socks.cpython-39.pyc index be080b00e43f2744ebefff6af56bcb24d7102b2d..552576f0f31f9b39e000a010b407a97b5a10539b 100644 GIT binary patch delta 55 zcmaE@{a%|pk(ZZ?0SIg^J8a}Wz$qK*ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`3WaG4*=z}5-k7# delta 51 zcmaE_{aTwlk(ZZ?0SKDo?Kg5C;FJtZv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{DPC6 F2LPVY5h4Hp diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-39.pyc index 9f24bdc7639327d3d82309ac44643e2629e09a30..bb6935beac463df9c71a9566dd643de9ff905ee1 100644 GIT binary patch delta 52 zcmX@Wc!ZHVk(ZZ?0SIg^J51!Zk<@ha diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-39.pyc index 2e1f20dac9b7820d7851eb0dc57128675dd9fc31..f3e3f030f178287231838da05cf3ed8e26d99c2e 100644 GIT binary patch delta 55 zcmdlVd^ngpk(ZZ?0SIg^J8b0MBp{pVViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`I^8>2>|B)6Bz&i delta 51 zcmX>cyg!&bk(ZZ?0SKDo?Kg675|B(yv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*d`sY^ F1OT825)J?W diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-39.pyc index eec1ec686fbdb579634b82f140e383269272cb29..807faca29e7e26313eb9b47f550f50d78db1c37f 100644 GIT binary patch delta 55 zcmdnve!!hOk(ZZ?0SIg^J8a|@Ws%Ktv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY{}9r4*(Ak(ZZ?0SKDo?Kg6ZvPh<-Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@wqb8u(|B8k$a|qY>10hOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;Uq0b8XpXnv$URd)G9bk&rl2yWC^0W3KR2d0IU_$mCnhsHHF5Jn Hfmcxg$Vd|8 diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-39.pyc index d7fff7b234a5cd10433ac3f6f387402c00fd74b7..a40a1e3fa333ddff15322eaa5eedf6a0ed6fc68c 100644 GIT binary patch delta 52 zcmdnRxQ~%Lk(ZZ?0SIg^J51!Zkxh27iV3L9D9O)@DN4*s$fqu|W73cr} delta 82 zcmeC+YT@Eek(ZZ?0SIg^J8b0cWR%Tuv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe Iyq2*X0H3B2E&u=k delta 50 zcmZ3%vV?^@k(ZZ?0SKDo?Kg6FGD>EoSj7}n#uO#yrR3+v6enlo=jX&^W~U}j-pE)E E0A1e@BLDyZ diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-39.pyc index 3f49232131619373ffa8350675c0780fc2bb7a60..65b8a4c2cd55cb6e0009844c4618cbdbcdf88e9c 100644 GIT binary patch delta 55 zcmX>vd0CP>k(ZZ?0SIg^J8a}mVU#U)v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+`;J14FJaW5oQ1Y delta 51 zcmcaCd0vt`k(ZZ?0SKDo?Kg6#FiPg9Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@?qPK2 F1^|Mb5L*BM diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/__init__.cpython-39.pyc index 207bbb45600ddb1bd8df819bf1c09e206691521b..aecff60fd2fd527635d07bf2951e208954f209fa 100644 GIT binary patch delta 54 zcmdnXagc*Mk(ZZ?0SIg^J8b0M%`6-0ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw$` I`95 delta 50 zcmX@ev6q88k(ZZ?0SKDo?Kg7oW|j<0v5G0Ej44XYOUciTDNfGF&(Dd;%uY?5{Fpfo E0Buzel>h($ diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/connection.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/connection.cpython-39.pyc index d7923cba05bd65af1d6d83d70d2c72040c45a8de..822e8bcab9a983037807ad81728ebfeddceaa34b 100644 GIT binary patch delta 55 zcmaDT^;C*Gk(ZZ?0SIg^J8b0UWR?wgv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jtjlb|1pvI%5UKzG delta 51 zcmaDV^-zjCk(ZZ?0SKDo?Kg6BGD`-hSj7}n#uO#yrR3+v6enlo=jX&^W~U}@He@#8 F0swio51#-4 diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/proxy.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/proxy.cpython-39.pyc index 7812d88e47f0df3cff76349b60823588e7b1fa49..1ee5f4ffac5209616264927dc3dd83d91c1f661b 100644 GIT binary patch delta 55 zcmZ3Fw&c J`2bTU69Bca5oQ1Y delta 51 zcmZ3>wUUcFk(ZZ?0SKDo?Kg7IVUqMqv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e1s{J F2>^1Q5L*BM diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/queue.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/queue.cpython-39.pyc index 055b8f932e745deaff70c1a240521376708f0657..6edcb0f9064d8341eadc0fd5a4ab203c2b3a034f 100644 GIT binary patch delta 55 zcmbQhF@=LWk(ZZ?0SIg^J8a~(VU!JWv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoWQt&2>_c{5VZgR delta 51 zcmbQjF@b|Sk(ZZ?0SKDo?Kg7UFiQHRSj7}n#uO#yrR3+v6enlo=jX&^W~U}@PGQ`@ F1OQs052^qF diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/request.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/request.cpython-39.pyc index 3fb495033fec60fb99a9434efcf7845937eb16bd..b73120b47d9978a09f645ace05cd19f82feb8df1 100644 GIT binary patch delta 55 zcmaDN^+Jj}k(ZZ?0SIg^J8a~3VwVkZv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoW}l-6#&To5$pf} delta 51 zcmaDM^+bw0k(ZZ?0SKDo?Kg5eu}cP|Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@&SL+^ F3IK%Q5a9p- diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/response.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/response.cpython-39.pyc index 039a9ab8d57a8f222c8e05276663fdd105e8bbb4..4f568377d12d087658d67a5cbf72136ec9b80aff 100644 GIT binary patch delta 55 zcmbO#G*gH>k(ZZ?0SIg^J8a}mVUi7Xv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+`-h#1^}o^5eWbQ delta 51 zcmbO!G*yT@k(ZZ?0SKDo?Kg6#Fi8fcSj7}n#uO#yrR3+v6enlo=jX&^W~U}@?qTX> F0{~`h5B>lE diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/retry.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/retry.cpython-39.pyc index fe0223eeafc4bed1e24cc9c83534043ac9e10ef7..e80a8929571d1969e2f5aae29e59c65b63af2a4e 100644 GIT binary patch delta 55 zcmX?7eWIE>k(ZZ?0SIg^J8a|*WtI(cv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JT*>Th1pwrt5)1$U delta 51 zcmX?6eWaQ@k(ZZ?0SKDo?Kg6VGE4fUSj7}n#uO#yrR3+v6enlo=jX&^W~U}@u4VSN F0sx*!5di=I diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/ssl_.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/ssl_.cpython-39.pyc index 04db21ffabb2e73c49aa4808f7c88f34bc9dae5a..2a0e6c33b44ace1a0f622dd9cd066e749145529e 100644 GIT binary patch delta 55 zcmZ1&u{44^k(ZZ?0SIg^J8b0UXO#_fv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|Q#j4FJ7}5rzN& delta 51 zcmZ1)u`q%=k(ZZ?0SKDo?Kg7svr77=Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@HfMdO F1^{|;5PJXs diff --git a/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/ssltransport.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/urllib3/util/__pycache__/ssltransport.cpython-39.pyc index d66ccb6e8148e669f404a3a272cf6887aab3e245..0c5412f4277fc92c9c32d00679a118434bd2b01a 100644 GIT binary patch delta 86 zcmZ2wwa$t=k(ZZ?0SIg^J8a};WR;C{v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ jtjcJq JKFqpT834o+5+wit delta 51 zcmZn(ZV2X1Fw&c J`3|E87XZCk5tIM` delta 51 zcmZ1>u|$G9k(ZZ?0SKDo?Kg7oV3hPtv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*{D9Ge F3jleS5QzW) diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/event/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/event/__pycache__/__init__.cpython-39.pyc index e1245c12a4069c5ef24405b7932add0b033ec935..1518489865ea52f06b2fedb9ec93ef17bfe6f905 100644 GIT binary patch delta 53 zcmZ3?yquXkk(ZZ?0SMeKJ51z$D;w-$6%$aIQIek*Q{Dv5w`#U delta 51 zcmZn^_{-0o$ji&c00c>e_8Yk`vPuT0Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@{>jS0 F1OS1g5R(7^ diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/event/__pycache__/tests.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/event/__pycache__/tests.cpython-39.pyc index e6312992c6ef5bd58884dc69f70bd0a2c2e780ce..c9ee013b6721917fa22a37b0810c9228b047dc27 100644 GIT binary patch delta 55 zcmX@ae~h0yk(ZZ?0SMeKJ8a}`V3ZATv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ Jyo6DX4FJA*5h(xw delta 51 zcmX@ce~6zuk(ZZ?0SJ-`?Kg5aFiQHQSj7}n#uO#yrR3+v6enlo=jX&^W~U}@Uco5G F1^{;h5Cs4L diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/__init__.cpython-39.pyc index f7b9b476a7e3834d9830a41d685ecbed3b3d3ddd..155b7ffee05658f493e97fbbca4aa325c3aab6cb 100644 GIT binary patch delta 55 zcmaDW@==64k(ZZ?0SH_#J8b06;E)Y>v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+{5vZ5dhLH5-R`z delta 51 zcmew;@>Ya9k(ZZ?0SJ-`?Kg5~a7YHHSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p1|>t F5deva5eNVP diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/_compat.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/_compat.cpython-39.pyc index 83c62ef714d1c8ad5a08a885f9a9a7104295d081..c4c95d460716ddd29f30feb655e0490221d689cf 100644 GIT binary patch delta 55 zcmaE;{8X7ck(ZZ?0SH_#J8a}GXOazbv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JJe$dl9{|&a5w!pS delta 51 zcmaE={7{)Yk(ZZ?0SJ-`?Kg6lGf4)eSj7}n#uO#yrR3+v6enlo=jX&^W~U}@p3mgQ F4*-g)5Rw1@ diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/_flatten.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/_flatten.cpython-39.pyc index 1253d69780efeeaf12b17561344592a88caa48e1..a72511a015520e402a8c9ada9b0650eb360bd67c 100644 GIT binary patch delta 54 zcmX@Xa)yOFk(ZZ?0SH_#J8a}mW|R$gv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcWe I+|GCq0H?|kXaE2J delta 50 zcmX@Za)O0Bk(ZZ?0SJ-`?Kg5KGfD=hSj7}n#uO#yrR3+v6enlo=jX&^W~U}j?q)m) E0Ae8!MF0Q* diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/adapter.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/adapter.cpython-39.pyc index 66211ed67f5ff9c72c84d79d4a70e09e4e8a6f5b..2937db212be6525196bd3257e91b7c38ae80fd84 100644 GIT binary patch delta 57 zcmex*mhtCVM(#vjUM>b8aJ}rXkvmR6Hq6B;CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p2u^KyerVCgKy3 delta 53 zcmex)mhtOZM(#vjUM>b8NGi17$Q>sj8I)obQ&1UGl$e*2pBq!0oROcO6O);pnz*@5 Hpg0Tw*e?=p diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/advice.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/advice.cpython-39.pyc index 4d95fa6f92df5ba3c790e5cafabce74e27a2a52d..b6d6c69673a60a6e46b97d03a433689e1bdbcce6 100644 GIT binary patch delta 55 zcmaE&_Ck$2k(ZZ?0SH_#J8b0M#3~!=ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`5J27 diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/document.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/document.cpython-39.pyc index 061b2546d08c49f8c3e7ca56d97d0837ae656523..d1ce71bb106ca5be7639316acd9cc2c1db6fbb78 100644 GIT binary patch delta 55 zcmaDW@lk?1k(ZZ?0SH_#J8a}OVUZ1Yv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J9Kj;W0RYKV5dHuF delta 51 zcmew;@m7L6k(ZZ?0SJ-`?Kg6put)}{Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@j$sky F004n-58D6$ diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/exceptions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/exceptions.cpython-39.pyc index 8c32a7c56f7a511621e4482b1c643e84a7097559..e7bf530c5423044a0b1d9c3bea30b2879b4e58d8 100644 GIT binary patch delta 55 zcmca*anFJ~k(ZZ?0SH_#J8a~B#V8x;ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnUBdw3ION`5y}7n delta 51 zcmca-am#``k(ZZ?0SJ-`?Kg72Vw4O`v5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EX3p^ F1pu7r5T^hD diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/interface.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/interface.cpython-39.pyc index 59dc09831ce482a5d515f1431fd041cbbe4262ba..4c54ac8c17dbe947d752c631a8ed730ab9c7f03f 100644 GIT binary patch delta 57 zcmbP!lyUY^M(#vjUM>b8aJ}rXk^2j?Y=nzdOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK((~mijmV4Js1u delta 53 zcmbPzlyUk|M(#vjUM>b8NGi17$o+*`G9<++rl2yWC^0W3KR2d0IU_$mCnhsHHF2{H HOMM&wzk3nO diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/interfaces.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/interfaces.cpython-39.pyc index 89515365c8a8a00a50218e566900a8b7df04b9fe..447808a2b2ed59877fc1ca79d070fdf383cd4800 100644 GIT binary patch delta 57 zcmZp=#oTs_nLCk}mx}=iTrWFp5{$ delta 53 zcmZp>#oTm@nLCk}mx}=ik_zoNa*J?ChNf7>6ja6(CFZ5%=f)H#XXNMS#AIftCT_Oj HIQ0YorJWJ# diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/registry.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/registry.cpython-39.pyc index a3bd22ffc4c92655d787ac4901a3c2883180d886..f8b2682bd5277d79fb3d938980890ef8fe01891a 100644 GIT binary patch delta 57 zcmcbxf$_=)M(#vjUM>b8aJ}rXkvo@3Hr&N3CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7Ggrv0G+3w#q> delta 53 zcmcbzf$_oyM(#vjUM>b8NGi17$eqh18JuDjQ&1UGl$e*2pBq!0oROcO6O);pnz(r? H)BaEZzR?mm diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/ro.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/ro.cpython-39.pyc index dff9b3f5150ddf19608e6620d8bf47b14f3c310e..d4c7eed402c7fc3e9ffea45077c719809be2e4fd 100644 GIT binary patch delta 57 zcmex9lkxXVM(#vjUM>b8aJ}rXk-LyzHqgZ?CZIB-BtI{vC^0W3KQ|^gIU_$mC&ts; L)p7Gw{v=xf6Pptv delta 53 zcmex8lkxjZM(#vjUM>b8NGi17$X&=U>6>B|Q&1UGl$e*2pBq!0oROcO6O);pnz(r; Hf08W##zYbS diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/verify.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/__pycache__/verify.cpython-39.pyc index 001f9f11f7fc5b5b0d3cdb734c32b9bfda57e88b..6256308db3396018ddefb3bcdf244311dd5d4791 100644 GIT binary patch delta 54 zcmZorZc*k=e_8YlZF-k_ISj7}n#uO#yrR3+v6enlo=jX&^W~U}@zQky+ F004fg5TXD8 diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/__pycache__/builtins.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/__pycache__/builtins.cpython-39.pyc index 9c47a45cf9a3a14ad1f3920dc0c08e7365ee9663..1263086cef7e19d296dbc5dfd31a072d2d185308 100644 GIT binary patch delta 55 zcmca2eM6c%k(ZZ?0SH_#J8a~hz$_c*ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c Jc?+`w7XZ(p5u5-3 delta 51 zcmca1eMOo(k(ZZ?0SJ-`?Kg5yV3v$Zv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*yn|VR F3jl`Y5P1Lq diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/__pycache__/collections.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/__pycache__/collections.cpython-39.pyc index 1520ba9bf82ecda359c5e2cfd597a7b086a1c277..c255ebb4a7b91f5ad5a08f7ae31892d0921e4feb 100644 GIT binary patch delta 55 zcmZ2yzsa6Ek(ZZ?0SH_#J8a~h$1a=bViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`4IaXaRAe15|{u0 delta 51 zcmdmFzs{aJk(ZZ?0SJ-`?Kg7IW0#Cgv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*e2o2# FH~@-f5p@6n diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/__pycache__/idatetime.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/__pycache__/idatetime.cpython-39.pyc index 5b336f196c29e4f31726858d79450d55b8cde017..71ae5b7091de62ec7962be465e449a8a58b9a68a 100644 GIT binary patch delta 57 zcmaESfbsbOM(#vjUM>b8aJ}rXk^2g>Y`lwAOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;S$%-JyjE1ncA delta 53 zcmaEUfbsDGM(#vjUM>b8NGi17$bE%bGCIX7rl2yWC^0W3KR2d0IU_$mCnhsHHF5JF H=Ij^%+#3@K diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/__pycache__/interfaces.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/__pycache__/interfaces.cpython-39.pyc index 6b9756cbf8a905a38e25e6c63cb11aa17c38a0b9..bc0d70ea316a2689c1cc606db1740a17abb7092c 100644 GIT binary patch delta 55 zcmdmJv(<(>k(ZZ?0SH_#J8a|@VUFw&c J`4r24aRA)E659X( delta 51 zcmX?WdD4Y!Kv5Fw&c Jc^6x<3;@hN5$gZ| delta 51 zcmZ4JHrI_ik(ZZ?0SJ-`?Kg5yW0Qrb5Vvnk(ZZ?0SH_#J8a~>$0(cbViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTg4p2LRU85nliR delta 51 zcmca8b5@2sk(ZZ?0SJ-`?Kg7YW0Xuzv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*N!+ F0|1Ql5Ig_? diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_builtins.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_builtins.cpython-39.pyc index aa28f1b67ef77b79998e5749d17c5f326041692a..e689a2f911424a18ebfbfb29bffe616b009cd2f0 100644 GIT binary patch delta 55 zcmaFP`I?hEk(ZZ?0SH_#J8a~B!6=*QViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnTP2%69C-e5(xkR delta 51 zcmaFO`J9tGk(ZZ?0SJ-`?Kg72V3bTvv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EWmV| F2>_Cs5as{? diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_collections.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_collections.cpython-39.pyc index 1522d21ea83bff7c4258281e64a16463e5105996..56b6a0e70ba1a325964a4c85b8e9b2b1e39ef749 100644 GIT binary patch delta 55 zcmX@8c~p}-k(ZZ?0SH_#J8a}uWtPoxv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?8#gq2mrp>5h(xw delta 51 zcmX@Ac~Fx(k(ZZ?0SJ-`?Kg6(GD~KpSj7}n#uO#yrR3+v6enlo=jX&^W~U}@_GPXR F1ORur5C#AM diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_idatetime.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_idatetime.cpython-39.pyc index 72033bd4c06389ac922ceb9601b06ad6fe4d80f1..d9574f745b9af77fbb2356468dcb71221ae04e4c 100644 GIT binary patch delta 55 zcmbQvHJgh&k(ZZ?0SH_#J8a~ZWR}fxv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JY|DI$5dfag5YGSr delta 51 zcmbQuHJyt)k(ZZ?0SJ-`?Kg5uGE1hVSj7}n#uO#yrR3+v6enlo=jX&^W~U}@c4WTA F2mo3y53B$H diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_import_interfaces.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_import_interfaces.cpython-39.pyc index 50cf30ab9d7002670ce2ec979deb200214c543d0..bbdd7369acc69f6f4d981c49727b15e3f8d4e2ac 100644 GIT binary patch delta 55 zcmbQtI-Qj}k(ZZ?0SH_#J8a~3Wt1&)v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoXM!g2mqmb5NQAa delta 51 zcmbQvI+>L_k(ZZ?0SJ-`?Kg6}GD_y9Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@&SlhM F1OQxH4@Lk0 diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_io.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_io.cpython-39.pyc index 357b13e47d4e5567a3c23665e1d505817157cf3a..c44ebbc499aa3a4429a5803921c2b74aec763298 100644 GIT binary patch delta 55 zcmX@hcae`fk(ZZ?0SH_#J8a}mW|U2Kv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+|GE66#&7x5xf8Z delta 51 zcmcb}cb1Pkk(ZZ?0SJ-`?Kg5KGfKv%Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@?q)p3 F3IKXV5Sah~ diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_numbers.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_numbers.cpython-39.pyc index d270bdb7a2cf263b14dc2c8182d2469059f4ffa4..ec5d53cf71d47822d988524ddacd82b6b314c77f 100644 GIT binary patch delta 55 zcmX@ed6bhok(ZZ?0SH_#J8a~B$tauQViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnU`q`69CMU5tje} delta 51 zcmX@gd61Jkk(ZZ?0SJ-`?Kg72WRy%vv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*EXcHl F2>^q85Oe?l diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/__init__.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/__init__.cpython-39.pyc index 5b646f4e3dcbdcb4495852950c531d9d44decdcf..76e29890eb49320be64723c07316dccfd5e1d3f3 100644 GIT binary patch delta 55 zcmbO#J5!cBk(ZZ?0SH_#J8b0EW|EC{v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J?9b%J0|2GD5Pbju delta 51 zcmbO!J5`oDk(ZZ?0SJ-`?Kg63Gf76KSj7}n#uO#yrR3+v6enlo=jX&^W~U}@4rX%W F0RUiu4_W{K diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/advisory_testing.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/advisory_testing.cpython-39.pyc index 38ff41dae1041cc4e499b5e4367f3ce598342139..5619e2f3b43e2d8a71e584760d2b23e37390eaee 100644 GIT binary patch delta 55 zcmZqRY~kcik(ZZ?0SH_#J8a~RXOxY0v5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ J+|0J5HJ7$ delta 51 zcmX@Xa)gCDk(ZZ?0SJ-`?Kg6ZF-iufSj7}n#uO#yrR3+v6enlo=jX&^W~U}@wqxXC F1OQ~{4-EhS diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/odd.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/odd.cpython-39.pyc index 0fbb6f1c07aa2bb7ac6eec77f08a8808a5d1c28a..0978683903ca06235c10069a783c44ec9a4b95e7 100644 GIT binary patch delta 55 zcmZ1^y-b=rk(ZZ?0SH_#J8a~h%OV@$ViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c J`5?j?Bcmz+SF;ku delta 57 zcmbPufu;8X3wI(fFBbz4Bo*3k-@1&a}; diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_advice.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_advice.cpython-39.pyc index bc45478a09ed081b0e69c032457c9623c834e5c4..ab4a39393a0998b6773a46a388b6d89a88f8c483 100644 GIT binary patch delta 55 zcmaD={jQojk(ZZ?0SH_#J8a~B&LW%OViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnVa>#1po}e6DR-x delta 51 zcmaD?{i>Qfk(ZZ?0SJ-`?Kg5iXOWCav5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%+Gq? F0sy|=5(NMN diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_declarations.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_declarations.cpython-39.pyc index 9336da6e4ac3d4729796e54c8e964dfa22ea086a..34c95c4acc1e18fe41c720340557b7fdcd3c9c95 100644 GIT binary patch delta 61 zcmX@|i|xcOHts}TUM>b8aJ}rXk^3I2Y?_NzOh9EuNq$~TQDR<7er`-~az=iBPK>9w Pt79`0+jb^4MyKrng{u@! delta 57 zcmX@{i|xoSHts}TUM>b8NGi17$bFAhGAYF>rl2yWC^0W3KR2d0IU_$mCnhsHHL;nE LZ95wqqtkW(Fmn?x diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_document.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_document.cpython-39.pyc index 8083935ff1d7cc8d8a735e5f7a7fb624a6857d21..23cd3ea3222d536c0b5223a3324875af6e5940ae 100644 GIT binary patch delta 57 zcmaF8l=1yiM(#vjUM>b8aJ}rXk$WqnY?6yrOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;UIj6#6`9s3hw delta 53 zcmaFAl=1aaM(#vjUM>b8NGi17$i0%P5=ZViglmnNgCT7gLm&my(|w6P%oppPv)s>Fw&c JnUN`w5dhBM5ikG% delta 51 zcmcb{c8QHUk(ZZ?0SJ-`?Kg7YWt5Cfv5G0Ej44XYOUciTDNfGF&(Dd;%uY?*%*qtV F2mpno5DfqT diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_exceptions.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_exceptions.cpython-39.pyc index ddf451d668911d009e9027a88bf2f6b1cb976999..bf2ed2fd31add0342ce86fcf3b0caf5d49a912e6 100644 GIT binary patch delta 55 zcmaE0{=}R+k(ZZ?0SH_#J8b0cVw6pBv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JypGXG3IN~*5(EGM delta 51 zcmaE2{=l3&k(ZZ?0SJ-`?Kg6FF-j(+Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@-o$7m F1pt;25a9p- diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_interface.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_interface.cpython-39.pyc index 5dab7eecfaa7c437174d9b78f3d977f7b180d926..21c2cf3f499a3a68976b68778a90ae225fe4c97e 100644 GIT binary patch delta 61 zcmbQ##6GQwojZ}2mx}=iTrWFp5{$!w diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_interfaces.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_interfaces.cpython-39.pyc index 12f25d36dd7799c014a0ec27ea36f992118af836..be1490f530336bb114c025e3659858693af3b2f1 100644 GIT binary patch delta 55 zcmX?Me8!kNk(ZZ?0SH_#J8a}`XOvBGv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JyqZx~0szyN5w8FM delta 51 zcmX?Oe8QMJk(ZZ?0SJ-`?Kg6_GfF0;Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@Ue72i F0RW1Q5R3o- diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_odd_declarations.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_odd_declarations.cpython-39.pyc index 8d5b3d786af910572e02639d6a9807eb995ef088..3cebb5e1b28bbe3b7e6d72ca2fbe2f9da3a46f90 100644 GIT binary patch delta 55 zcmcZa4CR0k(ZZ?0SJ-`?Kg4ezgrb^Co*M&-u#NKp?ojZ}2mx}=ik_zoNa_?r9j7zbKDX5GoO3X{i&y6Wg&dATtiOI}PO>BP5 Ly8SULqw-?_2)z^g diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_ro.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_ro.cpython-39.pyc index f8e6c03772e628bf839445e0d705ed95eb98d207..43d2fc493061062d3bff13e703b7b97890d4ee40 100644 GIT binary patch delta 57 zcmX>-neqH&M(#vjUM>b8aJ}rXk^2IpY>bOlOh9EuNq$~TQDR<7er`-~az=iBPK>9w LtK;S`jMv=(4R{mk delta 53 zcmX>b8NGi17$bErPG9tw)rl2yWC^0W3KR2d0IU_$mCnhsHHF5I~ H#_R3?z(Eqn diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_sorting.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_sorting.cpython-39.pyc index 75de4912208a68a598ce62d1564386c800b00c72..e0a43fc0ba5d16244687f194a6f2e3dafd6f0560 100644 GIT binary patch delta 55 zcmZ20yiu4tk(ZZ?0SH_#J8a~3W|U2Iv5E<(%qYpviz!OXOUciT2~N()&(DeR^mcXJ JoX+UR0RXS+5XS%j delta 51 zcmdleyjGYyk(ZZ?0SJ-`?Kg5eGfKv$Sj7}n#uO#yrR3+v6enlo=jX&^W~U}@&SrGu F003#$52OG9 diff --git a/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_verify.cpython-39.pyc b/IKEA_scraper/.venv/Lib/site-packages/zope/interface/tests/__pycache__/test_verify.cpython-39.pyc index 578f6249339e73f883985ec5ae783069c1b3eb05..dded8618b5b40a69cd0a5d67ac0690d456cc12a5 100644 GIT binary patch delta 57 zcmX@s$#kldi93;(mx}=iTrWFpnV_38>5{$ViglmnNgCT7gLm&my(|w6P%oppPv)s S>Fw&+B-AFvxJ`(OOAP>}(-d0( delta 63 zcmeDCz|r-AgEx_vmx}=iQVZ=9eKzvm5|j)`v5G0Ej44XYOUciTDNfGF&(Dd;%uY>g RW)W&<5n|lVBE-a{1^|SI6F&d| diff --git a/IKEA_scraper/.venv/Scripts/activate b/IKEA_scraper/.venv/Scripts/activate index 1793b6f4..868f87aa 100644 --- a/IKEA_scraper/.venv/Scripts/activate +++ b/IKEA_scraper/.venv/Scripts/activate @@ -37,7 +37,7 @@ deactivate () { # unset irrelevant variables deactivate nondestructive -VIRTUAL_ENV="D:\py\random\School\IKEA_scraper\.venv" +VIRTUAL_ENV="D:\Pyhton\random\School\IKEA_scraper\.venv" export VIRTUAL_ENV _OLD_VIRTUAL_PATH="$PATH" diff --git a/IKEA_scraper/.venv/Scripts/activate.bat b/IKEA_scraper/.venv/Scripts/activate.bat index fb30c424..b2b40b91 100644 --- a/IKEA_scraper/.venv/Scripts/activate.bat +++ b/IKEA_scraper/.venv/Scripts/activate.bat @@ -8,7 +8,7 @@ if defined _OLD_CODEPAGE ( "%SystemRoot%\System32\chcp.com" 65001 > nul ) -set VIRTUAL_ENV=D:\py\random\School\IKEA_scraper\.venv +set VIRTUAL_ENV=D:\Pyhton\random\School\IKEA_scraper\.venv if not defined PROMPT set PROMPT=$P$G diff --git a/IKEA_scraper/.venv/Scripts/bottle.py b/IKEA_scraper/.venv/Scripts/bottle.py index 1a9542a4..1c089d4e 100644 --- a/IKEA_scraper/.venv/Scripts/bottle.py +++ b/IKEA_scraper/.venv/Scripts/bottle.py @@ -1,4 +1,4 @@ -#!d:\py\random\school\ikea_scraper\.venv\scripts\python.exe +#!D:\Pyhton\random\School\IKEA_scraper\.venv\Scripts\python.exe # -*- coding: utf-8 -*- """ Bottle is a fast and simple micro-framework for small web applications. It diff --git a/IKEA_scraper/.venv/Scripts/futurize-script.py b/IKEA_scraper/.venv/Scripts/futurize-script.py index 0445b057..d146f3db 100644 --- a/IKEA_scraper/.venv/Scripts/futurize-script.py +++ b/IKEA_scraper/.venv/Scripts/futurize-script.py @@ -1,4 +1,4 @@ -#!d:\py\random\school\ikea_scraper\.venv\scripts\python.exe +#!D:\Pyhton\random\School\IKEA_scraper\.venv\Scripts\python.exe # EASY-INSTALL-ENTRY-SCRIPT: 'future==0.18.2','console_scripts','futurize' import re import sys diff --git a/IKEA_scraper/.venv/Scripts/normalizer.exe b/IKEA_scraper/.venv/Scripts/normalizer.exe index 2e90c1a5be5a1dc30fff2ff29cc0f071b189cd81..16dcb1c6fd40421f69ff12728759621720f42213 100644 GIT binary patch delta 80 zcmbQfpKbPjwuUW?O!IVHtYQKxGfMLFVu}*;Qu1?Sf|E1y^K)W6y i^vY86%3^}2Yt3VnV{V(Lx7~XlBPSz>H9dSjqXPiW#T^*{ delta 76 zcmbQepKbbnwuUW?O!G8StYQi(V~P^^vY86 e%3_MA>&;`7V|MM<-R?h+k&_X`njSr$(E$K(>KncQ diff --git a/IKEA_scraper/.venv/Scripts/pasteurize-script.py b/IKEA_scraper/.venv/Scripts/pasteurize-script.py index 5a76d018..34a9afb9 100644 --- a/IKEA_scraper/.venv/Scripts/pasteurize-script.py +++ b/IKEA_scraper/.venv/Scripts/pasteurize-script.py @@ -1,4 +1,4 @@ -#!d:\py\random\school\ikea_scraper\.venv\scripts\python.exe +#!D:\Pyhton\random\School\IKEA_scraper\.venv\Scripts\python.exe # EASY-INSTALL-ENTRY-SCRIPT: 'future==0.18.2','console_scripts','pasteurize' import re import sys diff --git a/IKEA_scraper/.venv/Scripts/pip.exe b/IKEA_scraper/.venv/Scripts/pip.exe index 176cf8aa5ea0291e18d155729325f6e90a157ea3..886c38bd9cf2bc6140e75945267be2b002266bc5 100644 GIT binary patch delta 79 zcmZqJ&(^Y^tzioz(>xs)tC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%0o;^d;lg4CiI gy|UE2vY6oMTJsp?m>cKmP4}M1_zBE#n9t|{0Igabk^lez delta 75 zcmZqK&(;7$TNs(xs)tC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%0o;^d;lg4CiI gy|UE2vY6oMTJsp?m>cKmP4}M1_zBE#n9t|{0Igabk^lez delta 75 zcmZqK&(;7$TNs(xs)tC)bwjFSAkn4-kIl>FS7;N*<_{G1q1Z&%0o;^d;lg4CiI gy|UE2vY6oMTJsp?m>cKmP4}M1_zBE#n9t|{0Igabk^lez delta 75 zcmZqK&(;7$TNs(~H99LM+F=4->w%u=nDP3BiSW|JYND|2WwKPp#`RBjaVvpfjdc5^1VTtqs* zMk2q7W21=l%TdmcPOD=P`ITScu5jGAJCDbG9*^ha`FX!TpU?aA&uc7=IF?4dCg9Tq zPskC2Mg0HZUMb^UQqaSJg7ifVu42tz*MGpAR#cwB5Znxgg`)`0e~(sB_foe3R~_*bgN+BfJh^e zgXm8bpbX6w;yWlp{IhgzV}u*Q;b>>1ecwI@M!h62om@w%_P(x1otSW@FE$uo=$j=; zl8q4}Ri#df5Zx}pTOr^8pH4B^9EXIP>c9yW{AfnMx{Wwn`r_h50FIqGSlTVu!Z%}# za3AMc?0gDp^8o-TLEu6tWUrqWJNFko(H%V({VJV~$9?DmS6VOVkT}$`u$P;l!mf16 z>y^z1oA1%%F18I96<(?fO#Zyv?wcNd;KQUZq$b~n(&y){9N(`%p|DeyX$^-S}}6i&E%;pr591;6FH zhz{5^=0ux)Pw>lWl1xmSX*w6_^t{qSB}TlOHWYs|=ZTi8c~%F_CTQ=A_+zFknVAB{Uf!1Zx7D{+Zv9H`DLp?&GLzZCPitg) zJ&!)Bs}>Q(?!H&e@w5qYcoe6{56dqGwV5BHLvrSQ17VtxXYy3_gAbu9eq+u}(z|c` zYH>swx$8*(!n;$Ui{#X>R0HX7Yjm$`?X3Z+hTX2J)bTL5a9{IS1))E7)<@R!j?j=uuJ=|5Gkr3omZtO8_K95q~iBgpC_OYmwwYG(38X2e=o z4XiPA;q7)vuxXoCo)E>O2vJd>${rAa1423s2AB#_{)*n2&A_Y&7UiL6xkCY%sX7Iv z10qk08~`5}9ID6?OLUt7N``F(zz{~{Z z&AcbZ5e(LD55ymjzp65PU&10)$=J=+AMPM xI{xxUuCnwJfY>@0YPoOs}H?J`!kWO8)N)c{W>!ZXue3%~Tv2R7;g`5O)|ZgKzs delta 1446 zcmY+CcT|&C7>DyE;o}QQN<`EYBP0X|Wh6leVbgFxpkc)U0#zh{K%7xPiX;-IiZW!X z?4f{cBq|62L1+|nO3O+q!va!7sTRRTp$)Xvk8}YlL4zLhyrl?pBkjMenfGa>K zKq^oYaR4w=4Y_tR`}1ZHPh8urO~fcrR}f$f!U723T5Elt$XFd*RK|U>&sY&-bnMHv zxKBOOdXtgJAb<*#MGOKohEM_VC>R3v0RiGgL?VO(0J?}qf|TJ3n~|Y@6?GYi`YORO zVHpc3!wZFkXH+4fCtJ%9ViR}lO?Q{AVp2FezjNc2_GP8XXV|x}V^@!J7W-C+n1iA; zLnr~Q^nxnHNkjy52nh)2RLaIU6q2TmB-WyDb1$CXZQ~L}V8;1wIx6l=&Kh%|6B4#A z_P8`iUe506JDen^t? zbuSL)I!|VaulaAwH}{z^QdMqon>PQPCYIkV&l_{L$T5619MLetpAT^#B!oayeptzg z*VZC3gKQDnaiGA^jYoFK6}UiSjSU&ca@4%1b7>781(U5S(T{h}St`vh$tpXVdiK0f zYxZ>fPC6x-)zT?OU&k_8wXN*u!|A{X@wHJ~&BVZ!Gd|-s-1&3Pn+)|*2TG(KEG5Sb zqRhYEcfP~fe;cJ1Ax;|Q#%mXZ?P0=;B?zYDP`L-EDa z8bqFD;GOBS^1=4rj~_@w&zT2s)+}-@I&a)Qe>j(Lg~R*V+--|pby%2dXdPLSjr+qB zD;FN>z8PL-yS+$=jiw5*k)Vnm2p|EWDFOk|gxC;8FK{C;Yk|ccQnc7`06|lwVzoh( zUxFhLh(N*>S)xXO=zpV)!U4#_U}O+AAp5ZuL}J2NnW=8ga$4u`v+KICs_M+NMnCx|7`xOk(Ga-JDL zIZ;zT%3FeSB(~z8XuIZcAU(yj+=)|nQvaZEA-!<+7n8V;hii5)JWf&xwQ3rn_8wg~ zZ=6ZxPDPz>WM+(%I;QNh4xinZSN|nXy83NG%&DS3#aWhE&?Z$MdU^=87{3_PKFO1o*$ zgwC>4KBAVX8J}l2P`yfyYCPG{7by!*Olc}STYsKr>*^Qbdf8yngVGUavRVd?gvZ1i uWAnktvu`u>c|CJJlPnAAOCH`Q&Lrl{<>dz#9#wI@PurD}ke}YcV1EPd+iY3@ diff --git a/IKEA_scraper/.venv/Scripts/pythonw.exe b/IKEA_scraper/.venv/Scripts/pythonw.exe index 5ffbf4dbc0de6fef7706f73f84e6702c5e62a547..910fc6b9fb3f39c20e81dc657335f8ad82001af0 100644 GIT binary patch delta 1431 zcmX|$@)xK$#$F0&ZiVLavk1C3rreQQ!t|5=xpgHGgD9Pe*demND70#7v zc!l#HBQ@Tids6cU?ECWdfWcTIlorg_)h4_M1iTSKT}=8BAnORQCb(J%wLrDBx&bMNo@nkA$&Ik!vGOo?NmKnSsL3FzOiWEb{}mb;b4iB@HcE zbW^09Zi>3Usy%OnfgxZ^hBKBcFXlm&?vZ?Br~*1n=p*TSc^PGpKt&QE*2Uq zA)#@1v6(g6pB(wi2|K4SYV5bqs?etkSY7@g+gR+?LX3PCqcjg0{YzeGjTT|G`XM2{ zS8nWx1_8ltXxDli2BevT;*(&3G?1~gQI)@UL;&7E;{V+!t?t~Kw}^;;>&wzur4lbns~VFpiV_e`Co zx7*aYb_aT!6`m$<9U7kAWM-7P*H39xGR6=+DSLHcqQ?KQER}*9V#>lop0K#t{MLO7 z&j~sAF52x$T|5qk4myf*DMjGUz>&5y=bvPsGtm9GLeDJF;t76!dwEe-^!0T>e*4Lo z$$FUxAq*{O$U)U~EkKvET^~9JR>!@ZHp#2KJAQR&F=r4u>I#&PZPOmxVa1RibCl$@ zg_rETMXpGmC{>X|zNktKe-zN9iEcDuqhIONLUll{Yrm}Q2h;~gem}i|k7_7uw`XM; z?nqA`+~i^;5YR2O&%LMW*IbJ&c+-~GS+uIyCUbKu>DAlbXh}@F&UyE^>ucmYoxX&9 zc#GP~eD+wV5YGWc4R*LTr!YcE%>F!1 zy|`SQ9+eiFR0h)t{S=Yp({3L)EIoQZqC<$XN$rajZd>)?$x`xzKlJm0G$D?wp0U>pvsPGKpnBvF2M{zp2xpGOoDg{eYy=2b zcL_>BV!u}#g9kt{2RsF_iWPg%6n9G#pSv08A|?TwzI^`aIcCq?R7Ovw)uA(t1pJpr z4Iklnwo~Wk8G{3aYHWGH)jbZ0oAqoVTN*^SgKQx?TRS^B#RhqdIMYlnhEm6N*3`w1_4ZO0ADKSy=ywOHBh@jL?#{0ch?$>FqN%SV`m{5}X{o2D zVw;O%-X!zexHFazz00jbS6?bYvVmw;OI4S}V&t4d!U~o=xTQOJ-s4t+st>PJrFwT_ z#>j%&xXC7GW7XTqfyeXXQ94|DeCwwyE{o=|KbBh@Z713#5u}HLhg%a^5rBtS*FZ{R64Omx@~4-db( j{OAs~(|rC?abF`I$+KT{F@E|xi1_J7xjQ(j3xoX&bPHT) delta 1431 zcmX|~H99LM+F=Ic9dnJ#M<^D946m|r9Mp|tZO;><%*X+pM1gcxFs&5v5Y$gE#y zj{FGemQ7Sb9U)fjP7>YY%ygT$LsO@yxyPB=k@vLHOVuY-!7%YOTt_GW$9;6l`0UtzF2$W3$aw))y;7TEsLMo*up#Y$c z4szut|2P)J8LsSBa=uY&ol+4FAS{9au8dT9l5#AVqmDt3{N)pw2KnR*dmphW-HKdi z0w{4Ns6SlR0C6Z70=9qvabi6P0{|q6wmzf|S5nsin%7u21fndto?HbQP=}YY^?HeH zy)M3iB@|$oEGm9Qg>jv({8k}zkNhw#-&NJIC#3VBQI@o`u^iDSxo8P-HP!lwY)p?t zj|3qB7Kv!H8izvK8Y2y0voOa z#DRow+b;{>*>t{RUDvVL-+py3p}p_{;X!up89(rIYhxCPWFw1otoe7n{%%4csmY?RiIE!1~4D0rH6_b%C_0v9)8LgSG z`-{-CRUq%J=cm}Rw={$^bH1S<5T3Q^d8vYR5lUv)3G-;IH_Ng0t`A8YZ}9uMCYZd( zMvphYdOtNPrQ7A9w`dcJqHaui27-*Hxb6vZLFjqreKS!ORhTIEa5Qo6NeZs9v^X+w zEnb`>T-I1}ICCz45T9@a^~kNLc8-(sOsBsu$~bd881rFGZhD+uHVM;f%)Qg-TJTcx z;*Q(h`{rIOJnd?U_36f+N5q?&QxBC)-e)eRSmAwt!sGYb^X9$sPezE{3wwIMY?v^6 zJv!rGr!cZuV@S26W;{FF)si|gdo6joTEGZha+1#?qec9z()hBFM4u@=OP9oSZekif zGCg}CxK}n|pYy<2|q!DD-n-SN>SGC&}MhT75zQ--DM-a0!9 z+2{-+8=VSjYz6@&z;;3)09!Vip`0CCEzC+`(fgGn3LHS#Y7x=KAd1TM1R@bgxUx$` zCaC$f+9(WwETto(h>`pUTOlKN7Ku5wAR2b#Z}9w7m|z<;s5NC)S%fcfGziPn@#x5b zYr_fxn+_F+w?J|OtC=!aTsuz7j%a5~B-uIJI@;S4w@M6MptYK)RnK=NLpu%2qePrLOLNx<%7BY&N_cHHL$5ne=yH$sRROo^2M?BmMQ)o% zwC>IIbvoo(=ox2>*RPE+F+JskomjKmf3{O^SH$-T7uTmJnWqZc_$S8O>Rlf_Z7??+ z5Impdurky5@uKhrM^BQ-Tf5a)fDJGWEBzDk`7DK@`T5uH6#CD0+h4n-NUT|Wjx!#% zjvbS7Z+4sOKlvk4$13^?-pp+n+f{2I?1vJ(sxk5dP#M4cBdIR-_V5?YhLEZ>;>W8r kv0~mdr9x|8<1w`UP%Um4(UJ%I7fyp|I{*Lx diff --git a/IKEA_scraper/.venv/pyvenv.cfg b/IKEA_scraper/.venv/pyvenv.cfg index 4ea9ff83..c74066a9 100644 --- a/IKEA_scraper/.venv/pyvenv.cfg +++ b/IKEA_scraper/.venv/pyvenv.cfg @@ -1,3 +1,3 @@ home = C:\Users\User\AppData\Local\Programs\Python\Python39 include-system-site-packages = false -version = 3.9.6 +version = 3.9.7 diff --git a/IKEA_scraper/__pycache__/ikea.cpython-39.pyc b/IKEA_scraper/__pycache__/ikea.cpython-39.pyc index e113f58cf9eb576c0ea87a6a65cff91387f2c38c..ab435f4b14c18b214fc79d811344c9454a28f4b2 100644 GIT binary patch delta 735 zcmYL{&yLeD5XPxenr&8r{*kCEDmW}Fbz#MY3yW5W!%7HFJisE$PMpT7V`s!5`Ln;xf6QYV$I&hPKK^+{|9*+z2GQ}^ zi}QEu+-g<752l+{@GIzj=$O^ zUV#Sy^?<|!aNvMA_sRpnBQQz#!-tVS{xkENfAaJA$8pT!IJ$!CxHG z+p=z0aImg}-$AhHMa`S=Tkp|2+*rIxBGb$Wg zN~CDMB!{=iu3$AzB7np~8Ei{E<6Wu0$^L|dbIqXb8s)Z-R7h9=8KDExDeI_pb7mBD z<({T@o{>REPkE&|<`m3(C%gQxP|jIw8`~^XGkNYsvr2EiA|qQ$Lm`*?v_+`U6d*&W z!OMa!nG?=(gosfknDJDzqQtRFrL|oG*(ojRn@xJ}i1goAO5cGeQ%di1KIbs2AZKs aP%y1=UZsVT#=U6&i7AGw?s@Zl^yxp*Q|g}p diff --git a/IKEA_scraper/ikea.py b/IKEA_scraper/ikea.py index 7ffceb60..079284ad 100644 --- a/IKEA_scraper/ikea.py +++ b/IKEA_scraper/ikea.py @@ -48,7 +48,7 @@ class IKEA: prices.append(cropped_price[:cropped_price.find("€") + 1]) combined_list = [i + " - " + j for i, j in zip(names, prices)] - output = "\n".join(str(elem) for elem in combined_list) + output = "
".join(str(elem) for elem in combined_list) return output @@ -78,14 +78,14 @@ mirrors = IKEA('kitchen/kitchen-decoration/mirrors') office_chairs = IKEA('home-office/work-seating-range/office-chairs') office_desks_and_tables = IKEA('home-office/desks/office-desks-and-tables') open_shelving_units = IKEA('living-room/shelving-units-systems/open-shelving-units') -system_wardrobes = IKEA('ikea-for-business/retail/system-wardrobes') +pax_wardrobes = IKEA('ikea-for-business/retail/system-wardrobes') pendant_lamps = IKEA('ikea-for-business/retail/pendant-lamps') pillows = IKEA('bedroom/bedding/pillows') pots = IKEA('kitchen/cookware-and-dinnerware/pots') quilt_covers_and_pillow_cases = IKEA('bedroom/bedding/quilt-covers-and-pillow-cases') quilts = IKEA('bedroom/bedding/quilts') rugs = IKEA('living-room/home-furnishing-rugs/rugs') -sheets_and_pillow_case = IKEA('bedroom/bedding/sheets-and-pillow-cases') +sheets_and_pillow_cases = IKEA('bedroom/bedding/sheets-and-pillow-cases') sofa_beds_and_chair_beds = IKEA('bedroom/beds-and-sofa-beds/sofa-beds-chair-beds') sofa_tables = IKEA('living-room/coffee-side-tables/sofa-tables') solitaire_cabinets = IKEA('living-room/solitaire-cabinets/solitaire-cabinets') diff --git a/IKEA_scraper/main.py b/IKEA_scraper/main.py index 11f9ae52..02b31f3f 100644 --- a/IKEA_scraper/main.py +++ b/IKEA_scraper/main.py @@ -1,4 +1,57 @@ -import eel as eel +import eel +from ikea import * eel.init('web') -eel.start('web\index.html', size=(500, 500)) \ No newline at end of file + + +@eel.expose +def call_in_js(product): + product_names = { + "armchairs": arm_chairs, + "bathroom furniture": bathroom_furniture, + "bathroom lightning": bathroom_lighting, + "bed frames": bed_frames, + "bookcases": bookcases, + "boxes and baskets": boxes_and_baskets, + "candles": candles, + "ceiling lamps and spotlight": ceiling_lamps_and_spotlights, + "chairs and benches": chairs_and_benches, + "chest of drawers": chest_of_drawers, + "children's storage furniture": children_storage_furniture, + "curtains": curtains, + "day beds": day_beds, + "dining tables": dining_tables, + "dinnerware and serving": dinnerware_and_serving, + "glasses": glasses, + "home desks": home_desks, + "interior organisers": interior_organisers, + "kitchen interior organisers": kitchen_interior_organisers, + "light bulbs": light_bulbs, + "mattresses": mattresses, + "mirrors": mirrors, + "office chairs": office_chairs, + "office desks and tables": office_desks_and_tables, + "open shelving units": open_shelving_units, + "pax wardrobes": pax_wardrobes, + "pendant lamps": pendant_lamps, + "pillows": pillows, + "pots": pots, + "quilt covers and pillow cases": quilt_covers_and_pillow_cases, + "quilts": quilts, + "rugs": rugs, + "sheets and pillow cases": sheets_and_pillow_cases, + "sofa beds and chair beds": sofa_beds_and_chair_beds, + "sofa tables": sofa_tables, + "solitaire cabinets": solitaire_cabinets, + "solitaire wardrobes": solitaire_wardrobes, + "system cabinets": system_cabinets, + "table lamps": table_lamps, + "towels": towels, + "toys for small children": toys_for_small_children, + "tv benches": tv_benches + } + + return product_names.get(product.strip().lower()).get_data() + + +eel.start('index.html', size=(500, 500)) diff --git a/IKEA_scraper/web/index.html b/IKEA_scraper/web/index.html index a0d8616c..21031171 100644 --- a/IKEA_scraper/web/index.html +++ b/IKEA_scraper/web/index.html @@ -5,8 +5,67 @@ IKEA scraper + + - test + + + + +
+ + diff --git a/IKEA_scraper/web/style.css b/IKEA_scraper/web/style.css new file mode 100644 index 00000000..b7fc4f4b --- /dev/null +++ b/IKEA_scraper/web/style.css @@ -0,0 +1,140 @@ +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + vertical-align: baseline; +} + +html, +body { + font-family: "Roboto", sans-serif; + background: #f2f2f2; +} + +#product { + display: flex; + margin-top: 10px; + height: 30px; + margin-left: auto; + margin-right: auto; + background-color: #333333; + width: 95%; + min-width: 100px; + border-radius: 5px; + cursor: pointer; + color: #cccccc; +} + +#show { + display: block; + border: none; + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + min-width: 200px; + + background: #666666; + + border-radius: 5px; + padding: 10px; + color: #f2f2f2; + outline: none; + width: 95%; + font-size: 18px; + text-transform: uppercase; + cursor: pointer; + transition: transform 0.7s ease; +} + +#show:hover { + opacity: 0.9; + transform: scale(1.01); +} + +#info { + color: #666666; + display: block; + text-align: center; + font-size: 16px; + font-weight: bold; +}