Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite8fee97

Browse files
committed
Use Transifex API v3 for getting stats
Base on per string calculations for backwards compatibility -- this gives 55.39 today vs 48.01 on per word calculationsOld Transifex API stopped to work on Feb 13 at 10AM CET
1 parent9c8e4c3 commite8fee97

File tree

1 file changed

+40
-14
lines changed

1 file changed

+40
-14
lines changed

‎manage_translation.py

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,12 @@
1515
fromargparseimportArgumentParser
1616
fromcollectionsimportCounter
1717
importos
18-
fromreimportmatch
18+
fromdataclassesimportdataclass
19+
fromreimportmatch,search
1920
fromsubprocessimportcall,run
2021
importsys
22+
fromtypingimportSelf
23+
fromurllib.parseimportunquote
2124

2225
LANGUAGE='pl'
2326

@@ -83,27 +86,50 @@ def recreate_tx_config():
8386
))
8487

8588

89+
@dataclass
90+
classResourceLanguageStatistics:
91+
name:str
92+
total_words:int
93+
translated_words:int
94+
total_strings:int
95+
translated_strings:int
96+
97+
@classmethod
98+
deffrom_api_v3_entry(cls,data:dict)->Self:
99+
returncls(
100+
name=search('r:([^:]*)',data['id']).group(1),
101+
total_words=data['attributes']['total_words'],
102+
translated_words=data['attributes']['translated_words'],
103+
total_strings=data['attributes']['total_strings'],
104+
translated_strings=data['attributes']['translated_strings'],
105+
)
106+
107+
86108
def_get_resources():
87109
fromrequestsimportget
88110
resources= []
89-
offset=0
111+
cursor=None
90112
ifos.path.exists('.tx/api-key'):
91113
withopen('.tx/api-key')asf:
92114
transifex_api_key=f.read()
93115
else:
94116
transifex_api_key=os.getenv('TX_TOKEN')
95117
whileTrue:
96118
response=get(
97-
f'https://api.transifex.com/organizations/python-doc/projects/{PROJECT_SLUG}/resources/',
98-
params={'language_code':LANGUAGE,'offset':offset},
99-
auth=('api',transifex_api_key))
119+
'https://rest.api.transifex.com/resource_language_stats',
120+
params={
121+
'filter[project]':f'o:python-doc:p:{PROJECT_SLUG}','filter[language]':f'l:{LANGUAGE}'
122+
}| ({'page[cursor]':cursor}ifcursorelse {}),
123+
headers={'Authorization':f'Bearer{transifex_api_key}'}
124+
)
100125
response.raise_for_status()
101-
response_list=response.json()
126+
response_json=response.json()
127+
response_list=response_json['data']
102128
resources.extend(response_list)
103-
iflen(response_list)<100:
129+
if'next'notinresponse_json['links']:
104130
break
105-
offset+=len(response_list)
106-
returnresources
131+
cursor=unquote(search('page\[cursor]=([^&]*)',response_json['links']['next']).group(1))
132+
return[ResourceLanguageStatistics.from_api_v3_entry(entry)forentryinresources]
107133

108134

109135
def_get_number_of_translators():
@@ -121,17 +147,17 @@ def _get_number_of_translators():
121147

122148
defrecreate_readme():
123149
deflanguage_switcher(entry):
124-
return (entry['name'].startswith('bugs')or
125-
entry['name'].startswith('tutorial')or
126-
entry['name'].startswith('library--functions'))
150+
return (entry.name.startswith('bugs')or
151+
entry.name.startswith('tutorial')or
152+
entry.name.startswith('library--functions'))
127153

128154
defaverage(averages,weights):
129155
returnsum([a*wfora,winzip(averages,weights)])/sum(weights)
130156

131157
resources=_get_resources()
132158
filtered=list(filter(language_switcher,resources))
133-
average_list= [e['stats']['translated']['percentage']foreinfiltered]
134-
weights_list= [e['wordcount']foreinfiltered]
159+
average_list= [e.translated_words/e.total_wordsforeinfiltered]
160+
weights_list= [e.total_wordsforeinfiltered]
135161

136162
language_switcher_status=average(average_list,weights=weights_list)*100
137163
number_of_translators=_get_number_of_translators()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp