diff --git a/.env.example b/.env.example deleted file mode 100644 index afeade6..0000000 --- a/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -export APCA_API_KEY_ID="XXXXXXXXXXXXXXXXXXXXXXXXX" -export APCA_API_SECRET_KEY="yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" diff --git a/README.md b/README.md deleted file mode 100644 index e45912b..0000000 --- a/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Ticker Tape - -To download a list of trades from a specific day from Alpaca, make an account on https://alpaca.markets/ and set APCA_API_KEY_ID and APCA_API_SECRET_KEY environment variables. - -Then use `ticker_tape.py` to download and then sort them: - -``` -python ticker_tape.py --symbol-file sp100_symbols.txt --start 2026-06-12 --raw > trades_unsorted.csv -sort -t, -k1 trades_unsorted.csv > trades_sorted.csv -``` - -To generate ESC/POS commands for the receipt printer use `print_tape.py`: - -``` -uv run python print_tape.py -o ticker_tape.escpos trades_sorted.csv -``` - -Defaults to 10,000 trades per escpos file, cutting the receipt paper every 1000 stocks. - -1000 trades translates into about roughly 10 feet of receipt paper. diff --git a/djia_symbols.txt b/djia_symbols.txt deleted file mode 100644 index e6cf4ad..0000000 --- a/djia_symbols.txt +++ /dev/null @@ -1,30 +0,0 @@ -MMM -AXP -AMGN -AMZN -AAPL -BA -CAT -CVX -CSCO -KO -DIS -GS -HD -HON -IBM -JNJ -JPM -MCD -MRK -MSFT -NKE -NVDA -PG -CRM -SHW -TRV -UNH -VZ -V -WMT diff --git a/nyse_symbols.txt b/nyse_symbols.txt deleted file mode 100644 index 9e87b23..0000000 --- a/nyse_symbols.txt +++ /dev/null @@ -1,2412 +0,0 @@ -A -AA -AADX -AAMI -AAP -AAT -AAUC -AB -ABBV -ABCB -ABEV -ABG -ABM -ABR -ABT -ABX -ABXL -ACA -ACCO -ACEL -ACH -ACHR -ACI -ACLO -ACM -ACN -ACP -ACR -ACRE -ACV -ACVA -AD -ADC -ADCT -ADM -ADNT -ADT -ADX -AEE -AEFC -AEG -AEM -AEO -AER -AERO -AES -AESI -AEXA -AFB -AFG -AFGB -AFGC -AFGD -AFGE -AFL -AG -AGBK -AGCO -AGD -AGI -AGL -AGM -AGO -AGRO -AGX -AHR -AHRT -AHT -AI -AIG -AII -AIIA -AIN -AIO -AIR -AIT -AIV -AIZ -AIZN -AJG -AKA -AKAF -AKR -ALB -ALC -ALG -ALH -ALIT -ALK -ALL -ALLE -ALLY -ALSN -ALTG -ALUB -ALV -ALX -AM -AMBP -AMBQ -AMC -AMCR -AME -AMG -AMH -AMN -AMP -AMPX -AMPY -AMR -AMRC -AMRZ -AMT -AMTB -AMTD -AMTM -AMWL -AMX -AN -ANDG -ANET -ANF -ANGX -ANRO -ANVS -AOD -AOMD -AOMN -AOMR -AON -AORT -AOS -AP -APAM -APD -APG -APH -APLE -APO -APOS -APTV -AQN -AQNB -AR -ARCO -ARDC -ARDT -ARE -ARES -ARI -ARIS -ARL -ARLO -ARMK -AROC -ARR -ARW -ARX -AS -ASA -ASAN -ASB -ASBA -ASC -ASG -ASGI -ASH -ASIC -ASIX -ASPN -ASR -ASX -ATEN -ATHM -ATHS -ATI -ATKR -ATMU -ATO -ATR -ATS -AU -AUB -AUNA -AVA -AVAL -AVB -AVBC -AVD -AVEX -AVK -AVNS -AVNT -AVTR -AVY -AWF -AWI -AWK -AWP -AWR -AX -AXIA -AXP -AXR -AXS -AXTA -AYI -AZN -AZO -AZZ -B -BA -BABA -BAC -BAH -BAK -BALL -BALY -BAM -BANC -BAP -BARK -BAX -BB -BBAI -BBAR -BBBY -BBD -BBDC -BBDO -BBN -BBT -BBUC -BBVA -BBW -BBWI -BBY -BC -BCAT -BCC -BCE -BCEM -BCGD -BCH -BCO -BCS -BCSF -BCSM -BCSS -BCX -BDC -BDJ -BDN -BDX -BE -BEBE -BEKE -BEN -BEP -BEPC -BEPH -BEPI -BEPJ -BETA -BFAM -BFH -BFLY -BFS -BG -BGB -BGH -BGR -BGS -BGSF -BGSI -BGT -BGX -BGY -BH -BHC -BHE -BHK -BHP -BHR -BHV -BHVN -BIII -BILL -BIO -BIP -BIPC -BIPH -BIPI -BIPJ -BIRK -BIT -BJ -BKD -BKE -BKH -BKKT -BKSY -BKT -BKU -BKV -BLCO -BLD -BLDR -BLK -BLND -BLSH -BLW -BLX -BMA -BME -BMEZ -BMI -BMN -BMO -BMY -BN -BNED -BNH -BNJ -BNL -BNS -BNT -BNY -BOBS -BOC -BOE -BOH -BOND -BOOT -BORR -BOW -BOX -BP -BPRE -BR -BRBR -BRC -BRCC -BRCE -BREE -BRIE -BRO -BROL -BROS -BRSL -BRSP -BRT -BRW -BRX -BSAC -BSBR -BSL -BSM -BST -BSTZ -BSX -BTE -BTGO -BTI -BTO -BTT -BTU -BTX -BTZ -BUD -BUI -BUR -BURL -BUXX -BV -BVN -BW -BWA -BWG -BWIV -BWLP -BWMX -BWNB -BWXT -BX -BXC -BXDC -BXMT -BXP -BXSL -BY -BYD -BZH -C -CAAP -CABO -CACI -CAE -CAF -CAG -CAH -CAL -CALX -CALY -CANG -CAPL -CARR -CARS -CAT -CATO -CAVA -CB -CBAN -CBL -CBNA -CBRE -CBT -CBU -CBZ -CC -CCI -CCID -CCIF -CCJ -CCK -CCL -CCM -CCO -CCS -CCU -CCZ -CDE -CDLR -CDP -CDRE -CE -CEE -CEPU -CF -CFG -CFND -CFR -CGAU -CGV -CHCT -CHD -CHE -CHGG -CHH -CHMI -CHPT -CHT -CHWY -CI -CIA -CIB -CICB -CICC -CIEN -CIF -CIG -CII -CIM -CIMN -CIMO -CIMP -CINT -CION -CL -CLB -CLBR -CLDT -CLF -CLH -CLPR -CLS -CLVT -CLW -CLX -CM -CMBT -CMC -CMCM -CMDB -CMG -CMI -CMP -CMRE -CMS -CMSA -CMSC -CMSD -CMTG -CNA -CNC -CNF -CNH -CNI -CNK -CNM -CNMD -CNNE -CNO -CNP -CNQ -CNR -CNS -CNX -CODI -COF -COHR -COLD -COMP -CON -COOK -COP -COPL -COR -COSO -COTY -COUR -CP -CPA -CPAC -CPAI -CPAY -CPF -CPK -CPNG -CPRI -CPS -CPT -CQP -CR -CRBD -CRBG -CRC -CRCL -CRGY -CRH -CRI -CRK -CRL -CRM -CRS -CRT -CSAN -CSL -CSR -CSTM -CSV -CSW -CTEV -CTO -CTOS -CTRE -CTRI -CTS -CTVA -CUBB -CUBE -CUBI -CURB -CURV -CUZ -CVE -CVEO -CVI -CVLG -CVNA -CVS -CVSA -CVX -CW -CWAN -CWEN -CWH -CWK -CWT -CX -CXM -CXT -CXW -CYD -CYH -D -DAC -DAL -DAN -DAO -DAR -DAVA -DB -DBD -DBI -DBL -DBRG -DCBG -DCH -DCI -DCO -DCOM -DD -DDD -DDL -DDS -DDT -DE -DEA -DEC -DECK -DEI -DELL -DEO -DFH -DFIN -DFP -DG -DGX -DHF -DHI -DHR -DHT -DHX -DIN -DINO -DIS -DIVY -DK -DKL -DKS -DLB -DLNG -DLR -DLX -DLY -DMA -DMB -DMO -DNA -DNOW -DNP -DOC -DOCN -DOCS -DOLE -DOUG -DOV -DOW -DPG -DQ -DRD -DRI -DRLL -DSL -DSM -DSMC -DSTX -DSU -DSX -DT -DTB -DTE -DTF -DTG -DTK -DTM -DTW -DUK -DUKB -DV -DVA -DVN -DX -DXC -DXYZ -DY -E -EAF -EAI -EARN -EAT -EBF -EBS -EC -ECAT -ECC -ECCC -ECCU -ECCV -ECG -ECL -ECO -ECVT -ED -EDD -EDF -EDN -EDU -EE -EEA -EEX -EFC -EFOR -EFR -EFT -EFX -EFXT -EG -EGO -EGP -EGY -EHC -EHI -EIC -EICA -EIG -EIIA -EIX -EL -ELAN -ELC -ELF -ELLA -ELME -ELPC -ELS -ELV -EMA -EMBJ -EMD -EME -EMF -EMN -EMO -EMP -EMR -ENB -ENHA -ENIC -ENJ -ENO -ENOV -ENR -ENS -ENVA -EOD -EOG -EOI -EOS -EOT -EPAC -EPAM -EPC -EPD -EPR -EPRT -EQBK -EQH -EQNR -EQR -EQS -EQT -ERO -EROC -EROK -ES -ESAB -ESE -ESI -ESNT -ESRT -ESS -ESTC -ET -ETB -ETD -ETG -ETJ -ETN -ETO -ETR -ETSS -ETSY -ETV -ETW -ETX -ETY -EVAC -EVC -EVEX -EVF -EVG -EVH -EVMN -EVN -EVR -EVT -EVTC -EVTL -EVTR -EW -EXG -EXK -EXP -EXPD -EXR -F -FAF -FBIN -FBK -FBP -FBRT -FC -FCF -FCN -FCPT -FCRS -FCT -FCX -FDP -FDS -FDX -FDXF -FE -FEDU -FEGE -FENG -FEOE -FERG -FET -FF -FFA -FFC -FG -FGN -FGSN -FHI -FHN -FICO -FIG -FIGS -FINS -FINV -FIS -FITB -FIX -FIXT -FLC -FLG -FLNG -FLO -FLOC -FLR -FLS -FLUT -FLXR -FMC -FMN -FMS -FMX -FMY -FN -FNB -FND -FNF -FNV -FOA -FOF -FOR -FOUR -FPF -FPH -FPI -FPS -FR -FRA -FRO -FRT -FSCO -FSK -FSM -FSS -FSSL -FT -FTHY -FTI -FTK -FTS -FTV -FTW -FTWO -FUBO -FUL -FUN -FVR -FVRR -FXED -G -GAB -GAM -GAP -GATX -GBAB -GBCI -GBTG -GBX -GCO -GCTS -GCV -GD -GDDY -GDIV -GDL -GDO -GDOT -GDV -GE -GEF -GEL -GENI -GEO -GETY -GEV -GF -GFF -GFI -GFL -GFR -GGB -GGG -GGT -GGZ -GHC -GHG -GHI -GHM -GHY -GIB -GIC -GIL -GIS -GJH -GJO -GJP -GJR -GJS -GJT -GKOS -GL -GLED -GLOB -GLP -GLW -GM -GME -GMED -GMMF -GMRS -GNE -GNK -GNL -GNRC -GNT -GNW -GOF -GOLD -GOLF -GOOS -GOTU -GPC -GPGI -GPI -GPJA -GPK -GPMT -GPN -GPOR -GPRK -GRBK -GRC -GRDN -GRMN -GRND -GRNT -GROV -GRX -GS -GSBD -GSK -GSL -GTES -GTLS -GTN -GTY -GUG -GUT -GVA -GWH -GWRE -GWW -GXO -GYLD -H -HAE -HAFN -HAL -HASI -HAWK -HAYW -HBB -HBM -HCA -HCC -HCI -HCXY -HD -HDB -HE -HEI -HEQ -HESM -HF -HFEQ -HFGM -HFMF -HFND -HFRO -HG -HGER -HGLB -HGTY -HGV -HHH -HIG -HII -HIMS -HIO -HIPO -HIW -HIX -HKD -HL -HLF -HLI -HLIO -HLLY -HLN -HLT -HLX -HMC -HMN -HMY -HNGE -HNI -HOG -HOMB -HOV -HP -HPE -HPF -HPI -HPP -HPQ -HPS -HQH -HQL -HR -HRB -HRI -HRL -HRTG -HSBC -HSHP -HSY -HTB -HTD -HTFC -HTGC -HTH -HTT -HUBB -HUBS -HUM -HUN -HUYA -HVT -HWM -HXL -HY -HYB -HYBX -HYI -HYT -HYTR -HZO -IAE -IAG -IBM -IBN -IBP -IBTA -ICE -ICL -IDA -IDE -IDT -IEX -IFF -IFN -IFS -IGA -IGCB -IGD -IGI -IGR -IH -IHD -IHG -IHS -IIF -IIIN -IIM -IIPR -IMAX -INFO -INFQ -INFY -ING -INGM -INGR -INN -INR -INSP -INSW -INVH -INVX -IONQ -IOT -IP -IPB -IPI -IQI -IQV -IR -IRAB -IRM -IRS -IRT -ISD -IT -ITGR -ITT -ITUB -ITW -IVR -IVT -IVZ -IX -J -JACS -JAN -JBGS -JBI -JBK -JBL -JBND -JBS -JBTM -JCE -JCI -JEF -JELD -JENA -JFR -JGH -JHG -JHI -JHS -JHX -JILL -JKS -JLL -JLS -JMIA -JMM -JNJ -JOBY -JOE -JOF -JPC -JPM -JQC -JRI -JRS -JXN -KAI -KB -KBDC -KBH -KBR -KD -KEN -KEP -KEX -KEY -KEYS -KF -KFRC -KFY -KGC -KGS -KIM -KIO -KKR -KKRS -KKRT -KLAR -KLC -KMI -KMPB -KMPR -KMT -KMX -KN -KNF -KNOP -KNSL -KNTK -KNX -KO -KODK -KOF -KOP -KORE -KOS -KPET -KR -KRC -KREF -KRG -KRMN -KRO -KRP -KRSP -KSS -KT -KTB -KTF -KTH -KTN -KVUE -KVYO -KW -KWR -KWY -KYN -L -LAC -LAD -LADR -LANV -LAR -LAW -LAZ -LB -LBRT -LC -LCII -LCLN -LDI -LDOS -LDP -LEA -LEG -LEN -LEO -LEU -LEVI -LFT -LGI -LH -LHX -LII -LION -LITB -LLY -LMND -LMT -LNC -LND -LNG -LNN -LOAR -LOB -LOCL -LOMA -LOW -LPG -LPL -LPX -LRN -LSPD -LTC -LTH -LTM -LU -LUCK -LUMN -LUV -LUXE -LVS -LVWR -LW -LXFR -LXP -LXU -LYB -LYG -LYV -LZB -LZM -M -MA -MAA -MAC -MAGN -MAIN -MAIR -MAN -MANE -MANU -MAS -MATV -MATX -MAX -MBC -MBI -MC -MCB -MCD -MCI -MCK -MCN -MCO -MCR -MCS -MCY -MD -MDA -MDST -MDT -MDU -MDV -MEC -MED -MEGI -MEI -MET -MFA -MFAN -MFAO -MFC -MFG -MFM -MFSB -MFSG -MFSI -MFSM -MFSV -MG -MGA -MGF -MGM -MGR -MGRB -MGRD -MGRE -MGY -MH -MHD -MHF -MHK -MHLA -MHNC -MHO -MIAX -MICC -MIN -MIR -MITN -MITP -MITT -MIY -MKC -MKL -MLI -MLM -MLP -MLR -MMD -MMI -MMID -MMK -MMKT -MMM -MMS -MMT -MMU -MNR -MNSO -MNTN -MO -MOD -MOGU -MOH -MOS -MOV -MP -MPA -MPC -MPLX -MPT -MPV -MQY -MRK -MRP -MRSH -MS -MSA -MSB -MSC -MSCI -MSD -MSDL -MSGE -MSGS -MSI -MSIF -MSM -MT -MTAL -MTB -MTD -MTDR -MTG -MTH -MTN -MTR -MTRN -MTUS -MTW -MTX -MTZ -MUA -MUC -MUFG -MUI -MUJ -MUR -MUSA -MUSE -MUX -MVO -MWA -MX -MXE -MXF -MYE -MYI -MYN -MZYX -NABL -NAC -NAD -NAN -NAT -NATL -NAZ -NBB -NBHC -NBR -NBXG -NC -NCA -NCDL -NCLH -NCV -NCZ -NDMO -NE -NEA -NEE -NEM -NET -NEU -NEXA -NFG -NFJ -NGG -NGL -NGS -NGVC -NGVT -NHI -NI -NIC -NIE -NIM -NIO -NIQ -NJR -NKE -NKX -NL -NLOP -NLY -NMAI -NMAX -NMCO -NMG -NMI -NMM -NMR -NMS -NMT -NMZ -NNI -NNN -NNY -NOA -NOAH -NOC -NOG -NOK -NOMD -NOV -NOW -NP -NPB -NPCT -NPFD -NPK -NPKI -NPO -NPV -NPWR -NRDY -NREF -NRG -NRGV -NRK -NRP -NRT -NRUC -NSA -NSC -NSP -NTB -NTR -NTST -NTZ -NU -NUE -NUS -NUV -NUVB -NUW -NVG -NVGS -NVO -NVR -NVRI -NVS -NVST -NVT -NWAX -NWG -NWN -NX -NXDR -NXDT -NXE -NXG -NXP -NXRT -NYC -NYT -NZF -O -OBDC -OBK -OC -ODC -ODV -OEC -OFG -OFRM -OGC -OGE -OGN -OGS -OHI -OI -OIA -OII -OIS -OKE -OKLO -OLN -OLP -OMC -OMF -ONIT -ONL -ONON -ONT -ONTO -OOMA -OPAD -OPFI -OPLN -OPP -OPTU -OPY -OR -ORA -ORC -ORCL -ORI -ORN -OSCR -OSG -OSK -OTF -OTIS -OUT -OVV -OWL -OWLT -OXM -OXY -P -PAAS -PAC -PACK -PACS -PAG -PAGS -PAI -PAII -PAM -PAR -PARR -PATH -PAXS -PAY -PAYC -PB -PBA -PBF -PBH -PBI -PBR -PBT -PCF -PCG -PCM -PCN -PCOR -PCQ -PD -PDCC -PDI -PDM -PDO -PDPA -PDS -PDT -PDX -PEB -PEG -PEN -PEO -PERF -PEW -PFD -PFE -PFGC -PFH -PFL -PFLA -PFLT -PFN -PFO -PFS -PFSI -PG -PGP -PGR -PGZ -PH -PHG -PHI -PHIN -PHK -PHM -PHR -PII -PIM -PINE -PINS -PIPR -PJT -PK -PKE -PKG -PKX -PL -PLD -PLGO -PLNT -PLOW -PM -PML -PMM -PMMF -PMO -PMT -PMTU -PMTV -PMTW -PNC -PNFP -PNI -PNNT -PNR -PNW -POR -POST -PPG -PPL -PPLC -PPT -PR -PRA -PRCS -PRG -PRGO -PRH -PRI -PRIM -PRKS -PRLB -PRM -PRMB -PRS -PRSU -PRT -PRU -PRVS -PS -PSA -PSBD -PSF -PSFE -PSN -PSO -PSQH -PSTL -PSUS -PSX -PTA -PTY -PUK -PUMP -PVH -PVL -PWR -PXED -PYT -Q -QBTS -QGEN -QRED -QSR -QTWO -QUAD -QXO -R -RA -RAC -RACE -RAL -RAMP -RBA -RBC -RBLX -RBRK -RC -RCD -RCI -RCL -RCS -RCUS -RDDT -RDN -RDW -RDY -RELX -RERE -RES -REX -REXR -REZI -RF -RFI -RFL -RFM -RFMZ -RGA -RGR -RGT -RH -RHI -RHLD -RHP -RIG -RIO -RITM -RIV -RJF -RKT -RL -RLI -RLJ -RLTY -RLX -RM -RMAX -RMD -RMI -RMM -RMMZ -RMT -RNG -RNGR -RNP -RNR -RNST -ROG -ROK -ROL -RONB -RPC -RPM -RPT -RQI -RRC -RRX -RS -RSF -RSG -RSI -RSKD -RTO -RTX -RVI -RVLV -RVT -RVTY -RWT -RWTN -RWTO -RWTP -RWTQ -RWTS -RXO -RY -RYAM -RYAN -RYN -RYZ -RZC -S -SA -SABA -SAC -SAFE -SAGU -SAH -SAJ -SAM -SAN -SAP -SAR -SARO -SAT -SAV -SAY -SAZ -SB -SBH -SBI -SBR -SBS -SBSI -SBSW -SBXD -SBXE -SCCO -SCD -SCHW -SCI -SCL -SCM -SD -SDHC -SDHY -SDRL -SE -SEG -SEI -SEM -SES -SF -SFB -SFBS -SFL -SG -SGHC -SGI -SGOV -SGU -SHAK -SHEL -SHG -SHO -SHOC -SHV -SHW -SI -SID -SIG -SII -SILA -SITC -SITE -SJM -SJT -SKE -SKIL -SKLZ -SKM -SKT -SKY -SKYH -SLAI -SLB -SLF -SLG -SLGN -SLNZ -SLQT -SLVM -SM -SMA -SMBK -SMC -SMFG -SMG -SMHI -SMP -SMR -SMRT -SMWB -SN -SNA -SNAP -SNDA -SNDR -SNN -SNOW -SNX -SO -SOBO -SOC -SOJC -SOJD -SOJE -SOJF -SOLV -SOMN -SON -SONY -SOR -SOS -SOUL -SPB -SPCE -SPE -SPG -SPGI -SPH -SPHR -SPIR -SPMA -SPMC -SPME -SPNT -SPOT -SPRU -SPXC -SPXX -SQM -SQNS -SR -SRE -SREA -SRFM -SRG -SRI -SRJN -SRL -SRV -SSB -SSD -SSL -SSMR -SST -SSTK -ST -STAG -STC -STE -STEL -STEM -STEW -STG -STK -STLA -STM -STN -STNG -STT -STUB -STVN -STWD -STXD -STXE -STXF -STXG -STXK -STXT -STXV -STZ -SU -SUI -SUN -SUNB -SUNC -SUPV -SUZ -SVV -SW -SWK -SWX -SWZ -SXC -SXI -SXT -SYF -SYK -SYY -T -TAC -TAK -TAL -TALO -TAP -TBB -TBBB -TBI -TBLU -TBN -TCAI -TCBX -TCI -TCPA -TD -TDAY -TDC -TDF -TDG -TDOC -TDS -TDW -TDY -TE -TECK -TEI -TEL -TEN -TEO -TEVA -TEX -TFC -TFII -TFIN -TFPM -TFX -TG -TGE -TGLS -TGS -TGT -THC -THG -THIR -THLV -THMR -THO -THQ -THW -TIC -TIMB -TISI -TJX -TK -TKC -TKO -TKR -TLK -TLYS -TM -TME -TMHC -TMO -TNC -TNET -TNGY -TNK -TNL -TOL -TOST -TPB -TPC -TPL -TPR -TPTA -TPVG -TPYP -TPZ -TR -TRAD -TRAK -TRC -TREX -TRGP -TRLV -TRN -TRNO -TROX -TRP -TRTX -TRU -TRV -TS -TSI -TSLX -TSM -TSN -TSQ -TT -TTAM -TTC -TTE -TTI -TU -TUYA -TV -TVC -TVE -TWI -TWLO -TWN -TWO -TWOD -TX -TXNM -TXO -TXT -TY -TYG -TYL -U -UA -UAA -UAMY -UAN -UBER -UBS -UCB -UDR -UE -UFI -UGI -UGP -UHAL -UHS -UHT -UI -UIS -UL -ULS -UMC -UMH -UNF -UNFI -UNH -UNM -UNMA -UNP -UP -UPS -URI -USA -USAC -USB -USFD -USNA -USPH -UTF -UTI -UTL -UTZ -UVE -UVV -UWMC -UZD -UZE -UZF -V -VAC -VACI -VAL -VALE -VATE -VBF -VCV -VCX -VECA -VEEV -VEL -VET -VFC -VG -VGI -VGM -VGNT -VHI -VIA -VICI -VIK -VIPS -VIRT -VIST -VIV -VKQ -VLN -VLO -VLRS -VLT -VLTO -VMC -VMI -VMO -VNO -VNT -VOC -VOYA -VOYG -VPG -VPV -VRT -VRTS -VSH -VST -VSTS -VSXY -VTEX -VTMX -VTN -VTOL -VTR -VTS -VVR -VVV -VVX -VYX -VZ -W -WAB -WAGN -WAL -WAT -WBI -WBIY -WBS -WBX -WCC -WCN -WD -WDH -WDI -WDS -WEA -WEAV -WEC -WELL -WENC -WES -WEX -WF -WFC -WFG -WGO -WH -WHD -WHG -WHK -WHR -WIA -WINN -WIT -WIW -WK -WKC -WLK -WLKP -WLTG -WLY -WLYB -WM -WMB -WMK -WMS -WNC -WOLF -WOR -WPAC -WPC -WPM -WPP -WRB -WRBY -WS -WSM -WSO -WSR -WST -WT -WTI -WTM -WTRG -WTS -WTTR -WU -WWW -WY -XFLH -XFLT -XHR -XIFR -XOM -XPER -XPEV -XPO -XPOF -XPRO -XRN -XXI -XYF -XYL -XYZ -XZO -YALA -YCY -YELP -YETI -YEXT -YMM -YOU -YPF -YRD -YSG -YSS -YUM -YUMC -ZBH -ZEPP -ZETA -ZGN -ZH -ZIM -ZIP -ZKH -ZTO -ZTR -ZTS -ZVIA -ZWS diff --git a/print_tape.py b/print_tape.py index f4d9a61..d149029 100644 --- a/print_tape.py +++ b/print_tape.py @@ -4,9 +4,9 @@ Reads a CSV of trades (timestamp, symbol, lots, price) and generates ESC/POS commands with 90° rotated text to emulate an old stock ticker tape. -Trades are distributed across 4 parallel columns. Each column independently -prints symbol characters at the top of the tape and price/lot characters at -the bottom — just like a real multi-track ticker tape. +Each character gets its own printed row. When the receipt paper is turned +sideways, symbol characters read across the top and price characters read +across the bottom — just like a real ticker tape. """ import csv @@ -16,106 +16,35 @@ from escpos.printer import Dummy from glyphs import price_to_fraction, upload_fractions -# TM-T88V print area and font metrics -PRINT_WIDTH_DOTS = 512 # 80mm paper printable width -CHAR_WIDTH_DOTS = 24 # Font A rotated 90°: 24 dots wide -NUM_COLUMNS = 4 - -# The TM-T88V has ~4mm (~28 dot) non-printable margins on each side. -# To make columns look evenly spaced on the paper, we treat the margin -# as part of the edge gap. Setting inter-column gap = margin gives perfect -# symmetry: 5 gaps(28) + 4 cols(107) = 568 paper dots, 512 printable. -MARGIN_DOTS = 28 -PAPER_DOTS = PRINT_WIDTH_DOTS + 2 * MARGIN_DOTS -GAP_DOTS = MARGIN_DOTS -COL_SPAN_DOTS = (PAPER_DOTS - (NUM_COLUMNS + 1) * GAP_DOTS) // NUM_COLUMNS # 107 - -COL_BOTTOM = [(i + 1) * GAP_DOTS + i * COL_SPAN_DOTS - MARGIN_DOTS for i in range(NUM_COLUMNS)] -COL_TOP = [b + COL_SPAN_DOTS - CHAR_WIDTH_DOTS for b in COL_BOTTOM] +# TM-T88V with 90° rotation: Font A chars are 24 dots wide (instead of 12), +# so 512 printable dots / 24 = 21 chars fit across the 80mm paper width. +LINE_WIDTH = 21 -def format_price(lots, price): - """Format price/lots string for a trade.""" +def print_trade(p, symbol, lots, price): + """Print a single trade as ticker tape characters, one per row.""" frac = price_to_fraction(price) if lots > 1: - return f"{lots}s{frac}" - return frac + price_str = f"{lots}s{frac}" + else: + price_str = frac + # Symbol characters at the top (right-aligned) + for ch in symbol: + p.text(" " * (LINE_WIDTH - 1) + ch + "\n") -def trade_char_count(symbol, price_str): - """Total characters a trade occupies in a column (symbol + price + separator).""" - return len(symbol) + len(price_str) + 1 + # Price characters at the bottom (left-aligned) + for ch in price_str: + p.text(ch + "\n") - -def assign_to_columns(trades): - """Assign trades to columns, always picking the column with the fewest chars.""" - columns = [[] for _ in range(NUM_COLUMNS)] - lengths = [0] * NUM_COLUMNS - - for symbol, lots, price in trades: - price_str = format_price(lots, price) - count = trade_char_count(symbol, price_str) - shortest = lengths.index(min(lengths)) - columns[shortest].append((symbol, price_str)) - lengths[shortest] += count - - return columns - - -def build_column_chars(trades_in_column): - """Build the character sequence for one column. - - Each entry is ('top', ch), ('bottom', ch), or ('blank',) controlling - where the character is placed within the column width. - """ - chars = [] - for symbol, price_str in trades_in_column: - for ch in symbol: - chars.append(("top", ch)) - for ch in price_str: - chars.append(("bottom", ch)) - chars.append(("blank",)) - return chars - - -def _set_pos(p, dots): - """ESC $ nL nH: set absolute horizontal print position in dots.""" - p._raw(b"\x1b\x24" + bytes([dots % 256, dots // 256])) - - -def print_all(p, trades): - """Print all trades across multiple columns, one row at a time.""" - columns = assign_to_columns(trades) - col_chars = [build_column_chars(col) for col in columns] - max_len = max(len(cc) for cc in col_chars) - - for row_idx in range(max_len): - for col_idx in range(NUM_COLUMNS): - if row_idx < len(col_chars[col_idx]): - entry = col_chars[col_idx][row_idx] - if entry[0] == "top": - _set_pos(p, COL_TOP[col_idx]) - p._raw(entry[1].encode()) - elif entry[0] == "bottom": - _set_pos(p, COL_BOTTOM[col_idx]) - p._raw(entry[1].encode()) - p._raw(b"\n") - - return max_len + # Blank line separator between trades + p.text("\n") def main(): csv_file = sys.argv[1] if len(sys.argv) > 1 else "trades_sample_sorted.csv" output_file = sys.argv[2] if len(sys.argv) > 2 else "ticker_tape.bin" - # Read all trades - trades = [] - with open(csv_file) as f: - reader = csv.reader(f) - for row in reader: - _timestamp, symbol, lots_str, price_str = row - trades.append((symbol, int(lots_str), float(price_str))) - p = Dummy(profile="TM-T88V") p.hw("INIT") # ESC V 1: 90° clockwise character rotation (not exposed by python-escpos) @@ -126,22 +55,21 @@ def main(): # Upload custom fraction glyphs (⅛ ¼ ⅜ ½ ⅝ ¾ ⅞) upload_fractions(p) - num_rows = print_all(p, trades) + with open(csv_file) as f: + reader = csv.reader(f) + for row in reader: + _timestamp, symbol, lots_str, price_str = row + lots = int(lots_str) + price = float(price_str) + print_trade(p, symbol, lots, price) - # Feed past the cutter (~20mm above print head) - feed_rows = 16 - p.text("\n" * feed_rows) + # Feed past the cutter (~20mm above print head, ~12 lines at 12-dot spacing) + p.text("\n" * 16) p.cut() with open(output_file, "wb") as f: f.write(p.output) - - # Calculate print length: each row is 12 dots at 180 DPI - total_rows = num_rows + feed_rows - length_mm = total_rows * 12 / 180 * 25.4 - length_in = total_rows * 12 / 180 print(f"Wrote {len(p.output)} bytes to {output_file}", file=sys.stderr) - print(f"{num_rows} rows, {length_mm:.0f}mm ({length_in:.1f}in) of tape", file=sys.stderr) if __name__ == "__main__": diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 728b686..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,8 +0,0 @@ -[project] -name = "ticker-tape" -version = "0.1.0" -description = "Add your description here" -requires-python = ">=3.13" -dependencies = [ - "python-escpos>=3.1", -] diff --git a/sp100_symbols.txt b/sp100_symbols.txt deleted file mode 100644 index 97087af..0000000 --- a/sp100_symbols.txt +++ /dev/null @@ -1,100 +0,0 @@ -NVDA -GOOGL -GOOG -AAPL -MSFT -AMZN -AVGO -TSLA -META -MU -LLY -WMT -JPM -AMD -INTC -XOM -V -JNJ -ORCL -CSCO -LRCX -AMAT -COST -MA -CAT -ABBV -BAC -CVX -UNH -KO -GE -PG -NFLX -MS -HD -GS -PLTR -MRK -PM -TXN -WFC -IBM -GEV -RTX -LIN -C -QCOM -AXP -TMUS -MCD -VZ -PEP -AMGN -NEE -TMO -DIS -BA -BLK -T -UNP -SCHW -DE -GILD -ABT -PFE -ISRG -COP -UBER -HON -CRM -CVS -BKNG -DHR -LMT -LOW -MO -SBUX -BMY -COF -SO -NOW -ACN -MDT -BNY -DUK -GD -UPS -USB -CMCSA -AMT -MMM -ADBE -MDLZ -FDX -EMR -INTU -GM -CL -SPG -NKE diff --git a/sp500_symbols.txt b/sp500_symbols.txt deleted file mode 100644 index c2ed563..0000000 --- a/sp500_symbols.txt +++ /dev/null @@ -1,502 +0,0 @@ -A -AAL -AAPL -ABBV -ABNB -ABT -ACGL -ACN -ADBE -ADI -ADM -ADP -ADSK -AEE -AEP -AES -AFL -AIG -AIZ -AJG -AKAM -ALB -ALGN -ALL -ALLE -AMAT -AMCR -AMD -AME -AMGN -AMP -AMT -AMZN -ANET -AON -AOS -APA -APD -APH -APO -APP -APTV -ARE -ARES -AVGO -AVB -AVY -AWK -AXON -AXP -AZO -BA -BAC -BALL -BAX -BBY -BDX -BEN -BF.B -BG -BIIB -BKR -BLK -BLDR -BMY -BNY -BKNG -BR -BRK.B -BRO -BSX -BX -BXP -C -CAG -CAH -CARR -CASY -CAT -CB -CBOE -CBRE -CCL -CDNS -CDW -CEG -CF -CFG -CHD -CHRW -CHTR -CI -CIEN -CINF -CL -CLX -CME -CMG -CMI -CMS -CNC -CNP -COF -COHR -COIN -CL -CMCSA -COP -CPAY -CPB -CPT -COR -COST -CPRT -CRH -CRL -CRM -CRWD -CSGP -CSCO -CSX -CTAS -CTSH -CTVA -CVNA -CVS -CVX -CCI -D -DAL -DD -DDOG -DE -DECK -DELL -DG -DGX -DHI -DHR -DIS -DLTR -DLR -DOC -DOV -DOW -DPZ -DRI -DTE -DUK -DVA -DVN -DASH -DXCM -EA -EBAY -ECL -ED -EFX -EG -EIX -EL -ELV -EME -EMR -EOG -EQIX -EQR -EQT -ERIE -ES -ESS -ETN -ETR -EVRG -EW -EXC -EXE -EXPE -EXPD -EXR -XOM -F -FANG -FAST -FSLR -FBHS -FCX -FDS -FDX -FDXF -FE -FFIV -FICO -FIS -FISV -FITB -FIX -FOXA -FOX -FRT -FTNT -FTV -GD -GDDY -GE -GEHC -GEN -GEV -GILD -GIS -GL -GLW -GM -GNRC -GOOG -GOOGL -GPC -GPN -GRMN -GS -GWW -HAL -HAS -HCA -HD -HDOC -HIG -HLT -HON -HPE -HPQ -HRL -HSIC -HST -HSY -HUBB -HUM -HWM -HBAN -HII -IBM -ICE -IDXX -IEX -IFF -INCY -INTC -INTU -INVH -IP -IQV -IR -IRM -ISRG -IT -ITW -IVZ -J -JBHT -JBL -JCI -JKHY -JNJ -JPM -K -KDP -KEY -KEYS -KHC -KIM -KLAC -KMB -KMI -KKR -KO -KR -KVUE -L -LDOS -LEN -LH -LHX -LII -LIN -LITE -LLY -LMT -LOW -LRCX -LULU -LUV -LVS -LYB -LYV -MA -MAA -MAR -MAS -MCD -MCHP -MCK -MCO -MDLZ -MDT -MET -META -MGM -MKC -MLM -MMM -MNST -MO -MOS -MPC -MPWR -MRK -MRNA -MRSH -MS -MSCI -MSFT -MSI -MTB -MTD -MU -NCLH -NDAQ -NDSN -NEE -NEM -NFLX -NI -NKE -NOC -NOW -NRG -NSC -NTAP -NTRS -NUE -NVDA -NVR -NWS -NWSA -NXPI -O -ODFL -OKE -OMC -ON -ORCL -ORLY -OTIS -OXY -PCAR -PCG -PEG -PEP -PFE -PFG -PG -PGR -PH -PHM -PKG -PLD -PLTR -PM -PNC -PNR -PNW -PODD -POOL -PPG -PPL -PRU -PSA -PSKY -PSX -PTC -PWR -PYPL -Q -QCOM -RCL -REG -REGN -RF -RJF -RL -RMD -ROK -ROL -ROP -ROST -RSG -RTX -RVTY -HOOD -SBAC -SBUX -SCHW -SHW -SJM -SLB -SMCI -SNA -SNDK -SNPS -SO -SOLV -SPG -SPGI -SRE -STE -STLD -STT -STX -STZ -SW -SWK -SWKS -SYF -SYK -SYY -SATS -T -TAP -TDG -TDY -TEL -TER -TFC -TGT -TJX -TKO -TMO -TMUS -TPL -TPR -TRGP -TRMB -TROW -TRV -TSCO -TSLA -TSN -TT -TTD -TTWO -TXT -TYL -UAL -UBER -UDR -UHS -ULTA -UNH -UNP -UPS -URI -USB -V -VEEV -VFC -VICI -VLO -VLTO -VMC -VRSN -VRSK -VRT -VRTX -VST -VTR -VTRS -VZ -WAB -WAT -WBD -WDC -WEC -WELL -WFC -WM -WMB -WMT -WRB -WSM -WST -WTW -WDAY -WY -WYNN -XEL -XOM -XYL -XYZ -YUM -ZBRA -ZBH -ZTS diff --git a/ticker_tape.py b/ticker_tape.py index 96c2634..83a3e81 100644 --- a/ticker_tape.py +++ b/ticker_tape.py @@ -4,7 +4,6 @@ import argparse import os import sys -import time from datetime import datetime, timedelta import requests @@ -35,15 +34,8 @@ def fetch_trades(api_key, api_secret, symbols, start, end, limit=1000, page_toke print(f"[DEBUG] GET {BASE_URL}", file=sys.stderr) print(f"[DEBUG] params: {params}", file=sys.stderr) - time.sleep(0.3) # stay under 200 req/min resp = requests.get(BASE_URL, headers=headers, params=params) - # retry once on rate limit - if resp.status_code == 429: - print("[RATE LIMITED] sleeping 5s...", file=sys.stderr) - time.sleep(5) - resp = requests.get(BASE_URL, headers=headers, params=params) - if debug: print(f"[DEBUG] HTTP {resp.status_code}", file=sys.stderr) if not resp.ok: @@ -89,12 +81,10 @@ def main(): parser = argparse.ArgumentParser(description="NYSE ticker tape via Alpaca market data") parser.add_argument("--symbols", default=DEFAULT_SYMBOLS, help=f"Comma-separated symbols (default: {DEFAULT_SYMBOLS})") - parser.add_argument("--symbol-file", metavar="FILE", - help="Read symbols from FILE (one per line) and batch requests") parser.add_argument("--start", help="Start datetime, YYYY-MM-DD or RFC-3339 (default: previous trading day)") parser.add_argument("--end", help="End datetime (default: same day as start)") - parser.add_argument("--limit", type=int, default=10000, - help="Max trades to fetch per API call (default: 10000, max: 10000)") + parser.add_argument("--limit", type=int, default=1000, + help="Max trades to fetch per API call (default: 1000, max: 10000)") parser.add_argument("--all", action="store_true", help="Paginate through ALL trades in the range (many API calls)") parser.add_argument("--tape", default="A", @@ -131,80 +121,55 @@ def main(): tape_filter = None if args.no_filter or args.tape.lower() == "all" else args.tape.upper() - # Build symbol batches - if args.symbol_file: - with open(args.symbol_file) as f: - all_symbols = [line.strip() for line in f if line.strip()] - # Batch into groups of 500 to stay under URL length limits - batch_size = 500 - batches = [] - for i in range(0, len(all_symbols), batch_size): - batches.append(",".join(all_symbols[i:i + batch_size])) - print(f"{len(all_symbols)} symbols in {len(batches)} batches", file=sys.stderr) - # --all-nyse implies --all (paginate everything) - args.all = True - else: - batches = [args.symbols] - if args.debug: print(f"[DEBUG] start={args.start} end={args.end}", file=sys.stderr) + print(f"[DEBUG] symbols={args.symbols}", file=sys.stderr) print(f"[DEBUG] tape_filter={tape_filter} (A=NYSE-listed, B=regional, C=Nasdaq)", file=sys.stderr) + page_token = None total = 0 - api_calls = 0 exchanges_seen = {} + while True: + data = fetch_trades(api_key, api_secret, args.symbols, + args.start, args.end, args.limit, page_token, debug=args.debug) + trades = flatten_and_sort(data) - for batch_num, symbols in enumerate(batches, 1): - if len(batches) > 1: - print(f"Batch {batch_num}/{len(batches)}...", file=sys.stderr) - - page_token = None - while True: - data = fetch_trades(api_key, api_secret, symbols, - args.start, args.end, args.limit, page_token, debug=args.debug) - api_calls += 1 - trades = flatten_and_sort(data) - - if args.debug: - for trade in trades: - ex = trade.get("x", "?") - tape = trade.get("z", "?") - exchanges_seen[ex] = exchanges_seen.get(ex, 0) + 1 - exchanges_seen[f"tape:{tape}"] = exchanges_seen.get(f"tape:{tape}", 0) + 1 - + if args.debug: for trade in trades: - if tape_filter and trade.get("z") != tape_filter: - continue - if trade["s"] < 100: - continue + ex = trade.get("x", "?") + tape = trade.get("z", "?") + exchanges_seen[ex] = exchanges_seen.get(ex, 0) + 1 + exchanges_seen[f"tape:{tape}"] = exchanges_seen.get(f"tape:{tape}", 0) + 1 - lots = trade["s"] // 100 + for trade in trades: + if tape_filter and trade.get("z") != tape_filter: + continue + if trade["s"] < 100: + continue - if args.raw: - print(f"{trade['t']},{trade['sym']},{lots},{trade['p']:.2f}") - else: - ts = trade["t"][:19].replace("T", " ") - line = format_tape_line(trade["sym"], lots, trade["p"]) - print(f"{ts} {line}") - total += 1 + lots = trade["s"] // 100 - page_token = data.get("next_page_token") - if not page_token or not args.all: - break + if args.raw: + print(f"{trade['t']},{trade['sym']},{lots},{trade['p']:.2f}") + else: + ts = trade["t"][:19].replace("T", " ") + line = format_tape_line(trade["sym"], lots, trade["p"]) + print(f"{ts} {line}") + total += 1 - if api_calls % 100 == 0: - print(f" {api_calls} API calls, {total} trades so far...", file=sys.stderr) + page_token = data.get("next_page_token") + if not page_token or not args.all: + break if args.debug and exchanges_seen: print(f"[DEBUG] exchange codes seen: {exchanges_seen}", file=sys.stderr) print(f"[DEBUG] (exchanges: N=NYSE, Q=Nasdaq, P=Arca, D=FINRA, K=EDGX...)", file=sys.stderr) print(f"[DEBUG] (tapes: A=NYSE-listed, B=regional, C=Nasdaq-listed)", file=sys.stderr) - print(f"Done: {total} trades, {api_calls} API calls.", file=sys.stderr) if total == 0: print("No trades found. Try --no-filter or different --tape/symbols/dates.", file=sys.stderr) elif not args.all and data.get("next_page_token"): - print(f"More available; use --all to paginate.", file=sys.stderr) + print(f"\n--- {total} trades shown. More available; use --all to paginate. ---", file=sys.stderr) if __name__ == "__main__": diff --git a/uv.lock b/uv.lock deleted file mode 100644 index ac23894..0000000 --- a/uv.lock +++ /dev/null @@ -1,203 +0,0 @@ -version = 1 -revision = 3 -requires-python = ">=3.13" - -[[package]] -name = "appdirs" -version = "1.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470, upload-time = "2020-05-11T07:59:51.037Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566, upload-time = "2020-05-11T07:59:49.499Z" }, -] - -[[package]] -name = "argcomplete" -version = "3.6.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/38/61/0b9ae6399dd4a58d8c1b1dc5a27d6f2808023d0b5dd3104bb99f45a33ff6/argcomplete-3.6.3.tar.gz", hash = "sha256:62e8ed4fd6a45864acc8235409461b72c9a28ee785a2011cc5eb78318786c89c", size = 73754, upload-time = "2025-10-20T03:33:34.741Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl", hash = "sha256:f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce", size = 43846, upload-time = "2025-10-20T03:33:33.021Z" }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, -] - -[[package]] -name = "importlib-resources" -version = "7.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/06/b56dfa750b44e86157093bc8fca0ab81dccbf5260510de4eaf1cb69b5b99/importlib_resources-7.1.0.tar.gz", hash = "sha256:0722d4c6212489c530f2a145a34c0a7a3b4721bc96a15fada5930e2a0b760708", size = 44985, upload-time = "2026-04-12T16:36:09.232Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl", hash = "sha256:1bd7b48b4088eddb2cd16382150bb515af0bd2c70128194392725f82ad2c96a1", size = 37232, upload-time = "2026-04-12T16:36:08.219Z" }, -] - -[[package]] -name = "pillow" -version = "12.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/21/c2bcdd5906101a30244eaffc1b6e6ce71a31bd0742a01eb89e660ebfac2d/pillow-12.2.0.tar.gz", hash = "sha256:a830b1a40919539d07806aa58e1b114df53ddd43213d9c8b75847eee6c0182b5", size = 46987819, upload-time = "2026-04-01T14:46:17.687Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/01/53d10cf0dbad820a8db274d259a37ba50b88b24768ddccec07355382d5ad/pillow-12.2.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:8297651f5b5679c19968abefd6bb84d95fe30ef712eb1b2d9b2d31ca61267f4c", size = 4100837, upload-time = "2026-04-01T14:43:41.506Z" }, - { url = "https://files.pythonhosted.org/packages/0f/98/f3a6657ecb698c937f6c76ee564882945f29b79bad496abcba0e84659ec5/pillow-12.2.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:50d8520da2a6ce0af445fa6d648c4273c3eeefbc32d7ce049f22e8b5c3daecc2", size = 4176528, upload-time = "2026-04-01T14:43:43.773Z" }, - { url = "https://files.pythonhosted.org/packages/69/bc/8986948f05e3ea490b8442ea1c1d4d990b24a7e43d8a51b2c7d8b1dced36/pillow-12.2.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:766cef22385fa1091258ad7e6216792b156dc16d8d3fa607e7545b2b72061f1c", size = 3640401, upload-time = "2026-04-01T14:43:45.87Z" }, - { url = "https://files.pythonhosted.org/packages/34/46/6c717baadcd62bc8ed51d238d521ab651eaa74838291bda1f86fe1f864c9/pillow-12.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5d2fd0fa6b5d9d1de415060363433f28da8b1526c1c129020435e186794b3795", size = 5308094, upload-time = "2026-04-01T14:43:48.438Z" }, - { url = "https://files.pythonhosted.org/packages/71/43/905a14a8b17fdb1ccb58d282454490662d2cb89a6bfec26af6d3520da5ec/pillow-12.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56b25336f502b6ed02e889f4ece894a72612fe885889a6e8c4c80239ff6e5f5f", size = 4695402, upload-time = "2026-04-01T14:43:51.292Z" }, - { url = "https://files.pythonhosted.org/packages/73/dd/42107efcb777b16fa0393317eac58f5b5cf30e8392e266e76e51cff28c3d/pillow-12.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f1c943e96e85df3d3478f7b691f229887e143f81fedab9b20205349ab04d73ed", size = 6280005, upload-time = "2026-04-01T14:43:54.242Z" }, - { url = "https://files.pythonhosted.org/packages/a8/68/b93e09e5e8549019e61acf49f65b1a8530765a7f812c77a7461bca7e4494/pillow-12.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03f6fab9219220f041c74aeaa2939ff0062bd5c364ba9ce037197f4c6d498cd9", size = 8090669, upload-time = "2026-04-01T14:43:57.335Z" }, - { url = "https://files.pythonhosted.org/packages/4b/6e/3ccb54ce8ec4ddd1accd2d89004308b7b0b21c4ac3d20fa70af4760a4330/pillow-12.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdfebd752ec52bf5bb4e35d9c64b40826bc5b40a13df7c3cda20a2c03a0f5ed", size = 6395194, upload-time = "2026-04-01T14:43:59.864Z" }, - { url = "https://files.pythonhosted.org/packages/67/ee/21d4e8536afd1a328f01b359b4d3997b291ffd35a237c877b331c1c3b71c/pillow-12.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eedf4b74eda2b5a4b2b2fb4c006d6295df3bf29e459e198c90ea48e130dc75c3", size = 7082423, upload-time = "2026-04-01T14:44:02.74Z" }, - { url = "https://files.pythonhosted.org/packages/78/5f/e9f86ab0146464e8c133fe85df987ed9e77e08b29d8d35f9f9f4d6f917ba/pillow-12.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:00a2865911330191c0b818c59103b58a5e697cae67042366970a6b6f1b20b7f9", size = 6505667, upload-time = "2026-04-01T14:44:05.381Z" }, - { url = "https://files.pythonhosted.org/packages/ed/1e/409007f56a2fdce61584fd3acbc2bbc259857d555196cedcadc68c015c82/pillow-12.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1e1757442ed87f4912397c6d35a0db6a7b52592156014706f17658ff58bbf795", size = 7208580, upload-time = "2026-04-01T14:44:08.39Z" }, - { url = "https://files.pythonhosted.org/packages/23/c4/7349421080b12fb35414607b8871e9534546c128a11965fd4a7002ccfbee/pillow-12.2.0-cp313-cp313-win32.whl", hash = "sha256:144748b3af2d1b358d41286056d0003f47cb339b8c43a9ea42f5fea4d8c66b6e", size = 6375896, upload-time = "2026-04-01T14:44:11.197Z" }, - { url = "https://files.pythonhosted.org/packages/3f/82/8a3739a5e470b3c6cbb1d21d315800d8e16bff503d1f16b03a4ec3212786/pillow-12.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:390ede346628ccc626e5730107cde16c42d3836b89662a115a921f28440e6a3b", size = 7081266, upload-time = "2026-04-01T14:44:13.947Z" }, - { url = "https://files.pythonhosted.org/packages/c3/25/f968f618a062574294592f668218f8af564830ccebdd1fa6200f598e65c5/pillow-12.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:8023abc91fba39036dbce14a7d6535632f99c0b857807cbbbf21ecc9f4717f06", size = 2463508, upload-time = "2026-04-01T14:44:16.312Z" }, - { url = "https://files.pythonhosted.org/packages/4d/a4/b342930964e3cb4dce5038ae34b0eab4653334995336cd486c5a8c25a00c/pillow-12.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:042db20a421b9bafecc4b84a8b6e444686bd9d836c7fd24542db3e7df7baad9b", size = 5309927, upload-time = "2026-04-01T14:44:18.89Z" }, - { url = "https://files.pythonhosted.org/packages/9f/de/23198e0a65a9cf06123f5435a5d95cea62a635697f8f03d134d3f3a96151/pillow-12.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd025009355c926a84a612fecf58bb315a3f6814b17ead51a8e48d3823d9087f", size = 4698624, upload-time = "2026-04-01T14:44:21.115Z" }, - { url = "https://files.pythonhosted.org/packages/01/a6/1265e977f17d93ea37aa28aa81bad4fa597933879fac2520d24e021c8da3/pillow-12.2.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88ddbc66737e277852913bd1e07c150cc7bb124539f94c4e2df5344494e0a612", size = 6321252, upload-time = "2026-04-01T14:44:23.663Z" }, - { url = "https://files.pythonhosted.org/packages/3c/83/5982eb4a285967baa70340320be9f88e57665a387e3a53a7f0db8231a0cd/pillow-12.2.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d362d1878f00c142b7e1a16e6e5e780f02be8195123f164edf7eddd911eefe7c", size = 8126550, upload-time = "2026-04-01T14:44:26.772Z" }, - { url = "https://files.pythonhosted.org/packages/4e/48/6ffc514adce69f6050d0753b1a18fd920fce8cac87620d5a31231b04bfc5/pillow-12.2.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c727a6d53cb0018aadd8018c2b938376af27914a68a492f59dfcaca650d5eea", size = 6433114, upload-time = "2026-04-01T14:44:29.615Z" }, - { url = "https://files.pythonhosted.org/packages/36/a3/f9a77144231fb8d40ee27107b4463e205fa4677e2ca2548e14da5cf18dce/pillow-12.2.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efd8c21c98c5cc60653bcb311bef2ce0401642b7ce9d09e03a7da87c878289d4", size = 7115667, upload-time = "2026-04-01T14:44:32.773Z" }, - { url = "https://files.pythonhosted.org/packages/c1/fc/ac4ee3041e7d5a565e1c4fd72a113f03b6394cc72ab7089d27608f8aaccb/pillow-12.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f08483a632889536b8139663db60f6724bfcb443c96f1b18855860d7d5c0fd4", size = 6538966, upload-time = "2026-04-01T14:44:35.252Z" }, - { url = "https://files.pythonhosted.org/packages/c0/a8/27fb307055087f3668f6d0a8ccb636e7431d56ed0750e07a60547b1e083e/pillow-12.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dac8d77255a37e81a2efcbd1fc05f1c15ee82200e6c240d7e127e25e365c39ea", size = 7238241, upload-time = "2026-04-01T14:44:37.875Z" }, - { url = "https://files.pythonhosted.org/packages/ad/4b/926ab182c07fccae9fcb120043464e1ff1564775ec8864f21a0ebce6ac25/pillow-12.2.0-cp313-cp313t-win32.whl", hash = "sha256:ee3120ae9dff32f121610bb08e4313be87e03efeadfc6c0d18f89127e24d0c24", size = 6379592, upload-time = "2026-04-01T14:44:40.336Z" }, - { url = "https://files.pythonhosted.org/packages/c2/c4/f9e476451a098181b30050cc4c9a3556b64c02cf6497ea421ac047e89e4b/pillow-12.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:325ca0528c6788d2a6c3d40e3568639398137346c3d6e66bb61db96b96511c98", size = 7085542, upload-time = "2026-04-01T14:44:43.251Z" }, - { url = "https://files.pythonhosted.org/packages/00/a4/285f12aeacbe2d6dc36c407dfbbe9e96d4a80b0fb710a337f6d2ad978c75/pillow-12.2.0-cp313-cp313t-win_arm64.whl", hash = "sha256:2e5a76d03a6c6dcef67edabda7a52494afa4035021a79c8558e14af25313d453", size = 2465765, upload-time = "2026-04-01T14:44:45.996Z" }, - { url = "https://files.pythonhosted.org/packages/bf/98/4595daa2365416a86cb0d495248a393dfc84e96d62ad080c8546256cb9c0/pillow-12.2.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:3adc9215e8be0448ed6e814966ecf3d9952f0ea40eb14e89a102b87f450660d8", size = 4100848, upload-time = "2026-04-01T14:44:48.48Z" }, - { url = "https://files.pythonhosted.org/packages/0b/79/40184d464cf89f6663e18dfcf7ca21aae2491fff1a16127681bf1fa9b8cf/pillow-12.2.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:6a9adfc6d24b10f89588096364cc726174118c62130c817c2837c60cf08a392b", size = 4176515, upload-time = "2026-04-01T14:44:51.353Z" }, - { url = "https://files.pythonhosted.org/packages/b0/63/703f86fd4c422a9cf722833670f4f71418fb116b2853ff7da722ea43f184/pillow-12.2.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:6a6e67ea2e6feda684ed370f9a1c52e7a243631c025ba42149a2cc5934dec295", size = 3640159, upload-time = "2026-04-01T14:44:53.588Z" }, - { url = "https://files.pythonhosted.org/packages/71/e0/fb22f797187d0be2270f83500aab851536101b254bfa1eae10795709d283/pillow-12.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2bb4a8d594eacdfc59d9e5ad972aa8afdd48d584ffd5f13a937a664c3e7db0ed", size = 5312185, upload-time = "2026-04-01T14:44:56.039Z" }, - { url = "https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:80b2da48193b2f33ed0c32c38140f9d3186583ce7d516526d462645fd98660ae", size = 4695386, upload-time = "2026-04-01T14:44:58.663Z" }, - { url = "https://files.pythonhosted.org/packages/70/62/98f6b7f0c88b9addd0e87c217ded307b36be024d4ff8869a812b241d1345/pillow-12.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22db17c68434de69d8ecfc2fe821569195c0c373b25cccb9cbdacf2c6e53c601", size = 6280384, upload-time = "2026-04-01T14:45:01.5Z" }, - { url = "https://files.pythonhosted.org/packages/5e/03/688747d2e91cfbe0e64f316cd2e8005698f76ada3130d0194664174fa5de/pillow-12.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7b14cc0106cd9aecda615dd6903840a058b4700fcb817687d0ee4fc8b6e389be", size = 8091599, upload-time = "2026-04-01T14:45:04.5Z" }, - { url = "https://files.pythonhosted.org/packages/f6/35/577e22b936fcdd66537329b33af0b4ccfefaeabd8aec04b266528cddb33c/pillow-12.2.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cbeb542b2ebc6fcdacabf8aca8c1a97c9b3ad3927d46b8723f9d4f033288a0f", size = 6396021, upload-time = "2026-04-01T14:45:07.117Z" }, - { url = "https://files.pythonhosted.org/packages/11/8d/d2532ad2a603ca2b93ad9f5135732124e57811d0168155852f37fbce2458/pillow-12.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4bfd07bc812fbd20395212969e41931001fd59eb55a60658b0e5710872e95286", size = 7083360, upload-time = "2026-04-01T14:45:09.763Z" }, - { url = "https://files.pythonhosted.org/packages/5e/26/d325f9f56c7e039034897e7380e9cc202b1e368bfd04d4cbe6a441f02885/pillow-12.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9aba9a17b623ef750a4d11b742cbafffeb48a869821252b30ee21b5e91392c50", size = 6507628, upload-time = "2026-04-01T14:45:12.378Z" }, - { url = "https://files.pythonhosted.org/packages/5f/f7/769d5632ffb0988f1c5e7660b3e731e30f7f8ec4318e94d0a5d674eb65a4/pillow-12.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:deede7c263feb25dba4e82ea23058a235dcc2fe1f6021025dc71f2b618e26104", size = 7209321, upload-time = "2026-04-01T14:45:15.122Z" }, - { url = "https://files.pythonhosted.org/packages/6a/7a/c253e3c645cd47f1aceea6a8bacdba9991bf45bb7dfe927f7c893e89c93c/pillow-12.2.0-cp314-cp314-win32.whl", hash = "sha256:632ff19b2778e43162304d50da0181ce24ac5bb8180122cbe1bf4673428328c7", size = 6479723, upload-time = "2026-04-01T14:45:17.797Z" }, - { url = "https://files.pythonhosted.org/packages/cd/8b/601e6566b957ca50e28725cb6c355c59c2c8609751efbecd980db44e0349/pillow-12.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:4e6c62e9d237e9b65fac06857d511e90d8461a32adcc1b9065ea0c0fa3a28150", size = 7217400, upload-time = "2026-04-01T14:45:20.529Z" }, - { url = "https://files.pythonhosted.org/packages/d6/94/220e46c73065c3e2951bb91c11a1fb636c8c9ad427ac3ce7d7f3359b9b2f/pillow-12.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:b1c1fbd8a5a1af3412a0810d060a78b5136ec0836c8a4ef9aa11807f2a22f4e1", size = 2554835, upload-time = "2026-04-01T14:45:23.162Z" }, - { url = "https://files.pythonhosted.org/packages/b6/ab/1b426a3974cb0e7da5c29ccff4807871d48110933a57207b5a676cccc155/pillow-12.2.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:57850958fe9c751670e49b2cecf6294acc99e562531f4bd317fa5ddee2068463", size = 5314225, upload-time = "2026-04-01T14:45:25.637Z" }, - { url = "https://files.pythonhosted.org/packages/19/1e/dce46f371be2438eecfee2a1960ee2a243bbe5e961890146d2dee1ff0f12/pillow-12.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d5d38f1411c0ed9f97bcb49b7bd59b6b7c314e0e27420e34d99d844b9ce3b6f3", size = 4698541, upload-time = "2026-04-01T14:45:28.355Z" }, - { url = "https://files.pythonhosted.org/packages/55/c3/7fbecf70adb3a0c33b77a300dc52e424dc22ad8cdc06557a2e49523b703d/pillow-12.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c0a9f29ca8e79f09de89293f82fc9b0270bb4af1d58bc98f540cc4aedf03166", size = 6322251, upload-time = "2026-04-01T14:45:30.924Z" }, - { url = "https://files.pythonhosted.org/packages/1c/3c/7fbc17cfb7e4fe0ef1642e0abc17fc6c94c9f7a16be41498e12e2ba60408/pillow-12.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1610dd6c61621ae1cf811bef44d77e149ce3f7b95afe66a4512f8c59f25d9ebe", size = 8127807, upload-time = "2026-04-01T14:45:33.908Z" }, - { url = "https://files.pythonhosted.org/packages/ff/c3/a8ae14d6defd2e448493ff512fae903b1e9bd40b72efb6ec55ce0048c8ce/pillow-12.2.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a34329707af4f73cf1782a36cd2289c0368880654a2c11f027bcee9052d35dd", size = 6433935, upload-time = "2026-04-01T14:45:36.623Z" }, - { url = "https://files.pythonhosted.org/packages/6e/32/2880fb3a074847ac159d8f902cb43278a61e85f681661e7419e6596803ed/pillow-12.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e9c4f5b3c546fa3458a29ab22646c1c6c787ea8f5ef51300e5a60300736905e", size = 7116720, upload-time = "2026-04-01T14:45:39.258Z" }, - { url = "https://files.pythonhosted.org/packages/46/87/495cc9c30e0129501643f24d320076f4cc54f718341df18cc70ec94c44e1/pillow-12.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fb043ee2f06b41473269765c2feae53fc2e2fbf96e5e22ca94fb5ad677856f06", size = 6540498, upload-time = "2026-04-01T14:45:41.879Z" }, - { url = "https://files.pythonhosted.org/packages/18/53/773f5edca692009d883a72211b60fdaf8871cbef075eaa9d577f0a2f989e/pillow-12.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f278f034eb75b4e8a13a54a876cc4a5ab39173d2cdd93a638e1b467fc545ac43", size = 7239413, upload-time = "2026-04-01T14:45:44.705Z" }, - { url = "https://files.pythonhosted.org/packages/c9/e4/4b64a97d71b2a83158134abbb2f5bd3f8a2ea691361282f010998f339ec7/pillow-12.2.0-cp314-cp314t-win32.whl", hash = "sha256:6bb77b2dcb06b20f9f4b4a8454caa581cd4dd0643a08bacf821216a16d9c8354", size = 6482084, upload-time = "2026-04-01T14:45:47.568Z" }, - { url = "https://files.pythonhosted.org/packages/ba/13/306d275efd3a3453f72114b7431c877d10b1154014c1ebbedd067770d629/pillow-12.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6562ace0d3fb5f20ed7290f1f929cae41b25ae29528f2af1722966a0a02e2aa1", size = 7225152, upload-time = "2026-04-01T14:45:50.032Z" }, - { url = "https://files.pythonhosted.org/packages/ff/6e/cf826fae916b8658848d7b9f38d88da6396895c676e8086fc0988073aaf8/pillow-12.2.0-cp314-cp314t-win_arm64.whl", hash = "sha256:aa88ccfe4e32d362816319ed727a004423aab09c5cea43c01a4b435643fa34eb", size = 2556579, upload-time = "2026-04-01T14:45:52.529Z" }, -] - -[[package]] -name = "python-barcode" -version = "0.16.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0e/f2/4c0b07f100e1e184ba682021322c336bbba6aa7adfabd2616f70eff917d9/python_barcode-0.16.1.tar.gz", hash = "sha256:665ed09516b0088b5593061c5ac8662caa0b08d56bdad328388b1cab39939ac5", size = 233777, upload-time = "2025-08-27T11:05:45.614Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/34/810885dca784b02e5ad0f71ced9c06ba5e9d33a6493bc886f7470ce82a39/python_barcode-0.16.1-py3-none-any.whl", hash = "sha256:5776567478c9a0dae473374bb86631ba0b5ea99aaf302763b364e367ac51f367", size = 228046, upload-time = "2025-08-27T11:05:42.776Z" }, -] - -[[package]] -name = "python-escpos" -version = "3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "appdirs" }, - { name = "argcomplete" }, - { name = "importlib-resources" }, - { name = "pillow" }, - { name = "python-barcode" }, - { name = "pyyaml" }, - { name = "qrcode" }, - { name = "setuptools" }, - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b5/e8/dbcaca6c9db8d133e3a2fc36982f20bb0bdc9bdc9e04a540b231dd75b2d1/python-escpos-3.1.tar.gz", hash = "sha256:31240cdd43a6d3371c2c536f8dec02f31bf68ee967cd2edb255a94cf67295ac0", size = 199540, upload-time = "2023-12-17T22:06:03.643Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5e/def5f834b900d98c4c6477469b4e0cd1147d7158ddffcddac6904ec53f6e/python_escpos-3.1-py3-none-any.whl", hash = "sha256:d9aec8c50b106ca83aaf0781e2bd38a02c82ab206cb6d673241db5252438c73e", size = 69350, upload-time = "2023-12-17T22:06:01.048Z" }, -] - -[[package]] -name = "pyyaml" -version = "6.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, - { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, - { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, - { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, - { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, - { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, - { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, - { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, - { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, - { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, - { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, - { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, - { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, - { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, - { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, - { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, - { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, - { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, - { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, - { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, - { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, - { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, - { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, - { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, -] - -[[package]] -name = "qrcode" -version = "8.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8f/b2/7fc2931bfae0af02d5f53b174e9cf701adbb35f39d69c2af63d4a39f81a9/qrcode-8.2.tar.gz", hash = "sha256:35c3f2a4172b33136ab9f6b3ef1c00260dd2f66f858f24d88418a015f446506c", size = 43317, upload-time = "2025-05-01T15:44:24.726Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/b8/d2d6d731733f51684bbf76bf34dab3b70a9148e8f2cef2bb544fccec681a/qrcode-8.2-py3-none-any.whl", hash = "sha256:16e64e0716c14960108e85d853062c9e8bba5ca8252c0b4d0231b9df4060ff4f", size = 45986, upload-time = "2025-05-01T15:44:22.781Z" }, -] - -[[package]] -name = "setuptools" -version = "82.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4f/db/cfac1baf10650ab4d1c111714410d2fbb77ac5a616db26775db562c8fab2/setuptools-82.0.1.tar.gz", hash = "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", size = 1152316, upload-time = "2026-03-09T12:47:17.221Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl", hash = "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb", size = 1006223, upload-time = "2026-03-09T12:47:15.026Z" }, -] - -[[package]] -name = "six" -version = "1.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, -] - -[[package]] -name = "ticker-tape" -version = "0.1.0" -source = { virtual = "." } -dependencies = [ - { name = "python-escpos" }, -] - -[package.metadata] -requires-dist = [{ name = "python-escpos", specifier = ">=3.1" }]