File size: 22,280 Bytes
d4b7c04 f641e6a d4b7c04 03c3684 d4b7c04 f641e6a 0e6871c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 |
from typing import Dict, List, Optional
from pydantic import BaseModel, Field, validator, field_validator
from datetime import datetime
class PsxStock(BaseModel):
script_code: str
script_name: str
ldcp: str
open: str
high: str
low: str
current: str
change: str
volume: str
trend: str
class PsxMarketResponse(BaseModel):
sectors: Dict[str, List[PsxStock]]
class CircuitBreaker(BaseModel):
lower_limit: float = Field(..., alias="lowerLimit")
upper_limit: float = Field(..., alias="upperLimit")
current_price: float = Field(..., alias="currentPrice")
class DayRange(BaseModel):
low: float
high: float
current: float
class YearRange(BaseModel):
low: float
high: float
current: float
class TradingStats(BaseModel):
open_price: Optional[float] = Field(None, alias="open")
high_price: Optional[float] = Field(None, alias="high")
low_price: Optional[float] = Field(None, alias="low")
close_price: Optional[float] = Field(None, alias="close")
volume: Optional[int] = None
ask_price: Optional[float] = Field(None, alias="askPrice")
ask_volume: Optional[int] = Field(None, alias="askVolume")
bid_price: Optional[float] = Field(None, alias="bidPrice")
bid_volume: Optional[int] = Field(None, alias="bidVolume")
ldcp: Optional[float] = None
var: Optional[float] = None
haircut: Optional[float] = None
pe_ratio: Optional[float] = Field(None, alias="peRatio")
class QuoteData(BaseModel):
company_name: str = Field(..., alias="companyName")
symbol: str
sector: str
current_price: float = Field(..., alias="currentPrice")
change: float
change_percent: float = Field(..., alias="changePercent")
circuit_breaker: CircuitBreaker
day_range: DayRange = Field(..., alias="dayRange")
year_range: YearRange = Field(..., alias="yearRange")
trading_stats: TradingStats = Field(..., alias="tradingStats")
one_year_change: Optional[float] = Field(None, alias="oneYearChange")
ytd_change: Optional[float] = Field(None, alias="ytdChange")
class FinancialResult(BaseModel):
date: str
title: str
document_link: Optional[str] = Field(None, alias="documentLink")
pdf_link: Optional[str] = Field(None, alias="pdfLink")
class FinancialEntry(BaseModel):
period: str
sales: Optional[float] = None
profit_after_tax: Optional[float] = Field(None, alias="profitAfterTax")
eps: Optional[float] = None
class Financials(BaseModel):
annual: List[FinancialEntry]
quarterly: List[FinancialEntry]
class RatioEntry(BaseModel):
period: str
gross_profit_margin: Optional[float] = Field(None, alias="grossProfitMargin")
net_profit_margin: Optional[float] = Field(None, alias="netProfitMargin")
eps_growth: Optional[float] = Field(None, alias="epsGrowth")
peg: Optional[float] = None
class CompanyProfile(BaseModel):
business_description: str = Field(..., alias="businessDescription")
key_people: List[Dict[str, str]] = Field(..., alias="keyPeople")
address: str
website: str
registrar: str
auditor: str
fiscal_year_end: str = Field(..., alias="fiscalYearEnd")
class EquityProfile(BaseModel):
market_cap: float = Field(..., alias="marketCap")
shares: int
free_float_units: int = Field(..., alias="freeFloatUnits")
free_float_percent: float = Field(..., alias="freeFloatPercent")
class CompanyData(BaseModel):
# quote: QuoteData
# profile: CompanyProfile
# equity: EquityProfile
announcements: List[FinancialResult]
financials: Financials
ratios: List[RatioEntry]
timestamp: datetime = Field(default_factory=datetime.now)
class CircuitBreakerRow(BaseModel):
symbol: str
ldcp: float
open: float
high: float
low: float
current: float
change: float
change_percent: float
volume: int
@field_validator(
"ldcp", "open", "high", "low", "current", "change", "change_percent",
mode="before"
)
@classmethod
def parse_float(cls, v):
return float(v.replace(",", "").replace("%", ""))
@field_validator("volume", mode="before")
@classmethod
def parse_int(cls, v):
return int(v.replace(",", ""))
## Currency Model
from typing import Optional
from pydantic import BaseModel
class CountryName(BaseModel):
field_1inch: str = Field(..., alias='1inch')
aave: str
ada: str
aed: str
afn: str
agix: str
akt: str
algo: str
all: str
amd: str
amp: str
ang: str
aoa: str
ape: str
apt: str
ar: str
arb: str
ars: str
atom: str
aud: str
avax: str
awg: str
axs: str
azn: str
bake: str
bam: str
bat: str
bbd: str
bch: str
bdt: str
bgn: str
bhd: str
bif: str
bmd: str
bnb: str
bnd: str
bob: str
brl: str
bsd: str
bsv: str
bsw: str
btc: str
btg: str
btn: str
btt: str
busd: str
bwp: str
byn: str
byr: str
bzd: str
cad: str
cake: str
cdf: str
celo: str
cfx: str
chf: str
chz: str
clp: str
cnh: str
cny: str
comp: str
cop: str
crc: str
cro: str
crv: str
cspr: str
cuc: str
cup: str
cve: str
cvx: str
czk: str
dai: str
dash: str
dcr: str
dfi: str
djf: str
dkk: str
doge: str
dop: str
dot: str
dydx: str
dzd: str
egld: str
egp: str
enj: str
eos: str
ern: str
etb: str
etc: str
eth: str
eur: str
fei: str
fil: str
fjd: str
fkp: str
flow: str
flr: str
frax: str
ftt: str
gala: str
gbp: str
gel: str
ggp: str
ghs: str
gip: str
gmd: str
gmx: str
gnf: str
gno: str
grt: str
gt: str
gtq: str
gusd: str
gyd: str
hbar: str
hkd: str
hnl: str
hnt: str
hot: str
hrk: str
ht: str
htg: str
huf: str
icp: str
idr: str
ils: str
imp: str
imx: str
inj: str
inr: str
iqd: str
irr: str
isk: str
jep: str
jmd: str
jod: str
jpy: str
kas: str
kava: str
kcs: str
kda: str
kes: str
kgs: str
khr: str
kmf: str
knc: str
kpw: str
krw: str
ksm: str
kwd: str
kyd: str
kzt: str
lak: str
lbp: str
ldo: str
leo: str
link: str
lkr: str
lrc: str
lrd: str
lsl: str
ltc: str
ltl: str
luna: str
lunc: str
lvl: str
lyd: str
mad: str
mana: str
mbx: str
mdl: str
mga: str
mina: str
mkd: str
mkr: str
mmk: str
mnt: str
mop: str
mru: str
mur: str
mvr: str
mwk: str
mxn: str
myr: str
mzn: str
nad: str
near: str
neo: str
nexo: str
nft: str
ngn: str
nio: str
nok: str
npr: str
nzd: str
okb: str
omr: str
one: str
op: str
ordi: str
pab: str
paxg: str
pen: str
pepe: str
pgk: str
php: str
pi: str
pkr: str
pln: str
pol: str
pyg: str
qar: str
qnt: str
qtum: str
ron: str
rpl: str
rsd: str
rub: str
rune: str
rvn: str
rwf: str
sand: str
sar: str
sbd: str
scr: str
sdg: str
sek: str
sgd: str
shib: str
shp: str
sle: str
sll: str
snx: str
sol: str
sos: str
srd: str
std: str
stn: str
stx: str
sui: str
svc: str
syp: str
szl: str
thb: str
theta: str
tjs: str
tmt: str
tnd: str
ton: str
top: str
trx: str
try_: str = Field(..., alias='try')
ttd: str
tusd: str
twd: str
twt: str
tzs: str
uah: str
ugx: str
uni: str
usd: str
usdc: str
usdd: str
usdp: str
usdt: str
uyu: str
uzs: str
ves: str
vet: str
vnd: str
vuv: str
waves: str
wemix: str
woo: str
wst: str
xaf: str
xag: str
xau: str
xaut: str
xcd: str
xcg: str
xch: str
xdc: str
xdr: str
xec: str
xem: str
xlm: str
xmr: str
xof: str
xpf: str
xrp: str
xtz: str
yer: str
zar: str
zec: str
zil: str
zmk: str
zmw: str
zwl: str
class PkrRates(BaseModel):
"""Model for PKR exchange rates against various currencies"""
inch: float = Field(..., alias='1inch')
aave: Optional[float] = 0.000027870604
ada: Optional[float] = 0.01212527
aed: Optional[float] = 0.013141508
afn: Optional[float] = 0.22735161
agix: Optional[float] = 0.046521451
akt: Optional[float] = 0.010385581
algo: Optional[float] = 0.036216193
all: Optional[float] = 0.29080989
amd: Optional[float] = 1.36284581
amp: Optional[float] = 2.24984732
ang: Optional[float] = 0.0064189272
aoa: Optional[float] = 3.27135551
ape: Optional[float] = 0.026637767
apt: Optional[float] = 0.0036678014
ar: Optional[float] = 0.0017025592
arb: Optional[float] = 0.02994547
ars: Optional[float] = 4.99480145
atom: Optional[float] = 0.0016563239
ats: Optional[float] = 0.041480256
aud: Optional[float] = 0.0050590778
avax: Optional[float] = 0.00037492198
awg: Optional[float] = 0.0064052552
axs: Optional[float] = 0.0024467576
azm: Optional[float] = 30.44265554
azn: Optional[float] = 0.0060885311
bake: Optional[float] = 1.34151212
bam: Optional[float] = 0.0058958256
bat: Optional[float] = 0.026497622
bbd: Optional[float] = 0.0071567097
bch: Optional[float] = 0.000006389789
bdt: Optional[float] = 0.43772915
bef: Optional[float] = 0.12160414
bgn: Optional[float] = 0.0058958256
bhd: Optional[float] = 0.0013454614
bif: Optional[float] = 10.57869332
bmd: Optional[float] = 0.0035783548
bnb: Optional[float] = 0.0000056818118
bnd: Optional[float] = 0.0045205631
bob: Optional[float] = 0.024734743
brl: Optional[float] = 0.018678264
bsd: Optional[float] = 0.0035783548
bsv: Optional[float] = 0.00020956946
bsw: Optional[float] = 1.81327133
btc: Optional[float] = 0.000000051457291 # 5.1457291e-8
btg: Optional[float] = 0.0041817238
btn: Optional[float] = 0.32404079
btt: Optional[float] = 10075.74928564
busd: Optional[float] = 0.0035764397
bwp: Optional[float] = 0.046911298
byn: Optional[float] = 0.010237608
byr: Optional[float] = 102.37607704
bzd: Optional[float] = 0.0071995125
cad: Optional[float] = 0.0048731761
cake: Optional[float] = 0.0026684964
cdf: Optional[float] = 8.1224622
celo: Optional[float] = 0.039886713
cfx: Optional[float] = 0.062977778
chf: Optional[float] = 0.0027485132
chz: Optional[float] = 0.084007786
clp: Optional[float] = 3.08238532
cnh: Optional[float] = 0.024695302
cny: Optional[float] = 0.024721696
comp: Optional[float] = 0.00017687447
cop: Optional[float] = 13.09720649
crc: Optional[float] = 1.72893021
cro: Optional[float] = 0.043457367
crv: Optional[float] = 0.013495293
cspr: Optional[float] = 0.99753074
cuc: Optional[float] = 0.0035783548
cup: Optional[float] = 0.085787938
cve: Optional[float] = 0.33240757
cvx: Optional[float] = 0.001812335
cyp: Optional[float] = 0.0017643013
czk: Optional[float] = 0.073152658
dai: Optional[float] = 0.0035784301
dash: Optional[float] = 0.000088593379
dcr: Optional[float] = 0.00014578477
dem: Optional[float] = 0.0058958256
dfi: Optional[float] = 5.35164713
djf: Optional[float] = 0.63819024
dkk: Optional[float] = 0.022531693
doge: Optional[float] = 0.03161875
dop: Optional[float] = 0.2223377
dot: Optional[float] = 0.0025389979
dydx: Optional[float] = 0.031888397
dzd: Optional[float] = 0.46388719
eek: Optional[float] = 0.047166605
egld: Optional[float] = 0.00068601026
egp: Optional[float] = 0.16730156
enj: Optional[float] = 0.15902853
eos: Optional[float] = 0.040239152
ern: Optional[float] = 0.053675323
esp: Optional[float] = 0.50156856
etb: Optional[float] = 0.55621057
etc: Optional[float] = 0.0003995226
eth: Optional[float] = 0.0000017365799
eur: Optional[float] = 0.0030144878
eurc: Optional[float] = 0.0030166921
fei: Optional[float] = 0.0035090934
fil: Optional[float] = 0.0035277925
fim: Optional[float] = 0.01792333
fjd: Optional[float] = 0.0078727543
fkp: Optional[float] = 0.0026213082
flow: Optional[float] = 0.07995228
flr: Optional[float] = 0.36052625
frax: Optional[float] = 0.0036090592
frf: Optional[float] = 0.019773744
ftt: Optional[float] = 0.010051534
gala: Optional[float] = 0.83330051
gbp: Optional[float] = 0.0026213082
gel: Optional[float] = 0.009591452
ggp: Optional[float] = 0.0026213082
ghc: Optional[float] = 393.42404137
ghs: Optional[float] = 0.039342404
gip: Optional[float] = 0.0026213082
gmd: Optional[float] = 0.26411095
gmx: Optional[float] = 0.00054220394
gnf: Optional[float] = 31.40305737
gno: Optional[float] = 0.000027069202
grd: Optional[float] = 1.02718671
grt: Optional[float] = 0.12436019
gt: Optional[float] = 0.0004932477
gtq: Optional[float] = 0.027422428
gusd: Optional[float] = 0.0035820834
gyd: Optional[float] = 0.74824559
hbar: Optional[float] = 0.03468262
hkd: Optional[float] = 0.02797238
hnl: Optional[float] = 0.094857481
hnt: Optional[float] = 0.0031545799
hot: Optional[float] = 8.77272144
hrk: Optional[float] = 0.022712658
ht: Optional[float] = 0.014406174
htg: Optional[float] = 0.46996889
huf: Optional[float] = 1.14312086
icp: Optional[float] = 0.0014210805
idr: Optional[float] = 60.2210084
iep: Optional[float] = 0.002374102
ils: Optional[float] = 0.011043883
imp: Optional[float] = 0.0026213082
imx: Optional[float] = 0.020578292
inj: Optional[float] = 0.0010994197
inr: Optional[float] = 0.32404079
iqd: Optional[float] = 4.68801963
irr: Optional[float] = 4575.15188598
isk: Optional[float] = 0.43718127
itl: Optional[float] = 5.83686224
jep: Optional[float] = 0.0026213082
jmd: Optional[float] = 0.55854612
jod: Optional[float] = 0.0025370536
jpy: Optional[float] = 0.5464799
kas: Optional[float] = 0.10824109
kava: Optional[float] = 0.061803407
kcs: Optional[float] = 0.00041413697
kda: Optional[float] = 0.44424418
kes: Optional[float] = 0.46130149
kgs: Optional[float] = 0.31295651
khr: Optional[float] = 14.37682204
klay: Optional[float] = 0.05966859
kmf: Optional[float] = 1.48303077
knc: Optional[float] = 0.023756734
kpw: Optional[float] = 3.22057115
krw: Optional[float] = 5.15615217
ksm: Optional[float] = 0.00074242121
kwd: Optional[float] = 0.0010966712
kyd: Optional[float] = 0.0029556765
kzt: Optional[float] = 1.77225517
lak: Optional[float] = 76.63134176
lbp: Optional[float] = 321.24646567
ldo: Optional[float] = 0.010060335
leo: Optional[float] = 0.00040689885
link: Optional[float] = 0.00039577489
lkr: Optional[float] = 1.10636398
lrc: Optional[float] = 0.10452585
lrd: Optional[float] = 0.6665422
lsl: Optional[float] = 0.057056562
ltc: Optional[float] = 0.000064180737
ltl: Optional[float] = 0.010408423
luf: Optional[float] = 0.12160414
luna: Optional[float] = 0.055650373
lunc: Optional[float] = 103.17056374
lvl: Optional[float] = 0.002118582
lyd: Optional[float] = 0.022530779
mad: Optional[float] = 0.032674995
mana: Optional[float] = 0.033309473
mbx: Optional[float] = 0.067994222
mdl: Optional[float] = 0.060616726
mga: Optional[float] = 15.70701508
mgf: Optional[float] = 78.53507542
mina: Optional[float] = 0.052000424
mkd: Optional[float] = 0.18573365
mkr: Optional[float] = 0.0000021884969
mmk: Optional[float] = 7.5133109
mnt: Optional[float] = 12.76193802
mop: Optional[float] = 0.028811551
mro: Optional[float] = 1.42969127
mru: Optional[float] = 0.14296913
mtl: Optional[float] = 0.0012941196
mur: Optional[float] = 0.16422284
mvr: Optional[float] = 0.05529167
mwk: Optional[float] = 6.20471537
mxn: Optional[float] = 0.061423027
mxv: Optional[float] = 0.0070874814
myr: Optional[float] = 0.013980479
mzm: Optional[float] = 228.55055252
mzn: Optional[float] = 0.22855055
nad: Optional[float] = 0.057056562
near: Optional[float] = 0.0033478921
neo: Optional[float] = 0.0012221448
nexo: Optional[float] = 0.0041653116
nft: Optional[float] = 10324.6074446
ngn: Optional[float] = 4.85024477
nio: Optional[float] = 0.13151867
nlg: Optional[float] = 0.0066430568
nok: Optional[float] = 0.034016339
npr: Optional[float] = 0.51870829
nzd: Optional[float] = 0.0059255473
okb: Optional[float] = 0.000044555727
omr: Optional[float] = 0.0013744249
one: Optional[float] = 1.34065259
op: Optional[float] = 0.018308592
ordi: Optional[float] = 0.0012187735
pab: Optional[float] = 0.0035783548
paxg: Optional[float] = 0.0000007115336 # 7.115336e-7
pen: Optional[float] = 0.011999961
pepe: Optional[float] = 737.8067472
pgk: Optional[float] = 0.015333169
php: Optional[float] = 0.20716718
pi: Optional[float] = 0.018629944
pkr: Optional[float] = 1.0
pln: Optional[float] = 0.012697271
pol: Optional[float] = 0.033052428
pte: Optional[float] = 0.60435054
pyg: Optional[float] = 23.44895477
qar: Optional[float] = 0.013025212
qnt: Optional[float] = 0.000048647043
qtum: Optional[float] = 0.0034882245
rol: Optional[float] = 153.53159924
ron: Optional[float] = 0.01535316
rpl: Optional[float] = 0.0020615425
rsd: Optional[float] = 0.35404644
rub: Optional[float] = 0.27456613
rune: Optional[float] = 0.0085832862
rvn: Optional[float] = 0.56276866
rwf: Optional[float] = 5.21546965
sand: Optional[float] = 0.038975081
sar: Optional[float] = 0.013418831
sbd: Optional[float] = 0.028782375
scr: Optional[float] = 0.052206617
sdd: Optional[float] = 214.75529922
sdg: Optional[float] = 2.14755299
sek: Optional[float] = 0.031929605
sgd: Optional[float] = 0.0045205631
shib: Optional[float] = 518.99655842
shp: Optional[float] = 0.0026213082
sit: Optional[float] = 0.72239185
skk: Optional[float] = 0.090814459
sle: Optional[float] = 0.081765145
sll: Optional[float] = 81.76514481
snx: Optional[float] = 0.011623316
sol: Optional[float] = 0.000040638459
sos: Optional[float] = 2.04303502
spl: Optional[float] = 0.00059639247
srd: Optional[float] = 0.13559105
srg: Optional[float] = 135.59105178
ssp: Optional[float] = 16.29194282
std: Optional[float] = 74.1291884
stn: Optional[float] = 0.074129188
stx: Optional[float] = 0.012988158
sui: Optional[float] = 0.0034980047
svc: Optional[float] = 0.031310605
syp: Optional[float] = 0.3957423
szl: Optional[float] = 0.057056562
thb: Optional[float] = 0.11116065
theta: Optional[float] = 0.016388406
tjs: Optional[float] = 0.033782985
tmm: Optional[float] = 62.54995053
tmt: Optional[float] = 0.01250999
tnd: Optional[float] = 0.010272105
ton: Optional[float] = 0.0024115185
top: Optional[float] = 0.0084204575
trl: Optional[float] = 156077.25045115
trx: Optional[float] = 0.012694543
try_: float = Field(..., alias='try')
ttd: Optional[float] = 0.024142566
tusd: Optional[float] = 0.0035839966
tvd: Optional[float] = 0.0050590778
twd: Optional[float] = 0.11230099
twt: Optional[float] = 0.0068069886
tzs: Optional[float] = 9.23521055
uah: Optional[float] = 0.15408012
ugx: Optional[float] = 12.66715156
uni: Optional[float] = 0.00098728734
usd: Optional[float] = 0.0035783548
usdc: Optional[float] = 0.0035786866
usdd: Optional[float] = 0.0035802976
usdp: Optional[float] = 0.0035803197
usdt: Optional[float] = 0.003579871
uyu: Optional[float] = 0.13856147
uzs: Optional[float] = 43.73539013
val: Optional[float] = 5.83686224
veb: Optional[float] = 140480603.3195581
ved: Optional[float] = 1.40480603
vef: Optional[float] = 140480.60331956
ves: Optional[float] = 1.40480603
vet: Optional[float] = 0.40967996
vnd: Optional[float] = 92.87837846
vuv: Optional[float] = 0.42560658
waves: Optional[float] = 0.0063235068
wemix: Optional[float] = 0.011294285
woo: Optional[float] = 0.19966932
wst: Optional[float] = 0.0097052715
xaf: Optional[float] = 1.97737435
xag: Optional[float] = 0.000046224216
xau: Optional[float] = 0.00000070955592 # 7.0955592e-7
xaut: Optional[float] = 0.0000007159874 # 7.159874e-7
xbt: Optional[float] = 0.000000051485012 # 5.1485012e-8
xcd: Optional[float] = 0.0096659557
xcg: Optional[float] = 0.0064189272
xch: Optional[float] = 0.0011740879
xdc: Optional[float] = 0.095836852
xdr: Optional[float] = 0.0026022409
xec: Optional[float] = 417.58644553
xem: Optional[float] = 4.50114505
xlm: Optional[float] = 0.020355646
xmr: Optional[float] = 0.000010185332
xof: Optional[float] = 1.97737435
xpd: Optional[float] = 0.0000020938589
xpf: Optional[float] = 0.35972408
xpt: Optional[float] = 0.0000017299438
xrp: Optional[float] = 0.0023407297
xtz: Optional[float] = 0.0085248659
yer: Optional[float] = 0.85292226
zar: Optional[float] = 0.057056562
zec: Optional[float] = 0.000010949103
zil: Optional[float] = 0.79280654
zmk: Optional[float] = 65.25187985
zmw: Optional[float] = 0.06525188
zwd: Optional[float] = 1.29500661
zwg: Optional[float] = 0.091476953
zwl: Optional[float] = 228.57567566
class ExchangeRateResponse(BaseModel):
"""Main model for exchange rate data"""
date: datetime
pkr: PkrRates
class CurrencyResponse(BaseModel):
country: str
currency: float
class CurrencyCountryResponse(BaseModel):
response: List[CurrencyResponse]
|