Skip to content

Commit dbd9f34

Browse files
committed
Resolved merge conflicts
2 parents 9538500 + 6d0267f commit dbd9f34

File tree

4 files changed

+105
-39
lines changed

4 files changed

+105
-39
lines changed

custom_lib_file/base_submission_result.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
import six
1717

1818

19-
class BaseSubmissionResult(object):
19+
20+
class BaseSubmissionResult(object): #modified
21+
2022
"""
2123
Attributes:
2224
swagger_types (dict): The key is attribute name

custom_lib_file/submission_result.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
)
2121

2222

23-
class SubmissionResult(BaseSubmissionResult):
23+
24+
class SubmissionResult(BaseSubmissionResult): #Modified
25+
2426
"""NOTE: This class is auto generated by the swagger code generator program.
2527
2628
Do not edit the class manually.

custom_lib_file/test_submission_result.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
)
2121

2222

23+
2324
class TestSubmissionResult(BaseSubmissionResult):
25+
2426
"""NOTE: This class is auto generated by the swagger code generator program.
2527
2628
Do not edit the class manually.

leetcode.py renamed to lc.py

Lines changed: 97 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import os
21
import time
32
import click
43
from bs4 import BeautifulSoup
@@ -10,6 +9,9 @@
109
import leetcode
1110
import leetcode.auth
1211
import requests
12+
import os
13+
import shutil
14+
import glob
1315

1416

1517
def non_lib_configuration(): # had to change name becasue of python-leetcode lib
@@ -61,21 +63,42 @@ def print_question_data(question):
6163

6264
def print_test_result(test_data, data_input):
6365
status_msg = test_data.get("status_msg")
64-
status_runtime = test_data.get("status_runtime")
65-
code_answer = test_data.get("code_answer")
66-
expected_code_answer = test_data.get("expected_code_answer")
67-
status_color = Colors.GREEN if status_msg == "Accepted" else Colors.RED
68-
69-
print("".center(40, "="))
70-
print(f"{status_color}{status_msg}{Colors.RESET} ({status_runtime})")
71-
print("".center(40, "="))
72-
print("input".center(40, "-"))
73-
print(data_input)
74-
print("your code output".center(40, "-"))
75-
print(code_answer)
76-
print("expected output".center(40, "-"))
77-
print(expected_code_answer)
78-
print("".center(40, "="))
66+
67+
if status_msg == "Accepted":
68+
status_runtime = test_data.get("status_runtime")
69+
code_answer = test_data.get("code_answer")
70+
expected_code_answer = test_data.get("expected_code_answer")
71+
status_color = Colors.GREEN
72+
73+
print("".center(40, "="))
74+
print(f"{status_color}{status_msg}{Colors.RESET} ({status_runtime})")
75+
print("".center(40, "="))
76+
print("input".center(40, "-"))
77+
print(data_input)
78+
print("your code output".center(40, "-"))
79+
print(code_answer)
80+
print("expected output".center(40, "-"))
81+
print(expected_code_answer)
82+
print("".center(40, "="))
83+
else:
84+
runtime_error = test_data.get("runtime_error")
85+
full_runtime_error = test_data.get("full_runtime_error")
86+
status_color = Colors.RED
87+
88+
# Use BeautifulSoup to convert the runtime error message from HTML to plain text
89+
soup = BeautifulSoup(full_runtime_error, "html.parser")
90+
plain_runtime_error = soup.get_text()
91+
92+
print("".center(40, "="))
93+
print(f"{status_color}{status_msg}{Colors.RESET}")
94+
print("".center(40, "="))
95+
print("input".center(40, "-"))
96+
print(data_input)
97+
print("runtime error".center(40, "-"))
98+
print(runtime_error)
99+
print("full runtime error".center(40, "-"))
100+
print(plain_runtime_error)
101+
print("".center(40, "="))
79102

80103

81104
def print_submission_result(submission): # used python-leetocde library
@@ -144,7 +167,8 @@ def print_submission_result(submission): # used python-leetocde library
144167
def initialize_leetcode_api_instance(
145168
leetcode_session, leetcode_csrf_token
146169
): # used python-leetocde library
147-
configuration = leetcode.Configuration()
170+
configuration = leetcode \
171+
.Configuration()
148172
csrf_token = leetcode_csrf_token
149173

150174
configuration.api_key["x-csrftoken"] = csrf_token
@@ -153,12 +177,15 @@ def initialize_leetcode_api_instance(
153177
configuration.api_key["Referer"] = "https://leetcode.com"
154178
configuration.debug = False
155179

156-
api_instance = leetcode.DefaultApi(leetcode.ApiClient(configuration))
180+
api_instance = leetcode \
181+
.DefaultApi(leetcode
182+
.ApiClient(configuration))
157183
return api_instance
158184

159185

160186
def interpret_solution(title_slug, payload, api_instance):
161-
test_submission = leetcode.TestSubmission(
187+
test_submission = leetcode \
188+
.TestSubmission(
162189
data_input=payload["data_input"],
163190
typed_code=payload["typed_code"],
164191
question_id=payload["question_id"],
@@ -199,7 +226,6 @@ def submit_solution(
199226

200227
def process_test_file(leetcode_api_instance, api_instance, test):
201228
title_slug, lang_name = title_and_file_extension(test)
202-
print(lang_name)
203229
question_detail_data = get_question_detail(api_instance, title_slug)
204230
if question_detail_data:
205231
question_id = question_detail_data.get("questionId")
@@ -477,6 +503,8 @@ def write_code_snippet_to_file(question_detail_data, lang, title_slug):
477503
if code:
478504
lang_extension = LANG_EXTENSIONS.get(lang)
479505
if lang_extension:
506+
if not os.path.exists("code_editor"):
507+
os.makedirs("code_editor")
480508
file_path = os.path.join(
481509
"code_editor",
482510
f"{question_detail_data['questionFrontendId']}_{title_slug}.{lang_extension}",
@@ -540,30 +568,56 @@ def title_and_file_extension(file):
540568

541569
def print_help_usage():
542570
help_message = """
571+
IMPORTANT: python lc.py --lib
572+
543573
Usage:
544-
python leetcode.py --config
545-
python leetcode.py --config --user-lang <language>
546-
python leetcode.py --question/-q <question_id_or_title>
547-
python leetcode.py --solve <question_id_or_title>
548-
python leetcode.py --test/-t <filename>
549-
python leetcode.py --submit/-sb <filename>
574+
python lc.py --config
575+
python lc.py --config --user-lang <language>
576+
python lc.py --question/-q <question_id_or_title>
577+
python lc.py --solve <question_id_or_title>
578+
python lc.py --test/-t <filename>
579+
python lc.py --submit/-sb <filename>
550580
551581
Examples:
552-
python leetcode.py --config --user-lang=python3
553-
python leetcode.py --question 1
554-
python leetcode.py --question add-two-numbers
555-
python leetcode.py --question 10:20
556-
python leetcode.py --solve/-s add-two-numbers
557-
python leetcode.py --solve 1
558-
python leetcode.py --test test_file.py
559-
python leetcode.py --submit submit_file.py
582+
python lc.py --config --user-lang=python3
583+
python lc.py --question 1
584+
python lc.py --question add-two-numbers
585+
python lc.py --question 10:20
586+
python lc.py --solve/-s add-two-numbers
587+
python lc.py --solve 1
588+
python lc.py --test test_file.py
589+
python lc.py --submit submit_file.py
560590
561591
For any issues or feature requests, please visit:
562592
https://github.com/hrdkmishra/leetcode.py
563593
"""
564594
print(help_message)
565595

566596

597+
def replace_files():
598+
source_dir = "custom_lib_file/"
599+
destination_dir = "venv/Lib/site-packages/leetcode/models/"
600+
file_paths = glob.glob(os.path.join(source_dir, "*"))
601+
602+
if not file_paths:
603+
print(f"No files found in the source directory '{source_dir}'.")
604+
return
605+
606+
for src_path in file_paths:
607+
filename = os.path.basename(src_path)
608+
dest_path = os.path.join(destination_dir, filename)
609+
610+
if os.path.exists(dest_path):
611+
try:
612+
os.remove(dest_path)
613+
shutil.copy(src_path, dest_path)
614+
print(f"File '{src_path}' replaced successfully.")
615+
except Exception as e:
616+
print(f"An error occurred while replacing the file: {e}")
617+
else:
618+
print(f"Destination path '{dest_path}' does not exist.")
619+
620+
567621
@click.command()
568622
@click.option("--config", is_flag=True, help="Enter credentials and save to config")
569623
@click.option(
@@ -572,6 +626,9 @@ def print_help_usage():
572626
default="",
573627
help="Set user preferred language (e.g., python3)",
574628
)
629+
@click.option(
630+
"--lib", is_flag=True, default=False, help="Show usage information"
631+
)
575632
@click.option(
576633
"--question",
577634
"-q",
@@ -603,13 +660,16 @@ def print_help_usage():
603660
@click.option(
604661
"--help", "-h", is_flag=True, default=False, help="Show usage information"
605662
)
606-
def main(config, user_lang, question, solve, test, submit, help):
663+
def main(config, user_lang, question, solve, test, submit, help, lib):
664+
if lib:
665+
replace_files()
666+
exit()
607667
if config:
608668
leetcode_session, csrf_token = non_lib_configuration()
609669
# If the --user-lang option is provided, save it to config
610670
if user_lang:
611671
save_user_data_to_config(user_lang)
612-
exit()
672+
exit()
613673
else:
614674
leetcode_session, csrf_token = load_credentials_from_config()
615675

@@ -647,4 +707,4 @@ def main(config, user_lang, question, solve, test, submit, help):
647707

648708

649709
if __name__ == "__main__":
650-
main() # main
710+
main()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy