Add python_ta check to collect_others.py (but not checking all contracts)
python_ta.contracts.check_all_contracts() is broken so it's not used here Fixed pseudocode style: newline after boolean operator Fixed 2 lines of 101 characters Added a representation invariant
This commit is contained in:
+20
-6
@@ -16,6 +16,8 @@ import requests
|
|||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from py7zr import SevenZipFile
|
from py7zr import SevenZipFile
|
||||||
|
|
||||||
|
import python_ta
|
||||||
|
|
||||||
from constants import DATA_DIR, TWEETS_DIR, USER_DIR, RES_DIR
|
from constants import DATA_DIR, TWEETS_DIR, USER_DIR, RES_DIR
|
||||||
from utils import read, debug, write, json_stringify
|
from utils import read, debug, write, json_stringify
|
||||||
|
|
||||||
@@ -35,6 +37,9 @@ class ProcessedUser(NamedTuple):
|
|||||||
- popularity: A measurement of a user's popularity, such as followers count
|
- popularity: A measurement of a user's popularity, such as followers count
|
||||||
- num_postings: Number of tweets
|
- num_postings: Number of tweets
|
||||||
- language: Language code in Twitter's language code format
|
- language: Language code in Twitter's language code format
|
||||||
|
|
||||||
|
Representation Invariants:
|
||||||
|
- self.username != ''
|
||||||
"""
|
"""
|
||||||
username: str
|
username: str
|
||||||
popularity: int
|
popularity: int
|
||||||
@@ -118,7 +123,6 @@ class UserSample:
|
|||||||
|
|
||||||
Representation Invariants:
|
Representation Invariants:
|
||||||
- all(news != '' for news in self.english_news)
|
- all(news != '' for news in self.english_news)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
most_popular: list[ProcessedUser]
|
most_popular: list[ProcessedUser]
|
||||||
random: list[ProcessedUser]
|
random: list[ProcessedUser]
|
||||||
@@ -149,8 +153,8 @@ def select_user_sample() -> None:
|
|||||||
users = load_users()
|
users = load_users()
|
||||||
|
|
||||||
# Filter by language first
|
# Filter by language first
|
||||||
users = [u for u in users if u.lang is not None and
|
users = [u for u in users if u.lang is not None
|
||||||
any(lang in u.lang for lang in {'en', 'zh', 'ja'})]
|
and any(lang in u.lang for lang in {'en', 'zh', 'ja'})]
|
||||||
|
|
||||||
# Find most popular, and exclude them from the random sample
|
# Find most popular, and exclude them from the random sample
|
||||||
most_popular = users[:500]
|
most_popular = users[:500]
|
||||||
@@ -243,7 +247,7 @@ class Posting(NamedTuple):
|
|||||||
- date: Posting date and time in ISO format ("YYYY-MM-DDThh-mm-ss")
|
- date: Posting date and time in ISO format ("YYYY-MM-DDThh-mm-ss")
|
||||||
|
|
||||||
Representation Invariants:
|
Representation Invariants:
|
||||||
- popularity >= 0
|
- self.popularity >= 0
|
||||||
"""
|
"""
|
||||||
covid_related: bool
|
covid_related: bool
|
||||||
popularity: int
|
popularity: int
|
||||||
@@ -371,11 +375,21 @@ def pack_data() -> None:
|
|||||||
z.write(packed_res, 'resources.7z')
|
z.write(packed_res, 'resources.7z')
|
||||||
|
|
||||||
# Add report tex
|
# Add report tex
|
||||||
z.write(os.path.join(src_path, '../writing/report/project_report.tex'), 'project_report.tex')
|
for file in ['project_report.tex', 'project_report.pdf']:
|
||||||
z.write(os.path.join(src_path, '../writing/report/project_report.pdf'), 'project_report.pdf')
|
z.write(os.path.join(src_path, f'../writing/report/{file}'), file)
|
||||||
|
|
||||||
# Open packed location (Since there isn't a platform-independent way of doing this, we currently
|
# Open packed location (Since there isn't a platform-independent way of doing this, we currently
|
||||||
# only support macOS)
|
# only support macOS)
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
os.system(f'open {Path(packed_dir).absolute()}')
|
os.system(f'open {Path(packed_dir).absolute()}')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
python_ta.check_all(config={
|
||||||
|
'extra-imports': ['json', 'os', 'random', 'sys', 'zipfile', 'dataclasses', 'datetime',
|
||||||
|
'pathlib', 'typing', 'requests', 'bs4', 'py7zr', 'constants', 'utils'
|
||||||
|
], # the names (strs) of imported modules
|
||||||
|
'allowed-io': [], # the names (strs) of functions that call print/open/input
|
||||||
|
'max-line-length': 100,
|
||||||
|
'disable': ['R1705', 'C0200']
|
||||||
|
}, output='pyta_report.html')
|
||||||
|
|||||||
Reference in New Issue
Block a user