Skip to content

Commit 15db2a2

Browse files
committed
Revert "fix: remove the json fallbacks for orjson code"
This reverts commit 4b42634.
1 parent 0133b17 commit 15db2a2

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

refresh.template.py

+28-7
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@
3636
import time
3737
import types
3838
import typing # MIN_PY=3.9: Switch e.g. typing.List[str] -> list[str]
39-
# orjson is much faster than the standard library's json module (1.9 seconds vs 6.6 seconds for a ~140 MB file).
40-
import orjson
39+
4140

4241
@enum.unique
4342
class SGR(enum.Enum):
@@ -508,7 +507,11 @@ def _get_headers(compile_action, source_path: str):
508507
cache_last_modified = os.path.getmtime(cache_file_path) # Do before opening just as a basic hedge against concurrent write, even though we won't handle the concurrent delete case perfectly.
509508
try:
510509
with open(cache_file_path) as cache_file:
511-
action_key, headers = orjson.loads(cache_file.read())
510+
try:
511+
from orjson import loads
512+
action_key, headers = loads(cache_file.read())
513+
except ImportError:
514+
action_key, headers = json.load(cache_file)
512515
except json.JSONDecodeError:
513516
# Corrupted cache, which can happen if, for example, the user kills the program, since writes aren't atomic.
514517
# But if it is the result of a bug, we want to print it before it's overwritten, so it can be reported
@@ -559,8 +562,13 @@ def _get_headers(compile_action, source_path: str):
559562

560563
def _cache_compile_action(compile_action, cache_file_path, headers):
561564
cache = (compile_action.actionKey, list(headers))
562-
with open(cache_file_path, 'wb') as cache_file:
563-
cache_file.write(orjson.dumps(cache))
565+
try:
566+
from orjson import dumps
567+
with open(cache_file_path, 'wb') as cache_file:
568+
cache_file.write(dumps(cache))
569+
except ImportError:
570+
with open(cache_file_path, 'w') as cache_file:
571+
json.dump(cache, cache_file)
564572

565573
def _get_files(compile_action):
566574
"""Gets the ({source files}, {header files}) clangd should be told the command applies to."""
@@ -1055,8 +1063,21 @@ def _ensure_cwd_is_workspace_root():
10551063

10561064
def _write_compile_commands(compile_command_entries: typing.List[str]):
10571065
file_name = 'compile_commands.json'
1058-
with open(file_name, 'wb') as output_file:
1059-
output_file.write(orjson.dumps(compile_command_entries))
1066+
try:
1067+
# orjson is much faster than the standard library's json module (1.9 seconds vs 6.6 seconds for a ~140 MB file).
1068+
from orjson import dumps
1069+
with open(file_name, 'wb') as output_file:
1070+
output_file.write(dumps(
1071+
compile_command_entries,
1072+
))
1073+
except ImportError:
1074+
with open(file_name, 'w') as output_file:
1075+
json.dump(
1076+
compile_command_entries,
1077+
output_file,
1078+
indent=2, # Yay, human readability!
1079+
check_circular=False # For speed.
1080+
)
10601081

10611082
def main():
10621083
_ensure_cwd_is_workspace_root()

0 commit comments

Comments
 (0)