@@ -26,81 +26,23 @@ def run(self) -> None:
26
26
except ValueError :
27
27
final_main_dict [package ].append (message )
28
28
29
- self ._create_comment (final_main_dict , new_dict )
29
+ comment = self ._create_comment (final_main_dict , new_dict )
30
+ with open (self .primer_directory / "comment.txt" , "w" , encoding = "utf-8" ) as f :
31
+ f .write (comment )
30
32
31
33
def _create_comment (
32
34
self , all_missing_messages : PackageMessages , all_new_messages : PackageMessages
33
- ) -> None :
35
+ ) -> str :
34
36
comment = ""
35
37
for package , missing_messages in all_missing_messages .items ():
36
38
if len (comment ) >= MAX_GITHUB_COMMENT_LENGTH :
37
39
break
38
-
39
40
new_messages = all_new_messages [package ]
40
- package_data = self .packages [package ]
41
-
42
41
if not missing_messages and not new_messages :
43
42
continue
44
-
45
- comment += f"\n \n **Effect on [{ package } ]({ self .packages [package ].url } ):**\n "
46
-
47
- # Create comment for new messages
48
- count = 1
49
- astroid_errors = 0
50
- new_non_astroid_messages = ""
51
- if new_messages :
52
- print ("Now emitted:" )
53
- for message in new_messages :
54
- filepath = str (message ["path" ]).replace (
55
- str (package_data .clone_directory ), ""
56
- )
57
- # Existing astroid errors may still show up as "new" because the timestamp
58
- # in the message is slightly different.
59
- if message ["symbol" ] == "astroid-error" :
60
- astroid_errors += 1
61
- else :
62
- new_non_astroid_messages += (
63
- f"{ count } ) { message ['symbol' ]} :\n *{ message ['message' ]} *\n "
64
- f"{ package_data .url } /blob/{ package_data .branch } { filepath } #L{ message ['line' ]} \n "
65
- )
66
- print (message )
67
- count += 1
68
-
69
- if astroid_errors :
70
- comment += (
71
- f"{ astroid_errors } error(s) were found stemming from the `astroid` library. "
72
- "This is unlikely to have been caused by your changes. "
73
- "A GitHub Actions warning links directly to the crash report template. "
74
- "Please open an issue against `astroid` if one does not exist already. \n \n "
75
- )
76
- if new_non_astroid_messages :
77
- comment += (
78
- "The following messages are now emitted:\n \n <details>\n \n "
79
- + new_non_astroid_messages
80
- + "\n </details>\n \n "
81
- )
82
-
83
- # Create comment for missing messages
84
- count = 1
85
- if missing_messages :
86
- comment += (
87
- "The following messages are no longer emitted:\n \n <details>\n \n "
88
- )
89
- print ("No longer emitted:" )
90
- for message in missing_messages :
91
- comment += f"{ count } ) { message ['symbol' ]} :\n *{ message ['message' ]} *\n "
92
- filepath = str (message ["path" ]).replace (
93
- str (package_data .clone_directory ), ""
94
- )
95
- assert not package_data .url .endswith (
96
- ".git"
97
- ), "You don't need the .git at the end of the github url."
98
- comment += f"{ package_data .url } /blob/{ package_data .branch } { filepath } #L{ message ['line' ]} \n "
99
- count += 1
100
- print (message )
101
- if missing_messages :
102
- comment += "\n </details>\n \n "
103
-
43
+ comment += self ._create_comment_for_package (
44
+ package , new_messages , missing_messages
45
+ )
104
46
if comment == "" :
105
47
comment = (
106
48
"🤖 According to the primer, this change has **no effect** on the"
@@ -110,6 +52,70 @@ def _create_comment(
110
52
comment = (
111
53
f"🤖 **Effect of this PR on checked open source code:** 🤖\n \n { comment } "
112
54
)
55
+ return self ._truncate_comment (comment )
56
+
57
+ def _create_comment_for_package (
58
+ self , package : str , new_messages , missing_messages
59
+ ) -> str :
60
+ comment = f"\n \n **Effect on [{ package } ]({ self .packages [package ].url } ):**\n "
61
+ # Create comment for new messages
62
+ count = 1
63
+ astroid_errors = 0
64
+ new_non_astroid_messages = ""
65
+ if new_messages :
66
+ print ("Now emitted:" )
67
+ for message in new_messages :
68
+ filepath = str (message ["path" ]).replace (
69
+ str (self .packages [package ].clone_directory ), ""
70
+ )
71
+ # Existing astroid errors may still show up as "new" because the timestamp
72
+ # in the message is slightly different.
73
+ if message ["symbol" ] == "astroid-error" :
74
+ astroid_errors += 1
75
+ else :
76
+ new_non_astroid_messages += (
77
+ f"{ count } ) { message ['symbol' ]} :\n *{ message ['message' ]} *\n "
78
+ f"{ self .packages [package ].url } /blob/{ self .packages [package ].branch } { filepath } #L{ message ['line' ]} \n "
79
+ )
80
+ print (message )
81
+ count += 1
82
+
83
+ if astroid_errors :
84
+ comment += (
85
+ f"{ astroid_errors } error(s) were found stemming from the `astroid` library. "
86
+ "This is unlikely to have been caused by your changes. "
87
+ "A GitHub Actions warning links directly to the crash report template. "
88
+ "Please open an issue against `astroid` if one does not exist already. \n \n "
89
+ )
90
+ if new_non_astroid_messages :
91
+ comment += (
92
+ "The following messages are now emitted:\n \n <details>\n \n "
93
+ + new_non_astroid_messages
94
+ + "\n </details>\n \n "
95
+ )
96
+
97
+ # Create comment for missing messages
98
+ count = 1
99
+ if missing_messages :
100
+ comment += "The following messages are no longer emitted:\n \n <details>\n \n "
101
+ print ("No longer emitted:" )
102
+ for message in missing_messages :
103
+ comment += f"{ count } ) { message ['symbol' ]} :\n *{ message ['message' ]} *\n "
104
+ filepath = str (message ["path" ]).replace (
105
+ str (self .packages [package ].clone_directory ), ""
106
+ )
107
+ assert not self .packages [package ].url .endswith (
108
+ ".git"
109
+ ), "You don't need the .git at the end of the github url."
110
+ comment += f"{ self .packages [package ].url } /blob/{ self .packages [package ].branch } { filepath } #L{ message ['line' ]} \n "
111
+ count += 1
112
+ print (message )
113
+ if missing_messages :
114
+ comment += "\n </details>\n \n "
115
+ return comment
116
+
117
+ def _truncate_comment (self , comment : str ) -> str :
118
+ """GitHub allows only a set number of characters in a comment."""
113
119
hash_information = (
114
120
f"*This comment was generated for commit { self .config .commit } *"
115
121
)
@@ -125,5 +131,4 @@ def _create_comment(
125
131
)
126
132
comment = f"{ comment [:max_len - 10 ]} ...\n \n { truncation_information } \n \n "
127
133
comment += hash_information
128
- with open (self .primer_directory / "comment.txt" , "w" , encoding = "utf-8" ) as f :
129
- f .write (comment )
134
+ return comment
0 commit comments