1#!/usr/bin/env nix-shell
2#!nix-shell -i bash -p curl jq nixpkgs-fmt nix-update xmlstarlet
3
4set -eu -o pipefail
5
6source_file=pkgs/development/python-modules/mypy-boto3/default.nix
7
8#nix-update python312Packages.botocore-stubs --commit --build
9
10packages=(
11 mypy-boto3-accessanalyzer
12 mypy-boto3-account
13 mypy-boto3-acm
14 mypy-boto3-acm-pca
15 mypy-boto3-amp
16 mypy-boto3-amplify
17 mypy-boto3-amplifybackend
18 mypy-boto3-amplifyuibuilder
19 mypy-boto3-apigateway
20 mypy-boto3-apigatewaymanagementapi
21 mypy-boto3-apigatewayv2
22 mypy-boto3-appconfig
23 mypy-boto3-appconfigdata
24 mypy-boto3-appfabric
25 mypy-boto3-appflow
26 mypy-boto3-appintegrations
27 mypy-boto3-application-autoscaling
28 mypy-boto3-application-insights
29 mypy-boto3-applicationcostprofiler
30 mypy-boto3-appmesh
31 mypy-boto3-apprunner
32 mypy-boto3-appstream
33 mypy-boto3-appsync
34 mypy-boto3-arc-zonal-shift
35 mypy-boto3-athena
36 mypy-boto3-auditmanager
37 mypy-boto3-autoscaling
38 mypy-boto3-autoscaling-plans
39 mypy-boto3-backup
40 mypy-boto3-backup-gateway
41 mypy-boto3-batch
42 mypy-boto3-billingconductor
43 mypy-boto3-braket
44 mypy-boto3-budgets
45 mypy-boto3-ce
46 mypy-boto3-chime
47 mypy-boto3-chime-sdk-identity
48 mypy-boto3-chime-sdk-media-pipelines
49 mypy-boto3-chime-sdk-meetings
50 mypy-boto3-chime-sdk-messaging
51 mypy-boto3-chime-sdk-voice
52 mypy-boto3-cleanrooms
53 mypy-boto3-cloud9
54 mypy-boto3-cloudcontrol
55 mypy-boto3-clouddirectory
56 mypy-boto3-cloudformation
57 mypy-boto3-cloudfront
58 mypy-boto3-cloudhsm
59 mypy-boto3-cloudhsmv2
60 mypy-boto3-cloudsearch
61 mypy-boto3-cloudsearchdomain
62 mypy-boto3-cloudtrail
63 mypy-boto3-cloudtrail-data
64 mypy-boto3-cloudwatch
65 mypy-boto3-codeartifact
66 mypy-boto3-codebuild
67 mypy-boto3-codecatalyst
68 mypy-boto3-codecommit
69 mypy-boto3-codedeploy
70 mypy-boto3-codeguru-reviewer
71 mypy-boto3-codeguru-security
72 mypy-boto3-codeguruprofiler
73 mypy-boto3-codepipeline
74 mypy-boto3-codestar
75 mypy-boto3-codestar-connections
76 mypy-boto3-codestar-notifications
77 mypy-boto3-cognito-identity
78 mypy-boto3-cognito-idp
79 mypy-boto3-cognito-sync
80 mypy-boto3-comprehend
81 mypy-boto3-comprehendmedical
82 mypy-boto3-compute-optimizer
83 mypy-boto3-config
84 mypy-boto3-connect
85 mypy-boto3-connect-contact-lens
86 mypy-boto3-connectcampaigns
87 mypy-boto3-connectcases
88 mypy-boto3-connectparticipant
89 mypy-boto3-controltower
90 mypy-boto3-cur
91 mypy-boto3-customer-profiles
92 mypy-boto3-databrew
93 mypy-boto3-dataexchange
94 mypy-boto3-datapipeline
95 mypy-boto3-datasync
96 mypy-boto3-dax
97 mypy-boto3-detective
98 mypy-boto3-devicefarm
99 mypy-boto3-devops-guru
100 mypy-boto3-directconnect
101 mypy-boto3-discovery
102 mypy-boto3-dlm
103 mypy-boto3-dms
104 mypy-boto3-docdb
105 mypy-boto3-docdb-elastic
106 mypy-boto3-drs
107 mypy-boto3-ds
108 mypy-boto3-dynamodb
109 mypy-boto3-dynamodbstreams
110 mypy-boto3-ebs
111 mypy-boto3-ec2
112 mypy-boto3-ec2-instance-connect
113 mypy-boto3-ecr
114 mypy-boto3-ecr-public
115 mypy-boto3-ecs
116 mypy-boto3-efs
117 mypy-boto3-eks
118 mypy-boto3-elastic-inference
119 mypy-boto3-elasticache
120 mypy-boto3-elasticbeanstalk
121 mypy-boto3-elastictranscoder
122 mypy-boto3-elb
123 mypy-boto3-elbv2
124 mypy-boto3-emr
125 mypy-boto3-emr-containers
126 mypy-boto3-emr-serverless
127 mypy-boto3-entityresolution
128 mypy-boto3-es
129 mypy-boto3-events
130 mypy-boto3-evidently
131 mypy-boto3-finspace
132 mypy-boto3-finspace-data
133 mypy-boto3-firehose
134 mypy-boto3-fis
135 mypy-boto3-fms
136 mypy-boto3-forecast
137 mypy-boto3-forecastquery
138 mypy-boto3-frauddetector
139 mypy-boto3-fsx
140 mypy-boto3-gamelift
141 mypy-boto3-glacier
142 mypy-boto3-globalaccelerator
143 mypy-boto3-glue
144 mypy-boto3-grafana
145 mypy-boto3-greengrass
146 mypy-boto3-greengrassv2
147 mypy-boto3-groundstation
148 mypy-boto3-guardduty
149 mypy-boto3-health
150 mypy-boto3-healthlake
151 mypy-boto3-iam
152 mypy-boto3-identitystore
153 mypy-boto3-imagebuilder
154 mypy-boto3-importexport
155 mypy-boto3-inspector
156 mypy-boto3-inspector2
157 mypy-boto3-internetmonitor
158 mypy-boto3-iot
159 mypy-boto3-iot-data
160 mypy-boto3-iot-jobs-data
161 mypy-boto3-iot1click-devices
162 mypy-boto3-iot1click-projects
163 mypy-boto3-iotanalytics
164 mypy-boto3-iotdeviceadvisor
165 mypy-boto3-iotevents
166 mypy-boto3-iotevents-data
167 mypy-boto3-iotfleethub
168 mypy-boto3-iotfleetwise
169 mypy-boto3-iotsecuretunneling
170 mypy-boto3-iotsitewise
171 mypy-boto3-iotthingsgraph
172 mypy-boto3-iottwinmaker
173 mypy-boto3-iotwireless
174 mypy-boto3-ivs
175 mypy-boto3-ivs-realtime
176 mypy-boto3-ivschat
177 mypy-boto3-kafka
178 mypy-boto3-kafkaconnect
179 mypy-boto3-kendra
180 mypy-boto3-kendra-ranking
181 mypy-boto3-keyspaces
182 mypy-boto3-kinesis
183 mypy-boto3-kinesis-video-archived-media
184 mypy-boto3-kinesis-video-media
185 mypy-boto3-kinesis-video-signaling
186 mypy-boto3-kinesis-video-webrtc-storage
187 mypy-boto3-kinesisanalytics
188 mypy-boto3-kinesisanalyticsv2
189 mypy-boto3-kinesisvideo
190 mypy-boto3-kms
191 mypy-boto3-lakeformation
192 mypy-boto3-lambda
193 mypy-boto3-lex-models
194 mypy-boto3-lex-runtime
195 mypy-boto3-lexv2-models
196 mypy-boto3-lexv2-runtime
197 mypy-boto3-license-manager
198 mypy-boto3-license-manager-linux-subscriptions
199 mypy-boto3-license-manager-user-subscriptions
200 mypy-boto3-lightsail
201 mypy-boto3-location
202 mypy-boto3-logs
203 mypy-boto3-lookoutequipment
204 mypy-boto3-lookoutmetrics
205 mypy-boto3-lookoutvision
206 mypy-boto3-m2
207 mypy-boto3-machinelearning
208 mypy-boto3-macie2
209 mypy-boto3-managedblockchain
210 mypy-boto3-managedblockchain-query
211 mypy-boto3-marketplace-catalog
212 mypy-boto3-marketplace-entitlement
213 mypy-boto3-marketplacecommerceanalytics
214 mypy-boto3-mediaconnect
215 mypy-boto3-mediaconvert
216 mypy-boto3-medialive
217 mypy-boto3-mediapackage
218 mypy-boto3-mediapackage-vod
219 mypy-boto3-mediapackagev2
220 mypy-boto3-mediastore
221 mypy-boto3-mediastore-data
222 mypy-boto3-mediatailor
223 mypy-boto3-medical-imaging
224 mypy-boto3-memorydb
225 mypy-boto3-meteringmarketplace
226 mypy-boto3-mgh
227 mypy-boto3-mgn
228 mypy-boto3-migration-hub-refactor-spaces
229 mypy-boto3-migrationhub-config
230 mypy-boto3-migrationhuborchestrator
231 mypy-boto3-migrationhubstrategy
232 # mypy-boto3-mobile
233 mypy-boto3-mq
234 mypy-boto3-mturk
235 mypy-boto3-mwaa
236 mypy-boto3-neptune
237 mypy-boto3-neptunedata
238 mypy-boto3-network-firewall
239 mypy-boto3-networkmanager
240 mypy-boto3-nimble
241 mypy-boto3-oam
242 mypy-boto3-omics
243 mypy-boto3-opensearch
244 mypy-boto3-opensearchserverless
245 mypy-boto3-opsworks
246 mypy-boto3-opsworkscm
247 mypy-boto3-organizations
248 mypy-boto3-osis
249 mypy-boto3-outposts
250 mypy-boto3-panorama
251 mypy-boto3-payment-cryptography
252 mypy-boto3-payment-cryptography-data
253 mypy-boto3-pca-connector-ad
254 mypy-boto3-personalize
255 mypy-boto3-personalize-events
256 mypy-boto3-personalize-runtime
257 mypy-boto3-pi
258 mypy-boto3-pinpoint
259 mypy-boto3-pinpoint-email
260 mypy-boto3-pinpoint-sms-voice
261 mypy-boto3-pinpoint-sms-voice-v2
262 mypy-boto3-pipes
263 mypy-boto3-polly
264 mypy-boto3-pricing
265 mypy-boto3-privatenetworks
266 mypy-boto3-proton
267 mypy-boto3-qldb
268 mypy-boto3-qldb-session
269 mypy-boto3-quicksight
270 mypy-boto3-ram
271 mypy-boto3-rbin
272 mypy-boto3-rds
273 mypy-boto3-rds-data
274 mypy-boto3-redshift
275 mypy-boto3-redshift-data
276 mypy-boto3-redshift-serverless
277 mypy-boto3-rekognition
278 mypy-boto3-resiliencehub
279 mypy-boto3-resource-explorer-2
280 mypy-boto3-resource-groups
281 mypy-boto3-resourcegroupstaggingapi
282 mypy-boto3-robomaker
283 mypy-boto3-rolesanywhere
284 mypy-boto3-route53
285 mypy-boto3-route53-recovery-cluster
286 mypy-boto3-route53-recovery-control-config
287 mypy-boto3-route53-recovery-readiness
288 mypy-boto3-route53domains
289 mypy-boto3-route53resolver
290 mypy-boto3-rum
291 mypy-boto3-s3
292 mypy-boto3-s3control
293 mypy-boto3-s3outposts
294 mypy-boto3-sagemaker
295 mypy-boto3-sagemaker-a2i-runtime
296 mypy-boto3-sagemaker-edge
297 mypy-boto3-sagemaker-featurestore-runtime
298 mypy-boto3-sagemaker-geospatial
299 mypy-boto3-sagemaker-metrics
300 mypy-boto3-sagemaker-runtime
301 mypy-boto3-savingsplans
302 mypy-boto3-scheduler
303 mypy-boto3-schemas
304 mypy-boto3-sdb
305 mypy-boto3-secretsmanager
306 mypy-boto3-securityhub
307 mypy-boto3-securitylake
308 mypy-boto3-serverlessrepo
309 mypy-boto3-service-quotas
310 mypy-boto3-servicecatalog
311 mypy-boto3-servicecatalog-appregistry
312 mypy-boto3-servicediscovery
313 mypy-boto3-ses
314 mypy-boto3-sesv2
315 mypy-boto3-shield
316 mypy-boto3-signer
317 mypy-boto3-simspaceweaver
318 mypy-boto3-sms
319 mypy-boto3-sms-voice
320 mypy-boto3-snow-device-management
321 mypy-boto3-snowball
322 mypy-boto3-sns
323 mypy-boto3-sqs
324 mypy-boto3-ssm
325 mypy-boto3-ssm-contacts
326 mypy-boto3-ssm-incidents
327 mypy-boto3-ssm-sap
328 mypy-boto3-sso
329 mypy-boto3-sso-admin
330 mypy-boto3-sso-oidc
331 mypy-boto3-stepfunctions
332 mypy-boto3-storagegateway
333 mypy-boto3-sts
334 mypy-boto3-support
335 mypy-boto3-support-app
336 mypy-boto3-swf
337 mypy-boto3-synthetics
338 mypy-boto3-textract
339 mypy-boto3-timestream-query
340 mypy-boto3-timestream-write
341 mypy-boto3-tnb
342 mypy-boto3-transcribe
343 mypy-boto3-transfer
344 mypy-boto3-translate
345 mypy-boto3-verifiedpermissions
346 mypy-boto3-voice-id
347 mypy-boto3-vpc-lattice
348 mypy-boto3-waf
349 mypy-boto3-waf-regional
350 mypy-boto3-wafv2
351 mypy-boto3-wellarchitected
352 mypy-boto3-wisdom
353 mypy-boto3-workdocs
354 mypy-boto3-worklink
355 mypy-boto3-workmail
356 mypy-boto3-workmailmessageflow
357 mypy-boto3-workspaces
358 mypy-boto3-workspaces-web
359 mypy-boto3-xray)
360
361for package in "${packages[@]}"; do
362 package_short_name="${package#mypy-boto3-}"
363 old_version=$(awk -v pkg="\"$package_short_name\"" -F'"' '$0 ~ pkg {printf $4}' ${source_file})
364 version=$(curl -s https://pypi.org/pypi/${package}/json | jq -r '.info.version')
365
366 echo "Updating ${package} from ${old_version} to ${version}"
367
368 if [ "${version}" != "${old_version}" ]; then
369 url="https://pypi.io/packages/source/m/${package//-/_}/${package//-/_}-${version}.tar.gz"
370 hash=$(nix-prefetch-url --type sha256 $url)
371 sri_hash="$(nix --extra-experimental-features nix-command hash to-sri --type sha256 $hash)"
372
373 awk -i inplace -v pkg="\"$package_short_name\"" -v new_version="$version" -v new_sha256="$sri_hash" '
374 # Match the line containing the package name
375 $0 ~ pkg && $0 ~ /buildMypyBoto3Package/ {
376 # Update the version
377 sub(/"[^"]+"/, "\"" new_version "\"", $3);
378 print;
379 # Update the next line with the new sha256
380 getline;
381 sub(/"[^"]+"/, "\"" new_sha256 "\"");
382 }
383 { print }
384 ' ${source_file}
385
386 nixfmt ${source_file}
387
388 git commit ${source_file} -m "python312Packages.${package}: ${old_version} -> ${version}"
389 fi
390
391done