D: [iurt_root_command] chroot warning: extra tokens at the end of %endif directive in line 19: %endif # if with_python3 warning: extra tokens at the end of %endif directive in line 30: %endif # with_python3 warning: extra tokens at the end of %endif directive in line 45: %endif # with_python3 warning: extra tokens at the end of %endif directive in line 51: %endif # with_python3 warning: extra tokens at the end of %endif directive in line 58: %endif # with_python3 warning: extra tokens at the end of %endif directive in line 66: %endif # with_python3 Installing /home/iurt/rpmbuild/SRPMS/python-qstk-0.2.8-11.mga8.src.rpm Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /home/iurt/rpmbuild/tmp/rpm-tmp.xmuHlQ + umask 022 + cd /home/iurt/rpmbuild/BUILD + '[' 1 -eq 1 ']' + '[' 1 -eq 1 ']' + '[' 1 -eq 1 ']' + cd /home/iurt/rpmbuild/BUILD + rm -rf QSTK-0.2.8 + /usr/bin/gzip -dc /home/iurt/rpmbuild/SOURCES/QSTK-0.2.8.tar.gz + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd QSTK-0.2.8 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + rm -rf QSTK.egg-info + sed -i -e 's!python-dateutil == 1.5!python-dateutil >= 1.5!' setup.py + rm -rf 'QSTK/QSData/Yahoo/$DJI.csv' 'QSTK/QSData/Yahoo/$SPX.csv' 'QSTK/QSData/Yahoo/$VIX.csv' QSTK/QSData/Yahoo/A.csv QSTK/QSData/Yahoo/AA.csv QSTK/QSData/Yahoo/AAPL.csv QSTK/QSData/Yahoo/ABC.csv QSTK/QSData/Yahoo/ABI.csv QSTK/QSData/Yahoo/ABKFQ.csv QSTK/QSData/Yahoo/ABT.csv QSTK/QSData/Yahoo/ACAS.csv QSTK/QSData/Yahoo/ACE.csv QSTK/QSData/Yahoo/ACN.csv QSTK/QSData/Yahoo/ACS.csv QSTK/QSData/Yahoo/ADBE.csv QSTK/QSData/Yahoo/ADI.csv QSTK/QSData/Yahoo/ADM.csv QSTK/QSData/Yahoo/ADP.csv QSTK/QSData/Yahoo/ADSK.csv QSTK/QSData/Yahoo/AEE.csv QSTK/QSData/Yahoo/AEP.csv QSTK/QSData/Yahoo/AES.csv QSTK/QSData/Yahoo/AET.csv QSTK/QSData/Yahoo/AFL.csv QSTK/QSData/Yahoo/AGN.csv QSTK/QSData/Yahoo/AIG.csv QSTK/QSData/Yahoo/AIV.csv QSTK/QSData/Yahoo/AIZ.csv QSTK/QSData/Yahoo/AKAM.csv QSTK/QSData/Yahoo/ALL.csv QSTK/QSData/Yahoo/ALTR.csv QSTK/QSData/Yahoo/ALXN.csv QSTK/QSData/Yahoo/AMAT.csv QSTK/QSData/Yahoo/AMD.csv QSTK/QSData/Yahoo/AMGN.csv QSTK/QSData/Yahoo/AMP.csv QSTK/QSData/Yahoo/AMT.csv QSTK/QSData/Yahoo/AMZN.csv QSTK/QSData/Yahoo/AN.csv QSTK/QSData/Yahoo/ANF.csv QSTK/QSData/Yahoo/ANR.csv QSTK/QSData/Yahoo/AON.csv QSTK/QSData/Yahoo/APA.csv QSTK/QSData/Yahoo/APC.csv QSTK/QSData/Yahoo/APD.csv QSTK/QSData/Yahoo/APH.csv QSTK/QSData/Yahoo/APOL.csv QSTK/QSData/Yahoo/ARG.csv QSTK/QSData/Yahoo/ASH.csv QSTK/QSData/Yahoo/ATI.csv QSTK/QSData/Yahoo/AVB.csv QSTK/QSData/Yahoo/AVP.csv QSTK/QSData/Yahoo/AVY.csv QSTK/QSData/Yahoo/AXP.csv QSTK/QSData/Yahoo/AYE.csv QSTK/QSData/Yahoo/AZO.csv QSTK/QSData/Yahoo/BA.csv QSTK/QSData/Yahoo/BAC.csv QSTK/QSData/Yahoo/BAX.csv QSTK/QSData/Yahoo/BBBY.csv QSTK/QSData/Yahoo/BBT.csv QSTK/QSData/Yahoo/BBY.csv QSTK/QSData/Yahoo/BC.csv QSTK/QSData/Yahoo/BCR.csv QSTK/QSData/Yahoo/BDK.csv QSTK/QSData/Yahoo/BDX.csv QSTK/QSData/Yahoo/BEAM.csv QSTK/QSData/Yahoo/BEN.csv QSTK/QSData/Yahoo/BF.B.csv QSTK/QSData/Yahoo/BHI.csv QSTK/QSData/Yahoo/BIG.csv QSTK/QSData/Yahoo/BIIB.csv QSTK/QSData/Yahoo/BJS.csv QSTK/QSData/Yahoo/BK.csv QSTK/QSData/Yahoo/BLK.csv QSTK/QSData/Yahoo/BLL.csv QSTK/QSData/Yahoo/BMC.csv QSTK/QSData/Yahoo/BMS.csv QSTK/QSData/Yahoo/BMY.csv QSTK/QSData/Yahoo/BRCM.csv QSTK/QSData/Yahoo/BRK.B.csv QSTK/QSData/Yahoo/BRLI.csv QSTK/QSData/Yahoo/BSC.csv QSTK/QSData/Yahoo/BSX.csv QSTK/QSData/Yahoo/BTU.csv QSTK/QSData/Yahoo/BUD.csv QSTK/QSData/Yahoo/BWA.csv QSTK/QSData/Yahoo/BXP.csv QSTK/QSData/Yahoo/C.csv QSTK/QSData/Yahoo/CA.csv QSTK/QSData/Yahoo/CAG.csv QSTK/QSData/Yahoo/CAH.csv QSTK/QSData/Yahoo/CAM.csv QSTK/QSData/Yahoo/CAT.csv QSTK/QSData/Yahoo/CB.csv QSTK/QSData/Yahoo/CBE.csv QSTK/QSData/Yahoo/CBG.csv QSTK/QSData/Yahoo/CBS.csv QSTK/QSData/Yahoo/CBSH.csv QSTK/QSData/Yahoo/CCE.csv QSTK/QSData/Yahoo/CCI.csv QSTK/QSData/Yahoo/CCL.csv QSTK/QSData/Yahoo/CCMO.csv QSTK/QSData/Yahoo/CCT.csv QSTK/QSData/Yahoo/CEG.csv QSTK/QSData/Yahoo/CELG.csv QSTK/QSData/Yahoo/CERN.csv QSTK/QSData/Yahoo/CF.csv QSTK/QSData/Yahoo/CFC+A.csv QSTK/QSData/Yahoo/CFN.csv QSTK/QSData/Yahoo/CHK.csv QSTK/QSData/Yahoo/CHRW.csv QSTK/QSData/Yahoo/CI.csv QSTK/QSData/Yahoo/CIEN.csv QSTK/QSData/Yahoo/CINF.csv QSTK/QSData/Yahoo/CIT.csv QSTK/QSData/Yahoo/CL.csv QSTK/QSData/Yahoo/CLF.csv QSTK/QSData/Yahoo/CLX.csv QSTK/QSData/Yahoo/CMA.csv QSTK/QSData/Yahoo/CMCSA.csv QSTK/QSData/Yahoo/CME.csv QSTK/QSData/Yahoo/CMG.csv QSTK/QSData/Yahoo/CMI.csv QSTK/QSData/Yahoo/CMS.csv QSTK/QSData/Yahoo/CNP.csv QSTK/QSData/Yahoo/CNX.csv QSTK/QSData/Yahoo/COF.csv QSTK/QSData/Yahoo/COG.csv QSTK/QSData/Yahoo/COH.csv QSTK/QSData/Yahoo/COL.csv QSTK/QSData/Yahoo/COP.csv QSTK/QSData/Yahoo/COST.csv QSTK/QSData/Yahoo/COV.csv QSTK/QSData/Yahoo/CPB.csv QSTK/QSData/Yahoo/CPWR.csv QSTK/QSData/Yahoo/CRM.csv QSTK/QSData/Yahoo/CSC.csv QSTK/QSData/Yahoo/CSCO.csv QSTK/QSData/Yahoo/CSX.csv QSTK/QSData/Yahoo/CTAS.csv QSTK/QSData/Yahoo/CTL.csv QSTK/QSData/Yahoo/CTSH.csv QSTK/QSData/Yahoo/CTX.csv QSTK/QSData/Yahoo/CTXS.csv QSTK/QSData/Yahoo/CVC.csv QSTK/QSData/Yahoo/CVG.csv QSTK/QSData/Yahoo/CVH.csv QSTK/QSData/Yahoo/CVS.csv QSTK/QSData/Yahoo/CVX.csv QSTK/QSData/Yahoo/D.csv QSTK/QSData/Yahoo/DD.csv QSTK/QSData/Yahoo/DDR.csv QSTK/QSData/Yahoo/DDS.csv QSTK/QSData/Yahoo/DE.csv QSTK/QSData/Yahoo/DELL.csv QSTK/QSData/Yahoo/DF.csv QSTK/QSData/Yahoo/DFS.csv QSTK/QSData/Yahoo/DGX.csv QSTK/QSData/Yahoo/DHI.csv QSTK/QSData/Yahoo/DHR.csv QSTK/QSData/Yahoo/DIS.csv QSTK/QSData/Yahoo/DISCA.csv QSTK/QSData/Yahoo/DLTR.csv QSTK/QSData/Yahoo/DNB.csv QSTK/QSData/Yahoo/DNR.csv QSTK/QSData/Yahoo/DO.csv QSTK/QSData/Yahoo/DOV.csv QSTK/QSData/Yahoo/DOW.csv QSTK/QSData/Yahoo/DPS.csv QSTK/QSData/Yahoo/DRI.csv QSTK/QSData/Yahoo/DTE.csv QSTK/QSData/Yahoo/DTV.csv QSTK/QSData/Yahoo/DUK.csv QSTK/QSData/Yahoo/DV.csv QSTK/QSData/Yahoo/DVA.csv QSTK/QSData/Yahoo/DVN.csv QSTK/QSData/Yahoo/DYN.csv QSTK/QSData/Yahoo/EA.csv QSTK/QSData/Yahoo/EBAY.csv QSTK/QSData/Yahoo/ECL.csv QSTK/QSData/Yahoo/ED.csv QSTK/QSData/Yahoo/EDS.csv QSTK/QSData/Yahoo/EFX.csv QSTK/QSData/Yahoo/EIX.csv QSTK/QSData/Yahoo/EK.csv QSTK/QSData/Yahoo/EL.csv QSTK/QSData/Yahoo/EMC.csv QSTK/QSData/Yahoo/EMN.csv QSTK/QSData/Yahoo/EMR.csv QSTK/QSData/Yahoo/EOG.csv QSTK/QSData/Yahoo/EP.csv QSTK/QSData/Yahoo/EQ.csv QSTK/QSData/Yahoo/EQR.csv QSTK/QSData/Yahoo/EQT.csv QSTK/QSData/Yahoo/ERTS.csv QSTK/QSData/Yahoo/ESRX.csv QSTK/QSData/Yahoo/ESV.csv QSTK/QSData/Yahoo/ETFC.csv QSTK/QSData/Yahoo/ETN.csv QSTK/QSData/Yahoo/ETR.csv QSTK/QSData/Yahoo/EW.csv QSTK/QSData/Yahoo/EXC.csv QSTK/QSData/Yahoo/EXPD.csv QSTK/QSData/Yahoo/EXPE.csv QSTK/QSData/Yahoo/F.csv QSTK/QSData/Yahoo/FAST.csv QSTK/QSData/Yahoo/FCX.csv QSTK/QSData/Yahoo/FDO.csv QSTK/QSData/Yahoo/FDX.csv QSTK/QSData/Yahoo/FE.csv QSTK/QSData/Yahoo/FFIV.csv QSTK/QSData/Yahoo/FHN.csv QSTK/QSData/Yahoo/FII.csv QSTK/QSData/Yahoo/FIS.csv QSTK/QSData/Yahoo/FISV.csv QSTK/QSData/Yahoo/FITB.csv QSTK/QSData/Yahoo/FLIR.csv QSTK/QSData/Yahoo/FLR.csv QSTK/QSData/Yahoo/FLS.csv QSTK/QSData/Yahoo/FMC.csv QSTK/QSData/Yahoo/FMCC.csv QSTK/QSData/Yahoo/FNMA.csv QSTK/QSData/Yahoo/FOSL.csv QSTK/QSData/Yahoo/FRX.csv QSTK/QSData/Yahoo/FSLR.csv QSTK/QSData/Yahoo/FTI.csv QSTK/QSData/Yahoo/FTR.csv QSTK/QSData/Yahoo/GAS.csv QSTK/QSData/Yahoo/GCI.csv QSTK/QSData/Yahoo/GD.csv QSTK/QSData/Yahoo/GE.csv QSTK/QSData/Yahoo/GENZ.csv QSTK/QSData/Yahoo/GGP.csv QSTK/QSData/Yahoo/GILD.csv QSTK/QSData/Yahoo/GIS.csv QSTK/QSData/Yahoo/GLD.csv QSTK/QSData/Yahoo/GLW.csv QSTK/QSData/Yahoo/GM.csv QSTK/QSData/Yahoo/GME.csv QSTK/QSData/Yahoo/GNW.csv QSTK/QSData/Yahoo/GOOG.csv QSTK/QSData/Yahoo/GPC.csv QSTK/QSData/Yahoo/GPS.csv QSTK/QSData/Yahoo/GR.csv QSTK/QSData/Yahoo/GS.csv QSTK/QSData/Yahoo/GT.csv QSTK/QSData/Yahoo/GWW.csv QSTK/QSData/Yahoo/HAL.csv QSTK/QSData/Yahoo/HAR.csv QSTK/QSData/Yahoo/HAS.csv QSTK/QSData/Yahoo/HBAN.csv QSTK/QSData/Yahoo/HCBK.csv QSTK/QSData/Yahoo/HCN.csv QSTK/QSData/Yahoo/HCP.csv QSTK/QSData/Yahoo/HD.csv QSTK/QSData/Yahoo/HES.csv QSTK/QSData/Yahoo/HIG.csv QSTK/QSData/Yahoo/HNZ.csv QSTK/QSData/Yahoo/HOG.csv QSTK/QSData/Yahoo/HON.csv QSTK/QSData/Yahoo/HOT.csv QSTK/QSData/Yahoo/HP.csv QSTK/QSData/Yahoo/HPCCP.csv QSTK/QSData/Yahoo/HPQ.csv QSTK/QSData/Yahoo/HRB.csv QSTK/QSData/Yahoo/HRL.csv QSTK/QSData/Yahoo/HRS.csv QSTK/QSData/Yahoo/HSP.csv QSTK/QSData/Yahoo/HST.csv QSTK/QSData/Yahoo/HSY.csv QSTK/QSData/Yahoo/HUM.csv QSTK/QSData/Yahoo/IACI.csv QSTK/QSData/Yahoo/IBM.csv QSTK/QSData/Yahoo/ICE.csv QSTK/QSData/Yahoo/IFF.csv QSTK/QSData/Yahoo/IGT.csv QSTK/QSData/Yahoo/INTC.csv QSTK/QSData/Yahoo/INTU.csv QSTK/QSData/Yahoo/IP.csv QSTK/QSData/Yahoo/IPG.csv QSTK/QSData/Yahoo/IR.csv QSTK/QSData/Yahoo/IRM.csv QSTK/QSData/Yahoo/ISRG.csv QSTK/QSData/Yahoo/ITT.csv QSTK/QSData/Yahoo/ITW.csv QSTK/QSData/Yahoo/IVZ.csv QSTK/QSData/Yahoo/IYR.csv QSTK/QSData/Yahoo/JAVA.csv QSTK/QSData/Yahoo/JBL.csv QSTK/QSData/Yahoo/JCI.csv QSTK/QSData/Yahoo/JCP.csv QSTK/QSData/Yahoo/JDSU.csv QSTK/QSData/Yahoo/JEC.csv QSTK/QSData/Yahoo/JNJ.csv QSTK/QSData/Yahoo/JNPR.csv QSTK/QSData/Yahoo/JNS.csv QSTK/QSData/Yahoo/JNY.csv QSTK/QSData/Yahoo/JOY.csv QSTK/QSData/Yahoo/JPM.csv QSTK/QSData/Yahoo/JWN.csv QSTK/QSData/Yahoo/K.csv QSTK/QSData/Yahoo/KBH.csv QSTK/QSData/Yahoo/KEY.csv QSTK/QSData/Yahoo/KFT.csv QSTK/QSData/Yahoo/KG.csv QSTK/QSData/Yahoo/KIM.csv QSTK/QSData/Yahoo/KLAC.csv QSTK/QSData/Yahoo/KMB.csv QSTK/QSData/Yahoo/KMI.csv QSTK/QSData/Yahoo/KMX.csv QSTK/QSData/Yahoo/KO.csv QSTK/QSData/Yahoo/KR.csv QSTK/QSData/Yahoo/KSS.csv QSTK/QSData/Yahoo/L.csv QSTK/QSData/Yahoo/LEG.csv QSTK/QSData/Yahoo/LEHMQ.csv QSTK/QSData/Yahoo/LEN.csv QSTK/QSData/Yahoo/LH.csv QSTK/QSData/Yahoo/LIFE.csv QSTK/QSData/Yahoo/LIZ.csv QSTK/QSData/Yahoo/LLL.csv QSTK/QSData/Yahoo/LLTC.csv QSTK/QSData/Yahoo/LLY.csv QSTK/QSData/Yahoo/LM.csv QSTK/QSData/Yahoo/LMT.csv QSTK/QSData/Yahoo/LNC.csv QSTK/QSData/Yahoo/LO.csv QSTK/QSData/Yahoo/LOW.csv QSTK/QSData/Yahoo/LRCX.csv QSTK/QSData/Yahoo/LSI.csv QSTK/QSData/Yahoo/LTD.csv QSTK/QSData/Yahoo/LUK.csv QSTK/QSData/Yahoo/LUV.csv QSTK/QSData/Yahoo/LXK.csv QSTK/QSData/Yahoo/LYB.csv QSTK/QSData/Yahoo/M.csv QSTK/QSData/Yahoo/MA.csv QSTK/QSData/Yahoo/MAR.csv QSTK/QSData/Yahoo/MAS.csv QSTK/QSData/Yahoo/MAT.csv QSTK/QSData/Yahoo/MBI.csv QSTK/QSData/Yahoo/MCD.csv QSTK/QSData/Yahoo/MCHP.csv QSTK/QSData/Yahoo/MCK.csv QSTK/QSData/Yahoo/MCO.csv QSTK/QSData/Yahoo/MDP.csv QSTK/QSData/Yahoo/MDT.csv QSTK/QSData/Yahoo/MET.csv QSTK/QSData/Yahoo/MHP.csv QSTK/QSData/Yahoo/MHS.csv QSTK/QSData/Yahoo/MI.csv QSTK/QSData/Yahoo/MIL.csv QSTK/QSData/Yahoo/MJN.csv QSTK/QSData/Yahoo/MKC.csv QSTK/QSData/Yahoo/ML4T-000.csv QSTK/QSData/Yahoo/ML4T-001.csv QSTK/QSData/Yahoo/ML4T-002.csv QSTK/QSData/Yahoo/ML4T-003.csv QSTK/QSData/Yahoo/ML4T-004.csv QSTK/QSData/Yahoo/ML4T-005.csv QSTK/QSData/Yahoo/ML4T-006.csv QSTK/QSData/Yahoo/ML4T-007.csv QSTK/QSData/Yahoo/ML4T-008.csv QSTK/QSData/Yahoo/ML4T-009.csv QSTK/QSData/Yahoo/ML4T-010.csv QSTK/QSData/Yahoo/ML4T-011.csv QSTK/QSData/Yahoo/ML4T-012.csv QSTK/QSData/Yahoo/ML4T-013.csv QSTK/QSData/Yahoo/ML4T-014.csv QSTK/QSData/Yahoo/ML4T-015.csv QSTK/QSData/Yahoo/ML4T-016.csv QSTK/QSData/Yahoo/ML4T-017.csv QSTK/QSData/Yahoo/ML4T-018.csv QSTK/QSData/Yahoo/ML4T-019.csv QSTK/QSData/Yahoo/ML4T-020.csv QSTK/QSData/Yahoo/ML4T-021.csv QSTK/QSData/Yahoo/ML4T-022.csv QSTK/QSData/Yahoo/ML4T-023.csv QSTK/QSData/Yahoo/ML4T-024.csv QSTK/QSData/Yahoo/ML4T-025.csv QSTK/QSData/Yahoo/ML4T-026.csv QSTK/QSData/Yahoo/ML4T-027.csv QSTK/QSData/Yahoo/ML4T-028.csv QSTK/QSData/Yahoo/ML4T-029.csv QSTK/QSData/Yahoo/ML4T-030.csv QSTK/QSData/Yahoo/ML4T-031.csv QSTK/QSData/Yahoo/ML4T-032.csv QSTK/QSData/Yahoo/ML4T-033.csv QSTK/QSData/Yahoo/ML4T-034.csv QSTK/QSData/Yahoo/ML4T-035.csv QSTK/QSData/Yahoo/ML4T-036.csv QSTK/QSData/Yahoo/ML4T-037.csv QSTK/QSData/Yahoo/ML4T-038.csv QSTK/QSData/Yahoo/ML4T-039.csv QSTK/QSData/Yahoo/ML4T-040.csv QSTK/QSData/Yahoo/ML4T-041.csv QSTK/QSData/Yahoo/ML4T-042.csv QSTK/QSData/Yahoo/ML4T-043.csv QSTK/QSData/Yahoo/ML4T-044.csv QSTK/QSData/Yahoo/ML4T-045.csv QSTK/QSData/Yahoo/ML4T-046.csv QSTK/QSData/Yahoo/ML4T-047.csv QSTK/QSData/Yahoo/ML4T-048.csv QSTK/QSData/Yahoo/ML4T-049.csv QSTK/QSData/Yahoo/ML4T-050.csv QSTK/QSData/Yahoo/ML4T-051.csv QSTK/QSData/Yahoo/ML4T-052.csv QSTK/QSData/Yahoo/ML4T-053.csv QSTK/QSData/Yahoo/ML4T-054.csv QSTK/QSData/Yahoo/ML4T-055.csv QSTK/QSData/Yahoo/ML4T-056.csv QSTK/QSData/Yahoo/ML4T-057.csv QSTK/QSData/Yahoo/ML4T-058.csv QSTK/QSData/Yahoo/ML4T-059.csv QSTK/QSData/Yahoo/ML4T-060.csv QSTK/QSData/Yahoo/ML4T-061.csv QSTK/QSData/Yahoo/ML4T-062.csv QSTK/QSData/Yahoo/ML4T-063.csv QSTK/QSData/Yahoo/ML4T-064.csv QSTK/QSData/Yahoo/ML4T-065.csv QSTK/QSData/Yahoo/ML4T-066.csv QSTK/QSData/Yahoo/ML4T-067.csv QSTK/QSData/Yahoo/ML4T-068.csv QSTK/QSData/Yahoo/ML4T-069.csv QSTK/QSData/Yahoo/ML4T-070.csv QSTK/QSData/Yahoo/ML4T-071.csv QSTK/QSData/Yahoo/ML4T-072.csv QSTK/QSData/Yahoo/ML4T-073.csv QSTK/QSData/Yahoo/ML4T-074.csv QSTK/QSData/Yahoo/ML4T-075.csv QSTK/QSData/Yahoo/ML4T-076.csv QSTK/QSData/Yahoo/ML4T-077.csv QSTK/QSData/Yahoo/ML4T-078.csv QSTK/QSData/Yahoo/ML4T-079.csv QSTK/QSData/Yahoo/ML4T-080.csv QSTK/QSData/Yahoo/ML4T-081.csv QSTK/QSData/Yahoo/ML4T-082.csv QSTK/QSData/Yahoo/ML4T-083.csv QSTK/QSData/Yahoo/ML4T-084.csv QSTK/QSData/Yahoo/ML4T-085.csv QSTK/QSData/Yahoo/ML4T-086.csv QSTK/QSData/Yahoo/ML4T-087.csv QSTK/QSData/Yahoo/ML4T-088.csv QSTK/QSData/Yahoo/ML4T-089.csv QSTK/QSData/Yahoo/ML4T-090.csv QSTK/QSData/Yahoo/ML4T-091.csv QSTK/QSData/Yahoo/ML4T-092.csv QSTK/QSData/Yahoo/ML4T-093.csv QSTK/QSData/Yahoo/ML4T-094.csv QSTK/QSData/Yahoo/ML4T-095.csv QSTK/QSData/Yahoo/ML4T-096.csv QSTK/QSData/Yahoo/ML4T-097.csv QSTK/QSData/Yahoo/ML4T-098.csv QSTK/QSData/Yahoo/ML4T-099.csv QSTK/QSData/Yahoo/ML4T-100.csv QSTK/QSData/Yahoo/ML4T-101.csv QSTK/QSData/Yahoo/ML4T-102.csv QSTK/QSData/Yahoo/ML4T-103.csv QSTK/QSData/Yahoo/ML4T-104.csv QSTK/QSData/Yahoo/ML4T-105.csv QSTK/QSData/Yahoo/ML4T-106.csv QSTK/QSData/Yahoo/ML4T-107.csv QSTK/QSData/Yahoo/ML4T-108.csv QSTK/QSData/Yahoo/ML4T-109.csv QSTK/QSData/Yahoo/ML4T-110.csv QSTK/QSData/Yahoo/ML4T-111.csv QSTK/QSData/Yahoo/ML4T-112.csv QSTK/QSData/Yahoo/ML4T-113.csv QSTK/QSData/Yahoo/ML4T-114.csv QSTK/QSData/Yahoo/ML4T-115.csv QSTK/QSData/Yahoo/ML4T-116.csv QSTK/QSData/Yahoo/ML4T-117.csv QSTK/QSData/Yahoo/ML4T-118.csv QSTK/QSData/Yahoo/ML4T-119.csv QSTK/QSData/Yahoo/ML4T-120.csv QSTK/QSData/Yahoo/ML4T-121.csv QSTK/QSData/Yahoo/ML4T-122.csv QSTK/QSData/Yahoo/ML4T-123.csv QSTK/QSData/Yahoo/ML4T-124.csv QSTK/QSData/Yahoo/ML4T-125.csv QSTK/QSData/Yahoo/ML4T-126.csv QSTK/QSData/Yahoo/ML4T-127.csv QSTK/QSData/Yahoo/ML4T-128.csv QSTK/QSData/Yahoo/ML4T-129.csv QSTK/QSData/Yahoo/ML4T-130.csv QSTK/QSData/Yahoo/ML4T-131.csv QSTK/QSData/Yahoo/ML4T-132.csv QSTK/QSData/Yahoo/ML4T-133.csv QSTK/QSData/Yahoo/ML4T-134.csv QSTK/QSData/Yahoo/ML4T-135.csv QSTK/QSData/Yahoo/ML4T-136.csv QSTK/QSData/Yahoo/ML4T-137.csv QSTK/QSData/Yahoo/ML4T-138.csv QSTK/QSData/Yahoo/ML4T-139.csv QSTK/QSData/Yahoo/ML4T-140.csv QSTK/QSData/Yahoo/ML4T-141.csv QSTK/QSData/Yahoo/ML4T-142.csv QSTK/QSData/Yahoo/ML4T-143.csv QSTK/QSData/Yahoo/ML4T-144.csv QSTK/QSData/Yahoo/ML4T-145.csv QSTK/QSData/Yahoo/ML4T-146.csv QSTK/QSData/Yahoo/ML4T-147.csv QSTK/QSData/Yahoo/ML4T-148.csv QSTK/QSData/Yahoo/ML4T-149.csv QSTK/QSData/Yahoo/ML4T-150.csv QSTK/QSData/Yahoo/ML4T-151.csv QSTK/QSData/Yahoo/ML4T-152.csv QSTK/QSData/Yahoo/ML4T-153.csv QSTK/QSData/Yahoo/ML4T-154.csv QSTK/QSData/Yahoo/ML4T-155.csv QSTK/QSData/Yahoo/ML4T-156.csv QSTK/QSData/Yahoo/ML4T-157.csv QSTK/QSData/Yahoo/ML4T-158.csv QSTK/QSData/Yahoo/ML4T-159.csv QSTK/QSData/Yahoo/ML4T-160.csv QSTK/QSData/Yahoo/ML4T-161.csv QSTK/QSData/Yahoo/ML4T-162.csv QSTK/QSData/Yahoo/ML4T-163.csv QSTK/QSData/Yahoo/ML4T-164.csv QSTK/QSData/Yahoo/ML4T-165.csv QSTK/QSData/Yahoo/ML4T-166.csv QSTK/QSData/Yahoo/ML4T-167.csv QSTK/QSData/Yahoo/ML4T-168.csv QSTK/QSData/Yahoo/ML4T-169.csv QSTK/QSData/Yahoo/ML4T-170.csv QSTK/QSData/Yahoo/ML4T-171.csv QSTK/QSData/Yahoo/ML4T-172.csv QSTK/QSData/Yahoo/ML4T-173.csv QSTK/QSData/Yahoo/ML4T-174.csv QSTK/QSData/Yahoo/ML4T-175.csv QSTK/QSData/Yahoo/ML4T-176.csv QSTK/QSData/Yahoo/ML4T-177.csv QSTK/QSData/Yahoo/ML4T-178.csv QSTK/QSData/Yahoo/ML4T-179.csv QSTK/QSData/Yahoo/ML4T-180.csv QSTK/QSData/Yahoo/ML4T-181.csv QSTK/QSData/Yahoo/ML4T-182.csv QSTK/QSData/Yahoo/ML4T-183.csv QSTK/QSData/Yahoo/ML4T-184.csv QSTK/QSData/Yahoo/ML4T-185.csv QSTK/QSData/Yahoo/ML4T-186.csv QSTK/QSData/Yahoo/ML4T-187.csv QSTK/QSData/Yahoo/ML4T-188.csv QSTK/QSData/Yahoo/ML4T-189.csv QSTK/QSData/Yahoo/ML4T-190.csv QSTK/QSData/Yahoo/ML4T-191.csv QSTK/QSData/Yahoo/ML4T-192.csv QSTK/QSData/Yahoo/ML4T-193.csv QSTK/QSData/Yahoo/ML4T-194.csv QSTK/QSData/Yahoo/ML4T-195.csv QSTK/QSData/Yahoo/ML4T-196.csv QSTK/QSData/Yahoo/ML4T-197.csv QSTK/QSData/Yahoo/ML4T-198.csv QSTK/QSData/Yahoo/ML4T-199.csv QSTK/QSData/Yahoo/ML4T-200.csv QSTK/QSData/Yahoo/ML4T-201.csv QSTK/QSData/Yahoo/ML4T-202.csv QSTK/QSData/Yahoo/ML4T-203.csv QSTK/QSData/Yahoo/ML4T-204.csv QSTK/QSData/Yahoo/ML4T-205.csv QSTK/QSData/Yahoo/ML4T-206.csv QSTK/QSData/Yahoo/ML4T-207.csv QSTK/QSData/Yahoo/ML4T-208.csv QSTK/QSData/Yahoo/ML4T-209.csv QSTK/QSData/Yahoo/ML4T-210.csv QSTK/QSData/Yahoo/ML4T-211.csv QSTK/QSData/Yahoo/ML4T-212.csv QSTK/QSData/Yahoo/ML4T-213.csv QSTK/QSData/Yahoo/ML4T-214.csv QSTK/QSData/Yahoo/ML4T-215.csv QSTK/QSData/Yahoo/ML4T-216.csv QSTK/QSData/Yahoo/ML4T-217.csv QSTK/QSData/Yahoo/ML4T-218.csv QSTK/QSData/Yahoo/ML4T-219.csv QSTK/QSData/Yahoo/ML4T-220.csv QSTK/QSData/Yahoo/ML4T-221.csv QSTK/QSData/Yahoo/ML4T-222.csv QSTK/QSData/Yahoo/ML4T-223.csv QSTK/QSData/Yahoo/ML4T-224.csv QSTK/QSData/Yahoo/ML4T-225.csv QSTK/QSData/Yahoo/ML4T-226.csv QSTK/QSData/Yahoo/ML4T-227.csv QSTK/QSData/Yahoo/ML4T-228.csv QSTK/QSData/Yahoo/ML4T-229.csv QSTK/QSData/Yahoo/ML4T-230.csv QSTK/QSData/Yahoo/ML4T-231.csv QSTK/QSData/Yahoo/ML4T-232.csv QSTK/QSData/Yahoo/ML4T-233.csv QSTK/QSData/Yahoo/ML4T-234.csv QSTK/QSData/Yahoo/ML4T-235.csv QSTK/QSData/Yahoo/ML4T-236.csv QSTK/QSData/Yahoo/ML4T-237.csv QSTK/QSData/Yahoo/ML4T-238.csv QSTK/QSData/Yahoo/ML4T-239.csv QSTK/QSData/Yahoo/ML4T-240.csv QSTK/QSData/Yahoo/ML4T-241.csv QSTK/QSData/Yahoo/ML4T-242.csv QSTK/QSData/Yahoo/ML4T-243.csv QSTK/QSData/Yahoo/ML4T-244.csv QSTK/QSData/Yahoo/ML4T-245.csv QSTK/QSData/Yahoo/ML4T-246.csv QSTK/QSData/Yahoo/ML4T-247.csv QSTK/QSData/Yahoo/ML4T-248.csv QSTK/QSData/Yahoo/ML4T-249.csv QSTK/QSData/Yahoo/ML4T-250.csv QSTK/QSData/Yahoo/ML4T-251.csv QSTK/QSData/Yahoo/ML4T-252.csv QSTK/QSData/Yahoo/ML4T-253.csv QSTK/QSData/Yahoo/ML4T-254.csv QSTK/QSData/Yahoo/ML4T-255.csv QSTK/QSData/Yahoo/ML4T-256.csv QSTK/QSData/Yahoo/ML4T-257.csv QSTK/QSData/Yahoo/ML4T-258.csv QSTK/QSData/Yahoo/ML4T-259.csv QSTK/QSData/Yahoo/ML4T-260.csv QSTK/QSData/Yahoo/ML4T-261.csv QSTK/QSData/Yahoo/ML4T-262.csv QSTK/QSData/Yahoo/ML4T-263.csv QSTK/QSData/Yahoo/ML4T-264.csv QSTK/QSData/Yahoo/ML4T-265.csv QSTK/QSData/Yahoo/ML4T-266.csv QSTK/QSData/Yahoo/ML4T-267.csv QSTK/QSData/Yahoo/ML4T-268.csv QSTK/QSData/Yahoo/ML4T-269.csv QSTK/QSData/Yahoo/ML4T-270.csv QSTK/QSData/Yahoo/ML4T-271.csv QSTK/QSData/Yahoo/ML4T-272.csv QSTK/QSData/Yahoo/ML4T-273.csv QSTK/QSData/Yahoo/ML4T-274.csv QSTK/QSData/Yahoo/ML4T-275.csv QSTK/QSData/Yahoo/ML4T-276.csv QSTK/QSData/Yahoo/ML4T-277.csv QSTK/QSData/Yahoo/ML4T-278.csv QSTK/QSData/Yahoo/ML4T-279.csv QSTK/QSData/Yahoo/ML4T-280.csv QSTK/QSData/Yahoo/ML4T-281.csv QSTK/QSData/Yahoo/ML4T-282.csv QSTK/QSData/Yahoo/ML4T-283.csv QSTK/QSData/Yahoo/ML4T-284.csv QSTK/QSData/Yahoo/ML4T-285.csv QSTK/QSData/Yahoo/ML4T-286.csv QSTK/QSData/Yahoo/ML4T-287.csv QSTK/QSData/Yahoo/ML4T-288.csv QSTK/QSData/Yahoo/ML4T-289.csv QSTK/QSData/Yahoo/ML4T-290.csv QSTK/QSData/Yahoo/ML4T-291.csv QSTK/QSData/Yahoo/ML4T-292.csv QSTK/QSData/Yahoo/ML4T-293.csv QSTK/QSData/Yahoo/ML4T-294.csv QSTK/QSData/Yahoo/ML4T-295.csv QSTK/QSData/Yahoo/ML4T-296.csv QSTK/QSData/Yahoo/ML4T-297.csv QSTK/QSData/Yahoo/ML4T-298.csv QSTK/QSData/Yahoo/ML4T-299.csv QSTK/QSData/Yahoo/ML4T-300.csv QSTK/QSData/Yahoo/ML4T-301.csv QSTK/QSData/Yahoo/ML4T-302.csv QSTK/QSData/Yahoo/ML4T-303.csv QSTK/QSData/Yahoo/ML4T-304.csv QSTK/QSData/Yahoo/ML4T-305.csv QSTK/QSData/Yahoo/ML4T-306.csv QSTK/QSData/Yahoo/ML4T-307.csv QSTK/QSData/Yahoo/ML4T-308.csv QSTK/QSData/Yahoo/ML4T-309.csv QSTK/QSData/Yahoo/ML4T-310.csv QSTK/QSData/Yahoo/ML4T-311.csv QSTK/QSData/Yahoo/ML4T-312.csv QSTK/QSData/Yahoo/ML4T-313.csv QSTK/QSData/Yahoo/ML4T-314.csv QSTK/QSData/Yahoo/ML4T-315.csv QSTK/QSData/Yahoo/ML4T-316.csv QSTK/QSData/Yahoo/ML4T-317.csv QSTK/QSData/Yahoo/ML4T-318.csv QSTK/QSData/Yahoo/ML4T-319.csv QSTK/QSData/Yahoo/ML4T-320.csv QSTK/QSData/Yahoo/ML4T-321.csv QSTK/QSData/Yahoo/ML4T-322.csv QSTK/QSData/Yahoo/ML4T-323.csv QSTK/QSData/Yahoo/ML4T-324.csv QSTK/QSData/Yahoo/ML4T-325.csv QSTK/QSData/Yahoo/ML4T-326.csv QSTK/QSData/Yahoo/ML4T-327.csv QSTK/QSData/Yahoo/ML4T-328.csv QSTK/QSData/Yahoo/ML4T-329.csv QSTK/QSData/Yahoo/ML4T-330.csv QSTK/QSData/Yahoo/ML4T-331.csv QSTK/QSData/Yahoo/ML4T-332.csv QSTK/QSData/Yahoo/ML4T-333.csv QSTK/QSData/Yahoo/ML4T-334.csv QSTK/QSData/Yahoo/ML4T-335.csv QSTK/QSData/Yahoo/ML4T-336.csv QSTK/QSData/Yahoo/ML4T-337.csv QSTK/QSData/Yahoo/ML4T-338.csv QSTK/QSData/Yahoo/ML4T-339.csv QSTK/QSData/Yahoo/ML4T-340.csv QSTK/QSData/Yahoo/ML4T-341.csv QSTK/QSData/Yahoo/ML4T-342.csv QSTK/QSData/Yahoo/ML4T-343.csv QSTK/QSData/Yahoo/ML4T-344.csv QSTK/QSData/Yahoo/ML4T-345.csv QSTK/QSData/Yahoo/ML4T-346.csv QSTK/QSData/Yahoo/ML4T-347.csv QSTK/QSData/Yahoo/ML4T-348.csv QSTK/QSData/Yahoo/ML4T-349.csv QSTK/QSData/Yahoo/ML4T-350.csv QSTK/QSData/Yahoo/ML4T-351.csv QSTK/QSData/Yahoo/ML4T-352.csv QSTK/QSData/Yahoo/ML4T-353.csv QSTK/QSData/Yahoo/ML4T-354.csv QSTK/QSData/Yahoo/ML4T-355.csv QSTK/QSData/Yahoo/ML4T-356.csv QSTK/QSData/Yahoo/ML4T-357.csv QSTK/QSData/Yahoo/ML4T-358.csv QSTK/QSData/Yahoo/ML4T-359.csv QSTK/QSData/Yahoo/ML4T-360.csv QSTK/QSData/Yahoo/ML4T-361.csv QSTK/QSData/Yahoo/ML4T-362.csv QSTK/QSData/Yahoo/ML4T-363.csv QSTK/QSData/Yahoo/ML4T-364.csv QSTK/QSData/Yahoo/ML4T-365.csv QSTK/QSData/Yahoo/ML4T-366.csv QSTK/QSData/Yahoo/ML4T-367.csv QSTK/QSData/Yahoo/ML4T-368.csv QSTK/QSData/Yahoo/ML4T-369.csv QSTK/QSData/Yahoo/ML4T-370.csv QSTK/QSData/Yahoo/ML4T-371.csv QSTK/QSData/Yahoo/ML4T-372.csv QSTK/QSData/Yahoo/ML4T-373.csv QSTK/QSData/Yahoo/ML4T-374.csv QSTK/QSData/Yahoo/ML4T-375.csv QSTK/QSData/Yahoo/ML4T-376.csv QSTK/QSData/Yahoo/ML4T-377.csv QSTK/QSData/Yahoo/ML4T-378.csv QSTK/QSData/Yahoo/ML4T-379.csv QSTK/QSData/Yahoo/ML4T-380.csv QSTK/QSData/Yahoo/ML4T-381.csv QSTK/QSData/Yahoo/ML4T-382.csv QSTK/QSData/Yahoo/ML4T-383.csv QSTK/QSData/Yahoo/ML4T-384.csv QSTK/QSData/Yahoo/ML4T-385.csv QSTK/QSData/Yahoo/ML4T-386.csv QSTK/QSData/Yahoo/ML4T-387.csv QSTK/QSData/Yahoo/ML4T-388.csv QSTK/QSData/Yahoo/ML4T-389.csv QSTK/QSData/Yahoo/ML4T-390.csv QSTK/QSData/Yahoo/ML4T-391.csv QSTK/QSData/Yahoo/ML4T-392.csv QSTK/QSData/Yahoo/ML4T-393.csv QSTK/QSData/Yahoo/ML4T-394.csv QSTK/QSData/Yahoo/ML4T-395.csv QSTK/QSData/Yahoo/ML4T-396.csv QSTK/QSData/Yahoo/ML4T-397.csv QSTK/QSData/Yahoo/ML4T-398.csv QSTK/QSData/Yahoo/ML4T-399.csv QSTK/QSData/Yahoo/MMC.csv QSTK/QSData/Yahoo/MMM.csv QSTK/QSData/Yahoo/MNST.csv QSTK/QSData/Yahoo/MO.csv QSTK/QSData/Yahoo/MOLX.csv QSTK/QSData/Yahoo/MON.csv QSTK/QSData/Yahoo/MOS.csv QSTK/QSData/Yahoo/MPC.csv QSTK/QSData/Yahoo/MRK.csv QSTK/QSData/Yahoo/MRO.csv QSTK/QSData/Yahoo/MS.csv QSTK/QSData/Yahoo/MSFT.csv QSTK/QSData/Yahoo/MSI.csv QSTK/QSData/Yahoo/MTB.csv QSTK/QSData/Yahoo/MTG.csv QSTK/QSData/Yahoo/MTW.csv QSTK/QSData/Yahoo/MU.csv QSTK/QSData/Yahoo/MUR.csv QSTK/QSData/Yahoo/MWV.csv QSTK/QSData/Yahoo/MWW.csv QSTK/QSData/Yahoo/MYL.csv QSTK/QSData/Yahoo/NBL.csv QSTK/QSData/Yahoo/NBR.csv QSTK/QSData/Yahoo/NCC.csv QSTK/QSData/Yahoo/NDAQ.csv QSTK/QSData/Yahoo/NE.csv QSTK/QSData/Yahoo/NEE.csv QSTK/QSData/Yahoo/NEM.csv QSTK/QSData/Yahoo/NFLX.csv QSTK/QSData/Yahoo/NFX.csv QSTK/QSData/Yahoo/NI.csv QSTK/QSData/Yahoo/NKE.csv QSTK/QSData/Yahoo/NOC.csv QSTK/QSData/Yahoo/NOV.csv QSTK/QSData/Yahoo/NOVL.csv QSTK/QSData/Yahoo/NRG.csv QSTK/QSData/Yahoo/NSC.csv QSTK/QSData/Yahoo/NSM.csv QSTK/QSData/Yahoo/NTAP.csv QSTK/QSData/Yahoo/NTRS.csv QSTK/QSData/Yahoo/NU.csv QSTK/QSData/Yahoo/NUE.csv QSTK/QSData/Yahoo/NVDA.csv QSTK/QSData/Yahoo/NVLS.csv QSTK/QSData/Yahoo/NWL.csv QSTK/QSData/Yahoo/NWSA.csv QSTK/QSData/Yahoo/NYT.csv QSTK/QSData/Yahoo/NYX.csv QSTK/QSData/Yahoo/ODP.csv QSTK/QSData/Yahoo/OI.csv QSTK/QSData/Yahoo/OKE.csv QSTK/QSData/Yahoo/OMC.csv QSTK/QSData/Yahoo/OMX.csv QSTK/QSData/Yahoo/ORCL.csv QSTK/QSData/Yahoo/ORLY.csv QSTK/QSData/Yahoo/OXY.csv QSTK/QSData/Yahoo/PAYX.csv QSTK/QSData/Yahoo/PBCT.csv QSTK/QSData/Yahoo/PBG.csv QSTK/QSData/Yahoo/PBI.csv QSTK/QSData/Yahoo/PCAR.csv QSTK/QSData/Yahoo/PCG.csv QSTK/QSData/Yahoo/PCL.csv QSTK/QSData/Yahoo/PCLN.csv QSTK/QSData/Yahoo/PCP.csv QSTK/QSData/Yahoo/PCS.csv QSTK/QSData/Yahoo/PDCO.csv QSTK/QSData/Yahoo/PEG.csv QSTK/QSData/Yahoo/PEP.csv QSTK/QSData/Yahoo/PFE.csv QSTK/QSData/Yahoo/PFG.csv QSTK/QSData/Yahoo/PG.csv QSTK/QSData/Yahoo/PGN.csv QSTK/QSData/Yahoo/PGR.csv QSTK/QSData/Yahoo/PH.csv QSTK/QSData/Yahoo/PHM.csv QSTK/QSData/Yahoo/PKI.csv QSTK/QSData/Yahoo/PLD.csv QSTK/QSData/Yahoo/PLL.csv QSTK/QSData/Yahoo/PM.csv QSTK/QSData/Yahoo/PNC.csv QSTK/QSData/Yahoo/PNW.csv QSTK/QSData/Yahoo/POM.csv QSTK/QSData/Yahoo/PPG.csv QSTK/QSData/Yahoo/PPL.csv QSTK/QSData/Yahoo/PRGO.csv QSTK/QSData/Yahoo/PRU.csv QSTK/QSData/Yahoo/PSA.csv QSTK/QSData/Yahoo/PSX.csv QSTK/QSData/Yahoo/PTV.csv QSTK/QSData/Yahoo/PWR.csv QSTK/QSData/Yahoo/PX.csv QSTK/QSData/Yahoo/PXD.csv QSTK/QSData/Yahoo/Q.csv QSTK/QSData/Yahoo/QCOM.csv QSTK/QSData/Yahoo/QEP.csv QSTK/QSData/Yahoo/QLGC.csv QSTK/QSData/Yahoo/R.csv QSTK/QSData/Yahoo/RAI.csv QSTK/QSData/Yahoo/RDC.csv QSTK/QSData/Yahoo/RF.csv QSTK/QSData/Yahoo/RHI.csv QSTK/QSData/Yahoo/RHT.csv QSTK/QSData/Yahoo/RIG.csv QSTK/QSData/Yahoo/RL.csv QSTK/QSData/Yahoo/ROH.csv QSTK/QSData/Yahoo/ROK.csv QSTK/QSData/Yahoo/ROP.csv QSTK/QSData/Yahoo/ROST.csv QSTK/QSData/Yahoo/RRC.csv QSTK/QSData/Yahoo/RRD.csv QSTK/QSData/Yahoo/RSG.csv QSTK/QSData/Yahoo/RSH.csv QSTK/QSData/Yahoo/RTN.csv QSTK/QSData/Yahoo/S.csv QSTK/QSData/Yahoo/SAF.csv QSTK/QSData/Yahoo/SAI.csv QSTK/QSData/Yahoo/SBUX.csv QSTK/QSData/Yahoo/SCG.csv QSTK/QSData/Yahoo/SCHW.csv QSTK/QSData/Yahoo/SDS.csv QSTK/QSData/Yahoo/SE.csv QSTK/QSData/Yahoo/SEE.csv QSTK/QSData/Yahoo/SGP.csv QSTK/QSData/Yahoo/SH.csv QSTK/QSData/Yahoo/SHLD.csv QSTK/QSData/Yahoo/SHW.csv QSTK/QSData/Yahoo/SIAL.csv QSTK/QSData/Yahoo/SII.csv QSTK/QSData/Yahoo/SINE_FAST.csv QSTK/QSData/Yahoo/SINE_FAST_NOISE.csv QSTK/QSData/Yahoo/SINE_SLOW.csv QSTK/QSData/Yahoo/SINE_SLOW_NOISE.csv QSTK/QSData/Yahoo/SJM.csv QSTK/QSData/Yahoo/SLB.csv QSTK/QSData/Yahoo/SLE.csv QSTK/QSData/Yahoo/SLM.csv QSTK/QSData/Yahoo/SNA.csv QSTK/QSData/Yahoo/SNDK.csv QSTK/QSData/Yahoo/SNI.csv QSTK/QSData/Yahoo/SNV.csv QSTK/QSData/Yahoo/SO.csv QSTK/QSData/Yahoo/SPG.csv QSTK/QSData/Yahoo/SPLS.csv QSTK/QSData/Yahoo/SPY.csv QSTK/QSData/Yahoo/SRCL.csv QSTK/QSData/Yahoo/SRE.csv QSTK/QSData/Yahoo/SSP.csv QSTK/QSData/Yahoo/STI.csv QSTK/QSData/Yahoo/STJ.csv QSTK/QSData/Yahoo/STR.csv QSTK/QSData/Yahoo/STT.csv QSTK/QSData/Yahoo/STX.csv QSTK/QSData/Yahoo/STZ.csv QSTK/QSData/Yahoo/SUN.csv QSTK/QSData/Yahoo/SVU.csv QSTK/QSData/Yahoo/SWK.csv QSTK/QSData/Yahoo/SWN.csv QSTK/QSData/Yahoo/SWY.csv QSTK/QSData/Yahoo/SYK.csv QSTK/QSData/Yahoo/SYMC.csv QSTK/QSData/Yahoo/SYY.csv QSTK/QSData/Yahoo/T.csv QSTK/QSData/Yahoo/TAP.csv QSTK/QSData/Yahoo/TDC.csv QSTK/QSData/Yahoo/TE.csv QSTK/QSData/Yahoo/TEG.csv QSTK/QSData/Yahoo/TEL.csv QSTK/QSData/Yahoo/TER.csv QSTK/QSData/Yahoo/TEX.csv QSTK/QSData/Yahoo/TGT.csv QSTK/QSData/Yahoo/THC.csv QSTK/QSData/Yahoo/TIE.csv QSTK/QSData/Yahoo/TIF.csv QSTK/QSData/Yahoo/TJX.csv QSTK/QSData/Yahoo/TLAB.csv QSTK/QSData/Yahoo/TMK.csv QSTK/QSData/Yahoo/TMO.csv QSTK/QSData/Yahoo/TRIP.csv QSTK/QSData/Yahoo/TROW.csv QSTK/QSData/Yahoo/TRV.csv QSTK/QSData/Yahoo/TSN.csv QSTK/QSData/Yahoo/TSO.csv QSTK/QSData/Yahoo/TSS.csv QSTK/QSData/Yahoo/TWC.csv QSTK/QSData/Yahoo/TWX.csv QSTK/QSData/Yahoo/TXN.csv QSTK/QSData/Yahoo/TXT.csv QSTK/QSData/Yahoo/TYC.csv QSTK/QSData/Yahoo/UIS.csv QSTK/QSData/Yahoo/UNH.csv QSTK/QSData/Yahoo/UNM.csv QSTK/QSData/Yahoo/UNP.csv QSTK/QSData/Yahoo/UPS.csv QSTK/QSData/Yahoo/URBN.csv QSTK/QSData/Yahoo/USB.csv QSTK/QSData/Yahoo/UST.csv QSTK/QSData/Yahoo/UTX.csv QSTK/QSData/Yahoo/V.csv QSTK/QSData/Yahoo/VAR.csv QSTK/QSData/Yahoo/VFC.csv QSTK/QSData/Yahoo/VIA.B.csv QSTK/QSData/Yahoo/VIAB.csv QSTK/QSData/Yahoo/VLO.csv QSTK/QSData/Yahoo/VMC.csv QSTK/QSData/Yahoo/VNO.csv QSTK/QSData/Yahoo/VRSN.csv QSTK/QSData/Yahoo/VTR.csv QSTK/QSData/Yahoo/VZ.csv QSTK/QSData/Yahoo/WAG.csv QSTK/QSData/Yahoo/WAMUQ.csv QSTK/QSData/Yahoo/WAT.csv QSTK/QSData/Yahoo/WB.csv QSTK/QSData/Yahoo/WDC.csv QSTK/QSData/Yahoo/WEC.csv QSTK/QSData/Yahoo/WEN.csv QSTK/QSData/Yahoo/WFC.csv QSTK/QSData/Yahoo/WFM.csv QSTK/QSData/Yahoo/WFR.csv QSTK/QSData/Yahoo/WFT.csv QSTK/QSData/Yahoo/WHR.csv QSTK/QSData/Yahoo/WIN.csv QSTK/QSData/Yahoo/WLP.csv QSTK/QSData/Yahoo/WM.csv QSTK/QSData/Yahoo/WMB.csv QSTK/QSData/Yahoo/WMT.csv QSTK/QSData/Yahoo/WPI.csv QSTK/QSData/Yahoo/WPO.csv QSTK/QSData/Yahoo/WPX.csv QSTK/QSData/Yahoo/WU.csv QSTK/QSData/Yahoo/WWY.csv QSTK/QSData/Yahoo/WY.csv QSTK/QSData/Yahoo/WYE.csv QSTK/QSData/Yahoo/WYN.csv QSTK/QSData/Yahoo/WYNN.csv QSTK/QSData/Yahoo/X.csv QSTK/QSData/Yahoo/XEL.csv QSTK/QSData/Yahoo/XL.csv QSTK/QSData/Yahoo/XLNX.csv QSTK/QSData/Yahoo/XOM.csv QSTK/QSData/Yahoo/XRAY.csv QSTK/QSData/Yahoo/XRX.csv QSTK/QSData/Yahoo/XTO.csv QSTK/QSData/Yahoo/XYL.csv QSTK/QSData/Yahoo/YHOO.csv QSTK/QSData/Yahoo/YUM.csv QSTK/QSData/Yahoo/ZION.csv QSTK/QSData/Yahoo/ZMH.csv + find -name '*.py' + xargs sed -i '1s|^#!python|#!/usr/bin/python3|' + 2to3 -w . RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ./ez_setup.py RefactoringTool: No changes to ./setup.py RefactoringTool: Refactored ./Bin/DataGenerate_SineWave.py RefactoringTool: Refactored ./Bin/Data_CSV.py RefactoringTool: Refactored ./Bin/converter.py RefactoringTool: Refactored ./Bin/csvformatter.py RefactoringTool: Refactored ./Bin/gen_nyse_dates.py RefactoringTool: Refactored ./Bin/investors_report.py --- ./ez_setup.py (original) +++ ./ez_setup.py (refactored) @@ -70,10 +70,10 @@ if egg_name in md5_data: digest = md5(data).hexdigest() if digest != md5_data[egg_name]: - print >>sys.stderr, ( + print(( "md5 validation of %s failed! (Possible download problem?)" % egg_name - ) + ), file=sys.stderr) sys.exit(2) return data @@ -103,14 +103,14 @@ return do_download() try: pkg_resources.require("setuptools>="+version); return - except pkg_resources.VersionConflict, e: + except pkg_resources.VersionConflict as e: if was_imported: - print >>sys.stderr, ( + print(( "The required version of setuptools (>=%s) is not available, and\n" "can't be installed while this script is running. Please install\n" " a more recent version first, using 'easy_install -U setuptools'." "\n\n(Currently using %r)" - ) % (version, e.args[0]) + ) % (version, e.args[0]), file=sys.stderr) sys.exit(2) except pkg_resources.DistributionNotFound: pass @@ -129,7 +129,7 @@ with a '/'). `to_dir` is the directory where the egg will be downloaded. `delay` is the number of seconds to pause before an actual download attempt. """ - import urllib2, shutil + import urllib.request, urllib.error, urllib.parse, shutil egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3]) url = download_base + egg_name saveto = os.path.join(to_dir, egg_name) @@ -155,7 +155,7 @@ version, download_base, delay, url ); from time import sleep; sleep(delay) log.warn("Downloading %s", url) - src = urllib2.urlopen(url) + src = urllib.request.urlopen(url) # Read/write all in one block, so we don't create a corrupt file # if the download is interrupted. data = _validate_md5(egg_name, src.read()) @@ -216,10 +216,10 @@ os.unlink(egg) else: if setuptools.__version__ == '0.0.1': - print >>sys.stderr, ( + print(( "You have an obsolete version of setuptools installed. Please\n" "remove it from your system entirely before rerunning this script." - ) + ), file=sys.stderr) sys.exit(2) req = "setuptools>="+version @@ -238,8 +238,8 @@ from setuptools.command.easy_install import main main(argv) else: - print "Setuptools version",version,"or greater has been installed." - print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)' + print("Setuptools version",version,"or greater has been installed.") + print('(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)') def update_md5(filenames): """Update our built-in md5 registry""" @@ -252,7 +252,7 @@ md5_data[base] = md5(f.read()).hexdigest() f.close() - data = [" %r: %r,\n" % it for it in md5_data.items()] + data = [" %r: %r,\n" % it for it in list(md5_data.items())] data.sort() repl = "".join(data) @@ -262,7 +262,7 @@ match = re.search("\nmd5_data = {\n([^}]+)}", src) if not match: - print >>sys.stderr, "Internal error!" + print("Internal error!", file=sys.stderr) sys.exit(2) src = src[:match.start(1)] + repl + src[match.end(1):] --- ./Bin/DataGenerate_SineWave.py (original) +++ ./Bin/DataGenerate_SineWave.py (refactored) @@ -38,12 +38,12 @@ def main(): - print "Creating Stock data from Sine Waves" + print("Creating Stock data from Sine Waves") dt_start = dt.datetime(2000, 1, 1) dt_end = dt.datetime(2012, 10, 31) ldt_timestamps = du.getNYSEdays(dt_start, dt_end, dt.timedelta(hours=16)) - x = np.array(range(len(ldt_timestamps))) + x = np.array(list(range(len(ldt_timestamps)))) ls_symbols = ['SINE_FAST', 'SINE_SLOW', 'SINE_FAST_NOISE', 'SINE_SLOW_NOISE'] sine_fast = 10*np.sin(x/10.) + 100 @@ -52,7 +52,7 @@ sine_fast_noise = 10*(np.sin(x/10.) + np.random.randn(x.size)) + 100 sine_slow_noise = 10*(np.sin(x/30.) + np.random.randn(x.size)) + 100 - d_data = dict(zip(ls_symbols, [sine_fast, sine_slow, sine_fast_noise, sine_slow_noise])) + d_data = dict(list(zip(ls_symbols, [sine_fast, sine_slow, sine_fast_noise, sine_slow_noise]))) write(ls_symbols, d_data, ldt_timestamps) --- ./Bin/Data_CSV.py (original) +++ ./Bin/Data_CSV.py (refactored) @@ -26,7 +26,7 @@ valid data on the start/enddates which requires lookback/forward @return: data dictionry ''' - print "Getting Data from MySQL" + print("Getting Data from MySQL") # Modify dates to ensure enough data for all features dt_start = dt.datetime(2005,1,1) dt_end = dt.datetime(2012, 8, 31) @@ -36,7 +36,7 @@ ldf_data = c_da.get_data(ldt_timestamps, ls_symbols, ls_keys) - d_data = dict(zip(ls_keys, ldf_data)) + d_data = dict(list(zip(ls_keys, ldf_data))) return d_data @@ -89,13 +89,13 @@ ls_keys = ['actual_open', 'actual_high', 'actual_low', 'actual_close', 'volume', 'close'] d_data = get_data(ls_symbols, ls_keys) # print d_data - print "Creating CSV files now" + print("Creating CSV files now") for sym in ls_symbols: - print sym + print(sym) csv_sym(sym,d_data, ls_keys, s_directory) - print "Created all CSV files" + print("Created all CSV files") if __name__ == '__main__' : --- ./Bin/converter.py (original) +++ ./Bin/converter.py (refactored) @@ -29,7 +29,7 @@ import math from pandas import * import matplotlib.pyplot as plt -import cPickle +import pickle def fundsToPNG(funds,output_file): plt.clf() @@ -47,7 +47,7 @@ def fundsAnalysisToPNG(funds,output_file): plt.clf() if(type(funds)!=type(list())): - print 'fundsmatrix only contains one timeseries, not able to analyze.' + print('fundsmatrix only contains one timeseries, not able to analyze.') #convert to daily returns count=list() dates=list() --- ./Bin/csvformatter.py (original) +++ ./Bin/csvformatter.py (refactored) @@ -7,8 +7,8 @@ actualheader = ['Symbol', 'Name', 'Type', 'Date', 'Shares', 'Price', 'Cash value', 'Commission', 'Notes'] reader = csv.reader(open(inputfile, 'r'), delimiter=',') - header = reader.next() - print "Header : ", header + header = next(reader) + print("Header : ", header) input_str = [] for row in reader: input_str.append(row) @@ -101,4 +101,4 @@ inputfile = "./Settled.csv" outputfile = 'trans.csv' csv_converter(inputfile, outputfile) - print "Done" + print("Done") --- ./Bin/gen_nyse_dates.py (original) +++ ./Bin/gen_nyse_dates.py (refactored) @@ -267,7 +267,7 @@ log = [] # print it out for i in newdays: - print i.strftime("%m/%d/%Y") + print(i.strftime("%m/%d/%Y")) log.append(i.strftime("%m/%d/%Y")) np.savetxt('NYSE_dates.csv', log, fmt='%s', delimiter=',') --- ./Bin/investors_report.py (original) +++ ./Bin/investors_report.py (refactored) @@ -13,11 +13,11 @@ from QSTK.qstkutil import qsdateutil as du from QSTK.qstkutil import tsutil as tsu from QSTK.quicksim import quickSim as qs -import converter +from . import converter import datetime as dt from pandas import * import matplotlib.pyplot as plt -import cPickle +import pickle def readableDate(date): return str(date.month)+"/"+str(date.day)+"/"+str(date.year) @@ -133,7 +133,7 @@ for year in years: retur=getYearReturn(funds,year) html_file.write("\n") - print >>html_file, "%.2f\n" % (retur*100) + print("%.2f\n" % (retur*100), file=html_file) html_file.write("%\n") html_file.write("\n") @@ -145,7 +145,7 @@ if(arg2!=0): win=getWinningDays(funds,funds2,year) html_file.write("\n") - print >>html_file, "%.2f\n" % (win*100) + print("%.2f\n" % (win*100), file=html_file) html_file.write("%\n") else: html_file.write("No comparison.\n")RefactoringTool: Refactored ./Bin/sinewave_data_generator.py RefactoringTool: Refactored ./Examples/Validation.py @@ -157,7 +157,7 @@ for year in years: drop=getYearMaxDrop(funds,year) html_file.write("\n") - print >>html_file, "%.2f" % (drop*100) + print("%.2f" % (drop*100), file=html_file) html_file.write("%\n") html_file.write("\n") @@ -167,7 +167,7 @@ for year in years: ratio=tsu.getYearRatio(funds,year) html_file.write("\n") - print >>html_file, "%.2f\n" % ratio + print("%.2f\n" % ratio, file=html_file) html_file.write("\n") html_file.write("\n") @@ -178,7 +178,7 @@ for year in years: ratio=getYearRatioUsingMonth(funds,year) html_file.write("\n") - print >>html_file, "%.2f\n" % ratio + print("%.2f\n" % ratio, file=html_file) html_file.write("\n") html_file.write("\n") @@ -195,7 +195,7 @@ corrcoef=numpy.corrcoef(funds.values[0:-1],funds2.values) html_file.write("

Correlation=") - print >>html_file, "%.2f\n" % corrcoef[0][1] + print("%.2f\n" % corrcoef[0][1], file=html_file) html_file.write("

\n") html_file.write("
\n\n") @@ -218,7 +218,7 @@ months=du.getMonths(funds,year) for month in months: html_file.write("\n") - print >>html_file, "%.2f\n" % (mrets[i]*100) + print("%.2f\n" % (mrets[i]*100), file=html_file) html_file.write("%\n") i+=1 html_file.write("\n") @@ -241,7 +241,7 @@ if __name__ == '__main__': input=open(sys.argv[1],"r") - funds=cPickle.load(input) + funds=pickle.load(input) if(len(sys.argv)>2): input2=sys.argv[2] --- ./Bin/sinewave_data_generator.py (original) +++ ./Bin/sinewave_data_generator.py (refactored) @@ -1,6 +1,6 @@ import datetime import QSTK.qstkutil.qsdateutil -import StringIO +import io import math import random @@ -17,12 +17,12 @@ amp = 20.0*random.random() period = 10.0+(random.random()*100.0) sin_gen = lambda x: (mean+(amp*math.sin(((math.pi*2)/period)*x))) - print fname,"parameters" - print "Mean:",mean - print "Amplitude:",amp - print "Period:", period + print(fname,"parameters") + print("Mean:",mean) + print("Amplitude:",amp) + print("Period:", period) dllen = len(datelist) - for t in xrange(dllen): + for t in range(dllen): date = datelist[(dllen-1)-t] val = sin_gen(t) line = (date.date().isoformat(),)+((val,)*5) @@ -30,6 +30,6 @@ #print write_to.getvalue() write_to.close() -for i in xrange(NUMFILES): +for i in range(NUMFILES): genfile("ML4T-%03d.csv"%i,START,END) #genfile("foo.txt",datetime.datetime(2011,9,13),datetime.datetime(2012,9,13)) --- ./Examples/Validation.py (original) +++ ./Examples/Validation.py (refactored) @@ -14,80 +14,80 @@ # Printing what Python Version is installed : QSTK uses 2.7 import sys import platform -print "Python Details : " -print sys.version -print "Your Python Version is : ", platform.python_version() -print "QSTK uses Python 2.7.X (2.7.3 recommended and supported)" -print "Please make sure you're using the correct python version." -print +print("Python Details : ") +print(sys.version) +print("Your Python Version is : ", platform.python_version()) +print("QSTK uses Python 2.7.X (2.7.3 recommended and supported)") +print("Please make sure you're using the correct python version.") +print() # Printing the directory you are in import os -print "Current Directory : ", os.path.abspath('.') -print +print("Current Directory : ", os.path.abspath('.')) +print() # Printing files in the current directory. -print "Files in the current directory" +print("Files in the current directory") ls_files = os.listdir('.') for s_file in ls_files: - print s_file -print + print(s_file) +print() # Testing the dependencies # Testing numpy try: import numpy - print "Numpy is installed and the version used is : ", numpy.__version__ - print "Please make sure you're using version >= 1.6.1" + print("Numpy is installed and the version used is : ", numpy.__version__) + print("Please make sure you're using version >= 1.6.1") except ImportError: sys.exit("Error : Numpy can not be imported or not installed.") -print +print() # Testing matplotlib try: import matplotlib - print "Matplotlib is installed and version is : ", matplotlib.__version__ - print "Please make sure you're using version >= 1.1.0" + print("Matplotlib is installed and version is : ", matplotlib.__version__) + print("Please make sure you're using version >= 1.1.0") except ImportError: sys.exit("Error : Matplotlib can not be imported or not installed.") -print +print() # Testing Pandas try: import pandas - print "Pandas is installed and the version used is : ", pandas.__version__ - print "Please make sure you're using version >= 0.7.3" + print("Pandas is installed and the version used is : ", pandas.__version__) + print("Please make sure you're using version >= 0.7.3") except ImportError: sys.exit("Error : Pandas can not be imported or not installed.") -print +print() # Testing Scipy try: import scipy - print "Scipy is installed and the version used is : ", scipy.__version__ - print "Please make sure you're using version >= 0.9.0" + print("Scipy is installed and the version used is : ", scipy.__version__) + print("Please make sure you're using version >= 0.9.0") except ImportError: sys.exit("Error : Scipy can not be imported or not installed.") -print +print() # Testing Dateutil try: import dateutil - print "Dateutil is installed and the version used is : ", dateutil.__version__ - print "Please make sure you're using version == 1.5" + print("Dateutil is installed and the version used is : ", dateutil.__version__) + print("Please make sure you're using version == 1.5") except ImportError: sys.exit("Error : Dateutil can not be imported or not installed.") -print +print() # Testing Setuptools try: import setuptools - print "Setuptools is installed and the version used is : ", setuptools.__version__ - print "Please make sure you're using version >= 0.6" + print("Setuptools is installed and the version used is : ", setuptools.__version__) + print("Please make sure you're using version >= 0.6") except ImportError: sys.exit("Error : Setuptools can not be imported or not installed.") -print +print() # # Testing CVXOPT # try: @@ -100,40 +100,40 @@ # Testing datetime try: import datetime as dt - print "datetime is installed and can be imported" + print("datetime is installed and can be imported") except ImportError: sys.exit("Error : datetime can not be imported or not installed.") -print +print() # All dependencies are installed and working -print "All dependencies are installed and working\n" +print("All dependencies are installed and working\n") # Testing import of QSTK # Testing QSTK try: import QSTK - print "QSTK is installed and can be imported" + print("QSTK is installed and can be imported") except ImportError: sys.exit("Error : QSTK can not be imported or not installed.") -print +print() # Testing QSTK.qstkutil try: import QSTK.qstkutil.tsutil as tsu import QSTK.qstkutil.qsdateutil as du import QSTK.qstkutil.DataAccess as da - print "QSTK.qstkutil is installed and can be imported" + print("QSTK.qstkutil is installed and can be imported") except ImportError: exit("Error : QSTK.qstkutil can not be imported.") -print +print() # Testing QSTK.qstkstudy try: import QSTK.qstkstudy.EventProfiler - print "QSTK.qstkstudy is installed and can be imported" + print("QSTK.qstkstudy is installed and can be imported") except ImportError: exit("Error : QSTK.qstkstudy can not be imported.") -print +print() # Checking that the data installed is correct. # Start and End date of the charts @@ -149,29 +149,29 @@ c_dataobj = da.DataAccess('Yahoo', verbose=True) # Reading adjusted_close prices df_close = c_dataobj.get_data(ldt_timestamps, ls_symbols, "close") -print df_close -print -print "\nCorrect Output using the Default Data should be : " -print "Assignments use this data for grading" -print " MSFT GOOG" -print "2012-02-10 16:00:00 29.90 605.91" -print "2012-02-13 16:00:00 29.98 612.20"RefactoringTool: Refactored ./Examples/Basic/numpy-tutorial.py -print "2012-02-14 16:00:00 29.86 609.76" -print "2012-02-15 16:00:00 29.66 605.56" -print "2012-02-16 16:00:00 30.88 606.52" -print "2012-02-17 16:00:00 30.84 604.64" -print "2012-02-21 16:00:00 31.03 614.00" -print "2012-02-22 16:00:00 30.86 607.94" -print "2012-02-23 16:00:00 30.96 606.11" -print +print(df_close) +print() +print("\nCorrect Output using the Default Data should be : ") +print("Assignments use this data for grading") +print(" MSFT GOOG") +print("2012-02-10 16:00:00 29.90 605.91") +print("2012-02-13 16:00:00 29.98 612.20") +print("2012-02-14 16:00:00 29.86 609.76") +print("2012-02-15 16:00:00 29.66 605.56") +print("2012-02-16 16:00:00 30.88 606.52") +print("2012-02-17 16:00:00 30.84 604.64") +print("2012-02-21 16:00:00 31.03 614.00") +print("2012-02-22 16:00:00 30.86 607.94") +print("2012-02-23 16:00:00 30.96 606.11") +print() dt_test = dt.datetime(2012, 2, 15, 16) -print "Close price of MSFT on 2012/2/15 is : ", df_close['MSFT'].ix[dt_test] +print("Close price of MSFT on 2012/2/15 is : ", df_close['MSFT'].ix[dt_test]) if df_close['MSFT'].ix[dt_test] == 29.66: - print "Data looks correct as the close price in default data is 29.66" + print("Data looks correct as the close price in default data is 29.66") else: - print "Default data used in the assisgnments has close price as 29.66" + print("Default data used in the assisgnments has close price as 29.66") sys.exit("Error : Data has changed so does not match data used in Assignments") -print +print() -print "Everything works fine: You're all set." +print("Everything works fine: You're all set.") --- ./Examples/Basic/numpy-tutorial.py (original) +++ ./Examples/Basic/numpy-tutorial.py (refactored) @@ -35,33 +35,33 @@ # # ## Lets get started! -print "Importing numpy" +print("Importing numpy") import numpy as np ## This loads the numpy library and lets us refer to it by the shorthand "np", ## which is the convention used in the numpy documentation and in many ## online tutorials/examples -print "Creating arrays" +print("Creating arrays") ## Now lets make an array to play around with. You can make numpy arrays in ## a number of ways, ## Filled with zeros: zeroArray = np.zeros( (2,3) ) # [[ 0. 0. 0.] -print zeroArray # [ 0. 0. 0.]] +print(zeroArray) # [ 0. 0. 0.]] ## Or ones: oneArray = np.ones( (2,3) ) # [[ 1. 1. 1.] -print oneArray # [ 1. 1. 1.]] +print(oneArray) # [ 1. 1. 1.]] ## Or filled with junk: emptyArray = np.empty( (2,3) ) -print emptyArray +print(emptyArray) ## Note, emptyArray might look random, but it's just uninitialized which means ## you shouldn't count on it having any particular data in it, even random ## data! If you do want random data you can use random(): randomArray = np.random.random( (2,3) ) -print randomArray +print(randomArray) ## If you're following along and trying these commands out, you should have ## noticed that making randomArray took a lot longer than emptyArray. That's @@ -74,29 +74,29 @@ [4,5,6]] myArray = np.array(foo) # [[1 2 3] -print myArray # [4 5 6]] - - -print "Reshaping arrays" +print(myArray) # [4 5 6]] + + +print("Reshaping arrays") ## Of course, if you're typing out a range for a larger matrix, it's easier to ## use arange(...): rangeArray = np.arange(6,12).reshape( (2,3) ) # [[ 6 7 8] -print rangeArray # [ 9 10 11]] +print(rangeArray) # [ 9 10 11]] ## there's two things going on here. First, the arange(...) function returns a ## 1D array similar to what you'd get from using the built-in python function ## range(...) with the same arguments, except it returns a numpy array ## instead of a list. -print np.arange(6,12) # [ 6 7 8 9 10 11 12] +print(np.arange(6,12)) # [ 6 7 8 9 10 11 12] ## the reshape method takes the data in an existing array, and stuffs it into ## an array with the given shape and returns it. -print rangeArray.reshape( (3,2) ) # [[ 6 7] +print(rangeArray.reshape( (3,2) )) # [[ 6 7] # [ 8 9] # [10 11]] #The original array doesn't change though. -print rangeArray # [[ 6 7 8] +print(rangeArray) # [[ 6 7 8] # [ 9 10 11] ## When you use reshape(...) the total number of things in the array must stay @@ -106,69 +106,69 @@ squareArray = np.arange(1,10).reshape( (3,3) ) #this is fine, 9 elements -print "Accessing array elements" +print("Accessing array elements") ## Accessing an array is also pretty straight forward. You access a specific ## spot in the table by referring to its row and column inside square braces ## after the array: -print rangeArray[0,1] #7 +print(rangeArray[0,1]) #7 ## Note that row and column numbers start from 0, not 1! Numpy also lets you ## refer to ranges inside an array: -print rangeArray[0,0:2] #[6 7] -print squareArray[0:2,0:2] #[[1 2] # the top left corner of squareArray +print(rangeArray[0,0:2]) #[6 7] +print(squareArray[0:2,0:2]) #[[1 2] # the top left corner of squareArray # [4 5]] ## These ranges work just like slices and python lists. n:m:t specifies a range ## that starts at n, and stops before m, in steps of size t. If any of these ## are left off, they're assumed to be the start, the end+1, and 1 respectively -print squareArray[:,0:3:2] #[[1 3] #skip the middle column +print(squareArray[:,0:3:2]) #[[1 3] #skip the middle column # [4 6] # [7 9]] ## Also like python lists, you can assign values to specific positions, or ## ranges of values to slices -squareArray[0,:] = np.array(range(1,4)) #set the first row to 1,2,3 +squareArray[0,:] = np.array(list(range(1,4))) #set the first row to 1,2,3 squareArray[1,1] = 0 # set the middle spot to zero squareArray[2,:] = 1 # set the last row to ones -print squareArray # [[1 2 3] +print(squareArray) # [[1 2 3] # [4 0 6] # [1 1 1]] ## Something new to numpy arrays is indexing using an array of indices: fibIndices = np.array( [1, 1, 2, 3] ) randomRow = np.random.random( (10,1) ) # an array of 10 random numbers -print randomRow -print randomRow[fibIndices] # the first, first, second and third element of +print(randomRow) +print(randomRow[fibIndices]) # the first, first, second and third element of # randomRow ## You can also use an array of true/false values to index: boolIndices = np.array( [[ True, False, True], [False, True, False], [ True, False, True]] ) -print squareArray[boolIndices] # a 1D array with the selected values +print(squareArray[boolIndices]) # a 1D array with the selected values # [1 3 0 1 1] ## It gets a little more complicated with 2D (and higher) arrays. You need ## two index arrays for a 2D array: rows = np.array( [[0,0],[2,2]] ) #get the corners of our square array cols = np.array( [[0,2],[0,2]] ) -print squareArray[rows,cols] #[[1 3] +print(squareArray[rows,cols]) #[[1 3] # [1 1]] boolRows = np.array( [False, True, False] ) # just the middle row boolCols = np.array( [True, False, True] ) # Not the middle column -print squareArray[boolRows,boolCols] # [4 6] - -print "Operations on arrays" +print(squareArray[boolRows,boolCols]) # [4 6] + +print("Operations on arrays") ## One useful trick is to create a boolean matrix based on some test and use ## that as an index in order to get the elements of a matrix that pass the ## test: sqAverage = np.average(squareArray) # average(...) returns the average of all # the elements in the given array betterThanAverage = squareArray > sqAverage -print betterThanAverage #[[False False True]RefactoringTool: Refactored ./Examples/Basic/pandas-tutorial.py RefactoringTool: Refactored ./Examples/Basic/tutorial1.py RefactoringTool: Refactored ./Examples/Basic/tutorial2.py RefactoringTool: Refactored ./Examples/Basic/tutorial3.py RefactoringTool: Refactored ./Examples/Basic/tutorial4.py +print(betterThanAverage) #[[False False True] # [ True False True] # [False False False]] -print squareArray[betterThanAverage] #[3 4 6] +print(squareArray[betterThanAverage]) #[3 4 6] ## Indexing like this can also be used to assign values to elements of the ## array. This is particularly useful if you want to filter an array, say by @@ -188,24 +188,24 @@ # truncate them down to integers. clampedSqArray[ (squareArray-sqAverage) > sqStdDev ] = sqAverage+sqStdDev clampedSqArray[ (squareArray-sqAverage) < -sqStdDev ] = sqAverage-sqStdDev -print clampedSqArray # [[ 1. 2. 3. ] +print(clampedSqArray) # [[ 1. 2. 3. ] # [ 3.90272394 0.31949828 3.90272394] # [ 1. 1. 1. ]] ## Multiplying and dividing arrays by numbers does what you'd expect. It ## multiples/divides element-wise -print squareArray * 2 # [[ 2 4 6] +print(squareArray * 2) # [[ 2 4 6] # [ 8 0 12] # [ 2 2 2]] ## Addition works similarly: -print squareArray + np.ones( (3,3) ) #[[2 3 4] +print(squareArray + np.ones( (3,3) )) #[[2 3 4] # [5 1 7] # [2 2 2]] ## Multiplying two arrays together (of the same size) is also element wise -print squareArray * np.arange(1,10).reshape( (3,3) ) #[[ 1 4 9] +print(squareArray * np.arange(1,10).reshape( (3,3) )) #[[ 1 4 9] # [16 0 36] # [ 7 8 9]] @@ -213,7 +213,7 @@ ## from linear algebra: matA = np.array( [[1,2],[3,4]] ) matB = np.array( [[5,6],[7,8]] ) -print np.dot(matA,matB) #[[19 22] +print(np.dot(matA,matB)) #[[19 22] # [43 50]] ## And thats it! There's a lot more to the numpy library, and there are a few --- ./Examples/Basic/pandas-tutorial.py (original) +++ ./Examples/Basic/pandas-tutorial.py (refactored) @@ -20,67 +20,67 @@ for i in range(1, 6): ldt_timestamps.append(dt.datetime(2011, 1, i, 16)) -print "The index we created has the following dates : " -print ldt_timestamps -print +print("The index we created has the following dates : ") +print(ldt_timestamps) +print() ## TimeSeries ts_single_value = pd.TimeSeries(0.0, index=ldt_timestamps) -print "A timeseries initialized to one single value : " +print("A timeseries initialized to one single value : ") na_vals = np.arange(len(ldt_timestamps)) -print "Dummy initialized array : " -print na_vals -print +print("Dummy initialized array : ") +print(na_vals) +print() ts_array = pd.TimeSeries(na_vals, index=ldt_timestamps) -print "A timeseries initialized using a numpy array : " -print ts_array -print +print("A timeseries initialized using a numpy array : ") +print(ts_array) +print() -print "Reading the timeseries for a particular date" -print "Date : ", ldt_timestamps[1] -print "Value : ", ts_array[ldt_timestamps[1]] -print +print("Reading the timeseries for a particular date") +print("Date : ", ldt_timestamps[1]) +print("Value : ", ts_array[ldt_timestamps[1]]) +print() -print "Initializing a list of symbols : " +print("Initializing a list of symbols : ") ls_symbols = ['AAPL', 'GOOG', 'MSFT', 'IBM'] -print ls_symbols -print +print(ls_symbols) +print() -print "Initializing a dataframe with one value : " +print("Initializing a dataframe with one value : ") df_single = pd.DataFrame(index=ldt_timestamps, columns=ls_symbols) df_single = df_single.fillna(0.0) -print df_single -print +print(df_single) +print() -print "Initializing a dataframe with a numpy array : " +print("Initializing a dataframe with a numpy array : ") na_vals_2 = np.random.randn(len(ldt_timestamps), len(ls_symbols)) df_vals = pd.DataFrame(na_vals_2, index=ldt_timestamps, columns=ls_symbols) -print df_vals -print +print(df_vals) +print() -print "Access the timeseries of a particular symbol : " -print df_vals[ls_symbols[1]] -print +print("Access the timeseries of a particular symbol : ") +print(df_vals[ls_symbols[1]]) +print() -print "Access the timeseries of a particular date : " -print df_vals.ix[ldt_timestamps[1]] -print +print("Access the timeseries of a particular date : ") +print(df_vals.ix[ldt_timestamps[1]]) +print() -print "Access the value for a specific symbol on a specific date: " -print df_vals[ls_symbols[1]].ix[ldt_timestamps[1]] -print +print("Access the value for a specific symbol on a specific date: ") +print(df_vals[ls_symbols[1]].ix[ldt_timestamps[1]]) +print() -print "Reindexing the dataframe" +print("Reindexing the dataframe") ldt_new_dates = [dt.datetime(2011, 1, 3, 16), dt.datetime(2011, 1, 5, 16), dt.datetime(2011, 1, 7, 16)] ls_new_symbols = ['AAPL', 'IBM', 'XOM'] df_new = df_vals.reindex(index=ldt_new_dates, columns=ls_new_symbols) -print df_new -print "Observe that reindex carried over whatever values it could find and set the rest to NAN" -print +print(df_new) +print("Observe that reindex carried over whatever values it could find and set the rest to NAN") +print() -print "For pandas rolling statistics please refer : http://pandas.pydata.org/pandas-docs/dev/computation.html#moving-rolling-statistics-moments" +print("For pandas rolling statistics please refer : http://pandas.pydata.org/pandas-docs/dev/computation.html#moving-rolling-statistics-moments") --- ./Examples/Basic/tutorial1.py (original) +++ ./Examples/Basic/tutorial1.py (refactored) @@ -21,7 +21,7 @@ import matplotlib.pyplot as plt import pandas as pd -print "Pandas Version", pd.__version__ +print("Pandas Version", pd.__version__) def main(): @@ -49,7 +49,7 @@ # Reading the data, now d_data is a dictionary with the keys above. # Timestamps and symbols are the ones that were specified before. ldf_data = c_dataobj.get_data(ldt_timestamps, ls_symbols, ls_keys) - d_data = dict(zip(ls_keys, ldf_data)) + d_data = dict(list(zip(ls_keys, ldf_data))) # Filling the data for NAN for s_key in ls_keys: --- ./Examples/Basic/tutorial2.py (original) +++ ./Examples/Basic/tutorial2.py (refactored) @@ -33,11 +33,11 @@ ls_symbols = ['$SPX', 'XOM', 'GOOG', 'GLD'] # Printing the first 5 rows - print "First 5 rows of Price Data:" - print na_price[:5, :] - print - print "First 5 rows of Dates:" - print na_dates[:5, :] + print("First 5 rows of Price Data:") + print(na_price[:5, :]) + print() + print("First 5 rows of Dates:") + print(na_dates[:5, :]) # Creating the timestamps from dates read ldt_timestamps = [] --- ./Examples/Basic/tutorial3.py (original) +++ ./Examples/Basic/tutorial3.py (refactored) @@ -28,11 +28,11 @@ # Reading the portfolio na_portfolio = np.loadtxt('tutorial3portfolio.csv', dtype='S5,f4', delimiter=',', comments="#", skiprows=1) - print na_portfolio + print(na_portfolio) # Sorting the portfolio by symbol name na_portfolio = sorted(na_portfolio, key=lambda x: x[0]) - print na_portfolio + print(na_portfolio) # Create two list for symbol names and allocation ls_port_syms = [] @@ -48,7 +48,7 @@ ls_bad_syms = list(set(ls_port_syms) - set(ls_all_syms)) if len(ls_bad_syms) != 0: - print "Portfolio contains bad symbols : ", ls_bad_syms + print("Portfolio contains bad symbols : ", ls_bad_syms) for s_sym in ls_bad_syms: i_index = ls_port_syms.index(s_sym) @@ -70,7 +70,7 @@ # Reading the data, now d_data is a dictionary with the keys above. # Timestamps and symbols are the ones that were specified before. ldf_data = c_dataobj.get_data(ldt_timestamps, ls_port_syms, ls_keys) - d_data = dict(zip(ls_keys, ldf_data)) + d_data = dict(list(zip(ls_keys, ldf_data))) # Copying close price into separate dataframe to find rets df_rets = d_data['close'].copy() --- ./Examples/Basic/tutorial4.py (original) +++ ./Examples/Basic/tutorial4.py (refactored)RefactoringTool: Refactored ./Examples/Basic/tutorial5.py RefactoringTool: No changes to ./Examples/Basic/tutorial8.py RefactoringTool: Refactored ./Examples/DataAccess/setexample.py RefactoringTool: Refactored ./Examples/EventProfiler/tutorial.py RefactoringTool: Refactored ./Examples/FeatureSearch/code.py RefactoringTool: No changes to ./Examples/FeatureSearch/functions.py RefactoringTool: Refactored ./Examples/Features/featuretest.py RefactoringTool: No changes to ./QSTK/__init__.py RefactoringTool: Refactored ./QSTK/qstkfeat/__init__.py RefactoringTool: No changes to ./QSTK/qstkfeat/classes.py RefactoringTool: No changes to ./QSTK/qstkfeat/features.py RefactoringTool: Refactored ./QSTK/qstkfeat/featutil.py @@ -21,7 +21,7 @@ import matplotlib.pyplot as plt import pandas as pd import numpy as np -import cPickle +import pickle def main(): @@ -72,7 +72,7 @@ # Create the outpul pickle file for the dataframe. output = open('allocation.pkl', 'wb') - cPickle.dump(df_alloc, output) + pickle.dump(df_alloc, output) if __name__ == '__main__': main() --- ./Examples/Basic/tutorial5.py (original) +++ ./Examples/Basic/tutorial5.py (refactored) @@ -80,12 +80,12 @@ f_slippage=0.0005, f_minimumcommision=5.0, f_commision_share=0.0035, i_target_leverage=1, f_rate_borrow=3.5, log="transaction.csv") - print "Simulated Fund Time Series : " - print ts_funds - print "Transaction Costs : " - print "Commissions : ", f_commission - print "Slippage : ", f_slippage - print "Borrowing Cost : ", f_borrow_cost + print("Simulated Fund Time Series : ") + print(ts_funds) + print("Transaction Costs : ") + print("Commissions : ", f_commission) + print("Slippage : ", f_slippage) + print("Borrowing Cost : ", f_borrow_cost) if __name__ == '__main__': main() --- ./Examples/DataAccess/setexample.py (original) +++ ./Examples/DataAccess/setexample.py (refactored) @@ -30,11 +30,11 @@ # Getting a list of symbols from Lists # Lists : S&P5002012, S&P5002008, Index ls_symbols = c_dataobj.get_symbols_from_list('sp5002012') - print "Symbols from the list : ", ls_symbols + print("Symbols from the list : ", ls_symbols) # All symbols possible ls_all_syms = c_dataobj.get_all_symbols() - print "All symbols : ", ls_all_syms + print("All symbols : ", ls_all_syms) ls_syms_toread = ['AAPL', 'GOOG'] @@ -58,7 +58,7 @@ # But a path can be provided using either an environment variable or # as a prarameter. df_close = c_dataobj.get_data(ldt_timestamps, ls_syms_toread, "close") - print df_close + print(df_close) if __name__ == '__main__': --- ./Examples/EventProfiler/tutorial.py (original) +++ ./Examples/EventProfiler/tutorial.py (refactored) @@ -44,7 +44,7 @@ df_close = d_data['close'] ts_market = df_close['SPY'] - print "Finding Events" + print("Finding Events") # Creating an empty dataframe df_events = copy.deepcopy(df_close) @@ -82,7 +82,7 @@ ls_keys = ['open', 'high', 'low', 'close', 'volume', 'actual_close'] ldf_data = dataobj.get_data(ldt_timestamps, ls_symbols, ls_keys) - d_data = dict(zip(ls_keys, ldf_data)) + d_data = dict(list(zip(ls_keys, ldf_data))) for s_key in ls_keys: d_data[s_key] = d_data[s_key].fillna(method='ffill') @@ -90,7 +90,7 @@ d_data[s_key] = d_data[s_key].fillna(1.0) df_events = find_events(ls_symbols, d_data) - print "Creating Study" + print("Creating Study") ep.eventprofiler(df_events, d_data, i_lookback=20, i_lookforward=20, s_filename='MyEventStudy.pdf', b_market_neutral=True, b_errorbars=True, s_market_sym='SPY') --- ./Examples/FeatureSearch/code.py (original) +++ ./Examples/FeatureSearch/code.py (refactored) @@ -37,7 +37,7 @@ lsSym = list(set(lsSymTrain).union(set(lsSymTest))) - dtStart = dt.datetime(2008,01,01) + dtStart = dt.datetime(2008,0o1,0o1) dtEnd = dt.datetime(2010,12,31) norObj = da.DataAccess('Norgate') @@ -59,8 +59,8 @@ for temp in ldfDataTest: temp.fillna(method="ffill").fillna(method="bfill") - dDataTrain = dict(zip(lsKeys, ldfDataTrain)) - dDataTest = dict(zip(lsKeys, ldfDataTest)) + dDataTrain = dict(list(zip(lsKeys, ldfDataTrain))) + dDataTest = dict(list(zip(lsKeys, ldfDataTest))) ''' Imported functions from qstkfeat.features, NOTE: last function is classification ''' lfcFeatures = [ featMA, featMA, featMA, featMA, featMA, featMA, \ @@ -98,9 +98,9 @@ ldfFeaturesTest = ftu.applyFeatures( dDataTest, lfcFeatures, ldArgs, '$SPX') ''' Pick Test and Training Points ''' - dtStartTrain = dt.datetime(2008,01,01) + dtStartTrain = dt.datetime(2008,0o1,0o1) dtEndTrain = dt.datetime(2009,12,31) - dtStartTest = dt.datetime(2010,01,01) + dtStartTest = dt.datetime(2010,0o1,0o1) dtEndTest = dt.datetime(2010,12,31) ''' Stack all information into one Numpy array ''' @@ -113,7 +113,7 @@ ftu.normQuery( naFeatTest[:,:-1], ltWeights ) - lFeatures = range(0,len(lfcFeatures)-1) + lFeatures = list(range(0,len(lfcFeatures)-1)) classLabelIndex = len(lfcFeatures) - 1 funccall = sys.argv[1] + '(naFeatTrain,naFeatTest,lFeatures,classLabelIndex)' --- ./Examples/Features/featuretest.py (original) +++ ./Examples/Features/featuretest.py (refactored) @@ -33,7 +33,7 @@ @summary: Takes testing and training data and computes average error over the test set This is compared to a baseline guess which is just the average of the training set ''' - llRange = range(5,51,5) + llRange = list(range(5,51,5)) lfRes = [] for lK in llRange: @@ -70,7 +70,7 @@ #lsSym = ['XOM'] ''' Get data for 2009-2010 ''' - dtStart = dt.datetime(2010,8,01) + dtStart = dt.datetime(2010,8,0o1) dtEnd = dt.datetime(2010,12,31) norObj = da.DataAccess('Yahoo') @@ -78,7 +78,7 @@ lsKeys = ['open', 'high', 'low', 'close', 'volume'] ldfData = norObj.get_data( ldtTimestamps, lsSym, lsKeys ) - dData = dict(zip(lsKeys, ldfData)) + dData = dict(list(zip(lsKeys, ldfData))) ''' Imported functions from qstkfeat.features, NOTE: last function is classification ''' lfcFeatures = [ featMA, featRSI, class_fut_ret ] --- ./QSTK/qstkfeat/__init__.py (original) +++ ./QSTK/qstkfeat/__init__.py (refactored) @@ -1,3 +1,3 @@ -from classes import * -from featutil import * -from features import * +from .classes import * +from .featutil import * +from .features import * --- ./QSTK/qstkfeat/featutil.py (original) +++ ./QSTK/qstkfeat/featutil.py (refactored) @@ -60,7 +60,7 @@ #print dfCloseMark #Make all data market relative, except for volume - for sKey in dData.keys(): + for sKey in list(dData.keys()): # Don't calculate market relative volume, but still copy it over if sKey == 'volume': @@ -114,8 +114,8 @@ if 'MR' in ldArgs[i]: if ldArgs[i]['MR'] == False: - print 'Warning, setting MR to false will still be Market Relative',\ - 'simply do not include MR key in args' + print('Warning, setting MR to false will still be Market Relative',\ + 'simply do not include MR key in args') if sMarketRel == None: raise AssertionError('Functions require market relative stock but sMarketRel=None') @@ -244,7 +244,7 @@ 'FEAT' == sDelNan and not math.isnan( np.sum(naStkData[i,:-1]) ): llValidRows.append(i) elif bShowRemoved: - print 'Removed', sStock, naStkData[i,:] + print('Removed', sStock, naStkData[i,:]) naStkData = naStkData[llValidRows,:] @@ -295,7 +295,7 @@ fRange = fFeatMax - fFeatMin if fRange == 0: - print 'Warning, bad query data range' + print('Warning, bad query data range') fMult = 1. fShigt = 0. else: @@ -430,7 +430,7 @@ lsKeys = ['open', 'high', 'low', 'close', 'volume', 'actual_close'] ldfData = norObj.get_data( ldtTimestamps, lsSym, lsKeys ) - dData = dict(zip(lsKeys, ldfData)) + dData = dict(list(zip(lsKeys, ldfData))) dfPrice = dData['close'] @@ -439,13 +439,13 @@ ''' Generate a list of DataFrames, one for each feature, with the same index/column structure as price data ''' dtStart = dt.datetime.now() ldfFeatures = applyFeatures( dData, [fcFeature], [dArgs], sMarketRel='$SPX' ) - print 'Runtime:', dt.datetime.now() - dtStart + print('Runtime:', dt.datetime.now() - dtStart) ''' Use last 3 months of index, to avoid lookback nans ''' dfPrint = ldfFeatures[0]['GOOG']RefactoringTool: Refactored ./QSTK/qstklearn/1knn.py RefactoringTool: Refactored ./QSTK/qstklearn/fastknn.py RefactoringTool: Refactored ./QSTK/qstklearn/gendata.py RefactoringTool: Refactored ./QSTK/qstklearn/hmm.py - print 'GOOG values:', dfPrint.values - print 'GOOG Sum:', dfPrint.ix[dfPrint.notnull()].sum() + print('GOOG values:', dfPrint.values) + print('GOOG Sum:', dfPrint.ix[dfPrint.notnull()].sum()) for sSym in lsSym: plt.subplot( 211 ) @@ -483,7 +483,7 @@ lsKeys = ['open', 'high', 'low', 'close', 'volume', 'actual_close'] ldtTimestamps = du.getNYSEdays( dtStart, dtEnd, dtTimeofday) ldfData = daData.get_data( ldtTimestamps, lsSym, lsKeys) - dData = dict(zip(lsKeys, ldfData)) + dData = dict(list(zip(lsKeys, ldfData))) '''loop through features''' ltResults = [] @@ -497,7 +497,7 @@ '''print out result''' for tResult in ltResults: - print tResult[1], ':', tResult[0] + print(tResult[1], ':', tResult[0]) return ltResults --- ./QSTK/qstklearn/1knn.py (original) +++ ./QSTK/qstklearn/1knn.py (refactored) @@ -91,7 +91,7 @@ plt.subplot(312) - plt.plot( range( len(lfOneKnn) ), lfOneKnn ) + plt.plot( list(range( len(lfOneKnn))), lfOneKnn ) plt.ylabel( '1-KNN Value' ) #plt.xlabel( 'Distribution Merge' ) @@ -100,7 +100,7 @@ plt.subplot(313) - plt.plot( range( len(lf5Knn) ), lf5Knn ) + plt.plot( list(range( len(lf5Knn))), lf5Knn ) plt.ylabel( '% Correct Classification' ) #plt.xlabel( 'Distribution Merge' ) @@ -201,8 +201,8 @@ naBoth[500:,0] = naBoth[500:,0] - .1 - print 'Runtime OneKnn:', cOneRuntime - print 'Runtime 5-KNN:', cKnnRuntime + print('Runtime OneKnn:', cOneRuntime) + print('Runtime 5-KNN:', cKnnRuntime) _plotResults( naTest1, naTest2, lfResults, lfKnnResults ) ''' Tests performance of 1-KNN ''' --- ./QSTK/qstklearn/fastknn.py (original) +++ ./QSTK/qstklearn/fastknn.py (refactored) @@ -64,7 +64,7 @@ picks the first 'num_anchors' as new anchors. """ if selection_type == 'random': - self.anchors = range(len(self.training_data)) + self.anchors = list(range(len(self.training_data))) random.shuffle(self.anchors) self.anchors = self.anchors[0:self.num_anchors] self.kdt = scipy.spatial.kdtree.KDTree(numpy.array(self.training_data)[self.anchors,:]) @@ -92,7 +92,7 @@ dist = self.distfun(data,self.training_data[a]) bisect.insort(self.data_by_anchors[a],(dist,new_idx)) elif len(data.shape)>1: - for i in xrange(len(data)): + for i in range(len(data)): thing = data[i] new_idx = len(self.training_data) self.training_data.append(thing) @@ -138,7 +138,7 @@ neighbors = list() maxd = None maxd_idx = 0 - for i in xrange(0,len(anchor_list)): + for i in range(0,len(anchor_list)): nextpnt_dist = self.distfun(point,self.training_data[anchor_list[i][1]]) self.num_checks += 1 nextthing = (nextpnt_dist,anchor_list[i][1]) @@ -177,10 +177,10 @@ else: tmp = 0 class_count[clss] = tmp+1 - bleh = max(class_count.iteritems(),key=lambda item:item[1]) + bleh = max(iter(class_count.items()),key=lambda item:item[1]) if dumdumcheck and bleh[1] == 1: - print "aHAH!" - print point + print("aHAH!") + print(point) rv = bleh[0] elif method == 'mean': return sum([self.data_classes[n[1]] for n in neighbors])/float(k) @@ -195,7 +195,7 @@ #first line is the name of the attributes, strip it off bar = bar[1:] #trim, split, and cast the data. seperator is ';' - return [map(float,thing.strip().split(';')) for thing in bar] + return [list(map(float,thing.strip().split(';'))) for thing in bar] def testwine(): wqred = dataifywine('wine/winequality-red.csv') + dataifywine('wine/winequality-white.csv') @@ -203,14 +203,14 @@ leftout = int(len(wqred)*leftoutperc) testing = wqred[:leftout] training = wqred[leftout:] - print "Training:",len(training) - print "Testing:",len(testing) + print("Training:",len(training)) + print("Testing:",len(testing)) foo = FastKNN(10) foo.addEvidence(numpy.array([thing[:-1] for thing in training]), [thing[-1] for thing in training]) knn.addEvidence(numpy.array(training)) total = 0 correct = 0 - for x in xrange(len(testing)): + for x in range(len(testing)): thing = testing[x] guess = foo.query(numpy.array(thing[:-1]),3) #realknn = knn.query(numpy.array([thing[:-1],]),3,method='mean') @@ -221,15 +221,15 @@ correct += 1 total += 1 if total % 50 == 0: - print total,'/',len(testing) - print correct,"/",total,":",float(correct)/float(total) - print "Average checks per query:", float(foo.num_checks)/float(total) + print(total,'/',len(testing)) + print(correct,"/",total,":",float(correct)/float(total)) + print("Average checks per query:", float(foo.num_checks)/float(total)) def testspiral(): - for leftout in xrange(1,11): - print "Fold",leftout + for leftout in range(1,11): + print("Fold",leftout) foo = FastKNN(10) - for x in xrange(1,11): + for x in range(1,11): if x != leftout: somedata = open("spiral/spiralfold%d.txt" % x) pnts = list() @@ -256,13 +256,13 @@ if guess == pbbbt: correct += 1 total += 1 - print correct,"/",total,":",float(correct)/float(total) - print "Average number of checks per query:", - print float(foo.num_checks)/float(total) + print(correct,"/",total,":",float(correct)/float(total)) + print("Average number of checks per query:", end=' ') + print(float(foo.num_checks)/float(total)) def getflatcsv(fname): inf = open(fname) - return numpy.array([map(float,s.strip().split(',')) for s in inf.readlines()]) + return numpy.array([list(map(float,s.strip().split(','))) for s in inf.readlines()]) def testgendata(): anchors = 200 @@ -276,13 +276,13 @@ data = getflatcsv(fname) foo.addEvidence(data[:,:-1],data[:,-1]) foo.num_checks = 0 - for x in xrange(querys): + for x in range(querys): pnt = numpy.array(gendata.gensingle(d,bnds,clsses)) foo.query(pnt[:-1]) if x % 50 == 0: - print float(foo.num_checks)/float(x+1), - print x,"/",querys - print "Average # queries:", float(foo.num_checks)/float(querys) + print(float(foo.num_checks)/float(x+1), end=' ') + print(x,"/",querys) + print("Average # queries:", float(foo.num_checks)/float(querys)) --- ./QSTK/qstklearn/gendata.py (original) +++ ./QSTK/qstklearn/gendata.py (refactored) @@ -1,16 +1,16 @@ import random def gendata(N,d,bounds,clsses,fname): outf = open(fname,'w') - for i in xrange(N): + for i in range(N): pnt = [None,]*(d+1) - for x in xrange(d): + for x in range(d): pnt[x] = random.uniform(bounds[x][0],bounds[x][1]) pnt[d] = random.choice(clsses) outf.write(", ".join(map(str,pnt))+"\n") outf.close() def gensingle(d,bounds,clsses): pnt = [None,]*(d+1) - for x in xrange(d): + for x in range(d): pnt[x] = random.uniform(bounds[x][0],bounds[x][1]) pnt[d] = random.choice(clsses) return pnt --- ./QSTK/qstklearn/hmm.py (original) +++ ./QSTK/qstklearn/hmm.py (refactored) @@ -26,11 +26,11 @@ first t symbols. """ alpha = numpy.zeros((len(observations),numstates),dtype=elem_size) - for x in xrange(numstates): + for x in range(numstates): alpha[0][x] = stateprior[x]*emission[x][observations[0]] - for t in xrange(1,len(observations)): - for j in xrange(numstates): - for i in xrange(numstates): + for t in range(1,len(observations)): + for j in range(numstates): + for i in range(numstates): alpha[t][j] += alpha[t-1][i]*transition[i][j] alpha[t][j] *= emission[j][observations[t]] return alpha @@ -51,11 +51,11 @@ symbols from t+1 to the end (T). """ beta = numpy.zeros((len(observations),numstates),dtype=elem_size) - for s in xrange(numstates): + for s in range(numstates): beta[len(observations)-1][s] = 1. - for t in xrange(len(observations)-2,-1,-1): - for i in xrange(numstates): - for j in xrange(numstates): + for t in range(len(observations)-2,-1,-1): + for i in range(numstates): + for j in range(numstates): beta[t][i] += transition[i][j]*emission[j][observations[t+1]]*beta[t+1][j] return beta @@ -72,18 +72,18 @@ if beta is None: beta = calcbeta(transition,emission,observations,numstates,elem_size) xi = numpy.zeros((len(observations),numstates,numstates),dtype=elem_size)RefactoringTool: Refactored ./QSTK/qstklearn/kdtknn.py RefactoringTool: Refactored ./QSTK/qstklearn/mldiagnostics.py RefactoringTool: Refactored ./QSTK/qstklearn/parallelknn.py RefactoringTool: Refactored ./QSTK/qstksim/__init__.py RefactoringTool: Refactored ./QSTK/qstksim/tradesim.py RefactoringTool: Refactored ./QSTK/qstksim/tests/test_tradesim.py - for t in xrange(len(observations)-1): + for t in range(len(observations)-1): denom = 0.0 - for i in xrange(numstates): - for j in xrange(numstates): + for i in range(numstates): + for j in range(numstates): thing = 1.0 thing *= alpha[t][i] thing *= transition[i][j] thing *= emission[j][observations[t+1]] thing *= beta[t+1][j] denom += thing - for i in xrange(numstates): - for j in xrange(numstates): + for i in range(numstates): + for j in range(numstates): numer = 1.0 numer *= alpha[t][i] numer *= transition[i][j] @@ -100,8 +100,8 @@ in state 'i' at time 't' given the full observation sequence. """ gamma = numpy.zeros((seqlen,numstates),dtype=elem_size) - for t in xrange(seqlen): - for i in xrange(numstates): + for t in range(seqlen): + for i in range(numstates): gamma[t][i] = sum(xi[t][i]) return gamma @@ -114,20 +114,20 @@ gamma = calcgamma(xi,len(observations),numstates,elem_size) newprior = gamma[0] newtrans = numpy.zeros((numstates,numstates),dtype=elem_size) - for i in xrange(numstates): - for j in xrange(numstates): + for i in range(numstates): + for j in range(numstates): numer = 0.0 denom = 0.0 - for t in xrange(len(observations)-1): + for t in range(len(observations)-1): numer += xi[t][i][j] denom += gamma[t][i] newtrans[i][j] = numer/denom newemiss = numpy.zeros( (numstates,numsym) ,dtype=elem_size) - for j in xrange(numstates): - for k in xrange(numsym): + for j in range(numstates): + for k in range(numsym): numer = 0.0 denom = 0.0 - for t in xrange(len(observations)): + for t in range(len(observations)): if observations[t] == k: numer += gamma[t][j] denom += gamma[t][j] @@ -219,7 +219,7 @@ processed. """ if len(newData.shape) == 1: - for i in xrange(iterations): + for i in range(iterations): newp,newt,newe = baumwelchstep( self.prior, \ self.transition_matrix, \ self.emission_matrix, \ @@ -236,7 +236,7 @@ self.transition_matrix = newt self.emission_matrix = newe else: - for i in xrange(iterations): + for i in range(iterations): for sequence in newData: newp,newt,newe = baumwelchstep( self.prior, \ self.transition_matrix, \ --- ./QSTK/qstklearn/kdtknn.py (original) +++ ./QSTK/qstklearn/kdtknn.py (refactored) @@ -96,15 +96,15 @@ na_dist, na_neighbors = self.kdt.query(points,k) - n_clsses = map(lambda rslt: map(lambda p: p[-1], self.data[rslt]), na_neighbors) + n_clsses = [[p[-1] for p in self.data[rslt]] for rslt in na_neighbors] #print n_clsses if method=='mode': - return map(lambda x: scipy.stats.stats.mode(x)[0],n_clsses)[0] + return [scipy.stats.stats.mode(x)[0] for x in n_clsses][0] elif method=='mean': - return numpy.array(map(lambda x: numpy.mean(x),n_clsses)) + return numpy.array([numpy.mean(x) for x in n_clsses]) elif method=='median': - return numpy.array(map(lambda x: numpy.median(x),n_clsses)) + return numpy.array([numpy.median(x) for x in n_clsses]) elif method=='raw': return numpy.array(n_clsses) elif method=='all': @@ -112,7 +112,7 @@ def getflatcsv(fname): inf = open(fname) - return numpy.array([map(float,s.strip().split(',')) for s in inf.readlines()]) + return numpy.array([list(map(float,s.strip().split(','))) for s in inf.readlines()]) def testgendata(): fname = 'test2.dat' @@ -126,12 +126,12 @@ kdt.addEvidence(data) kdt.rebuildKDT() stime = time.time() - for x in xrange(querys): + for x in range(querys): pnt = numpy.array(gendata.gensingle(d,bnds,clsses)) reslt = kdt.query(numpy.array([pnt[:-1]])) - print pnt,"->",reslt + print(pnt,"->",reslt) etime = time.time() - print etime-stime,'/',querys,'=',(etime-stime)/float(querys),'avg wallclock time per query' + print(etime-stime,'/',querys,'=',(etime-stime)/float(querys),'avg wallclock time per query') #foo.addEvidence(data[:,:-1],data[:,-1]) #foo.num_checks = 0 #for x in xrange(querys): --- ./QSTK/qstklearn/mldiagnostics.py (original) +++ ./QSTK/qstklearn/mldiagnostics.py (refactored) @@ -50,7 +50,7 @@ savefig(filename,format='pdf') def runDiagnostics(self,filename): - for i,lambdaVal in zip(range(len(self.lambdaArray)),self.lambdaArray): + for i,lambdaVal in zip(list(range(len(self.lambdaArray))),self.lambdaArray): learner = copy.copy(self.learner())# is deep copy required # setLambda needs to be a supported function for all ML strategies. learner.setLambda(lambdaVal) --- ./QSTK/qstklearn/parallelknn.py (original) +++ ./QSTK/qstklearn/parallelknn.py (refactored) @@ -90,15 +90,15 @@ temp2= np.zeros (data.shape[0]) if (allQueries.shape[1] != (data.shape[1] -1) ): - print "ERROR: Data and query points are not of the same dimension" + print("ERROR: Data and query points are not of the same dimension") raise ValueError #if ends if (k < 1): - print "ERROR: K should be >= 1" + print("ERROR: K should be >= 1") raise ValueError #if ends if (k > data.shape[0]): - print "ERROR: K is greater than the total number of data points." + print("ERROR: K is greater than the total number of data points.") raise ValueError #if ends @@ -151,8 +151,8 @@ try: data= np.vstack ((data, newData)) except Exception as ex: - print "Type of exception: "+ str(type (ex)) - print "args: " + str(ex.args) + print("Type of exception: "+ str(type (ex))) + print("args: " + str(ex.args)) #except ends #addEvidence ends @@ -171,11 +171,11 @@ #answer = query(a, 5, 'mean') for i in range (0, answer.shape[0]): - print answer[i] + print(answer[i]) #end for - print "The answer is: " + print("The answer is: ") if __name__ == '__main__': main (sys.argv) --- ./QSTK/qstksim/__init__.py (original) +++ ./QSTK/qstksim/__init__.py (refactored) @@ -11,4 +11,4 @@ @summary: Init for simulator code ''' -from tradesim import _calculate_leverage, tradesim, tradesim_comb +from .tradesim import _calculate_leverage, tradesim, tradesim_comb --- ./QSTK/qstksim/tradesim.py (original) +++ ./QSTK/qstksim/tradesim.py (refactored) @@ -161,12 +161,12 @@ """ if alloc.index[-1] > df_historic.index[-1]: - print "Historical Data not sufficient" + print("Historical Data not sufficient") indices, = np.where(alloc.index <= df_historic.index[-1]) alloc = alloc.reindex(index = alloc.index[indices]) if alloc.index[0] < df_historic.index[0]: - print "Historical Data not sufficient" + print("Historical Data not sufficient") indices, = np.where(alloc.index >= df_historic.index[0]) alloc = alloc.reindex(index = alloc.index[indices]) @@ -176,7 +176,7 @@ #write column headings if log!="false": - print "writing transaction log to "+log + print("writing transaction log to "+log) log_file.write("Symbol,Company Name,Txn Type,Txn Date/Time, Gross Leverage, Net Leverage,# Shares,Price,Txn Value,Portfolio # Shares,Portfolio Value,Commission,Slippage(10BPS),Comments\n") #a dollar is always worth a dollar @@ -474,4 +474,4 @@ f_commision_share, i_target_leverage, f_rate_borrow, log, b_exposure) if __name__ == '__main__': - print "Done" + print("Done") --- ./QSTK/qstksim/tests/test_tradesim.py (original) +++ ./QSTK/qstksim/tests/test_tradesim.py (refactored) @@ -81,11 +81,11 @@ qstksim.tradesim( self.df_alloc, self.df_close, 10000, 1, True, 0.02, 5, 0.02 ) - print 'Commision Costs : ' + str(f_commision) - print 'Slippage : ' + str(f_slippage) - print 'Short Borrowing Cost : ' + str(f_borrow) - print 'Leverage : ' - print ts_leverageRefactoringTool: Refactored ./QSTK/qstksim/tests/test_tradesim_SPY.py RefactoringTool: Refactored ./QSTK/qstksim/tests/test_tradesim_SPY_Short.py RefactoringTool: Refactored ./QSTK/qstkstrat/strategies.py RefactoringTool: Refactored ./QSTK/qstkstudy/EventProfiler.py RefactoringTool: Refactored ./QSTK/qstkstudy/Events.py RefactoringTool: Refactored ./QSTK/qstkstudy/study.py RefactoringTool: Refactored ./QSTK/qstktest/testDataAccess.py + print('Commision Costs : ' + str(f_commision)) + print('Slippage : ' + str(f_slippage)) + print('Short Borrowing Cost : ' + str(f_borrow)) + print('Leverage : ') + print(ts_leverage) np.testing.assert_approx_equal(df_funds[-1], \ 10000 * self.i_open_result, significant = 3) self.assertTrue(True) --- ./QSTK/qstksim/tests/test_tradesim_SPY.py (original) +++ ./QSTK/qstksim/tests/test_tradesim_SPY.py (refactored) @@ -71,11 +71,11 @@ qstksim.tradesim( self.df_alloc, self.df_close, 10000, 1, True, 0.02, 5, 0.02) - print 'Commision Costs : ' + str(f_commision) - print 'Slippage : ' + str(f_slippage) - print 'Short Borrowing Cost : ' + str(f_borrow) - print 'Leverage : ' - print ts_leverage + print('Commision Costs : ' + str(f_commision)) + print('Slippage : ' + str(f_slippage)) + print('Short Borrowing Cost : ' + str(f_borrow)) + print('Leverage : ') + print(ts_leverage) np.testing.assert_approx_equal(df_funds[-1], \ 10000 * self.i_open_result, significant = 3) self.assertTrue(True) --- ./QSTK/qstksim/tests/test_tradesim_SPY_Short.py (original) +++ ./QSTK/qstksim/tests/test_tradesim_SPY_Short.py (refactored) @@ -71,11 +71,11 @@ qstksim.tradesim( self.df_alloc, self.df_close, 10000, 1, True, 0.02, 5, 0.02) - print 'Commision Costs : ' + str(f_commision) - print 'Slippage : ' + str(f_slippage) - print 'Short Borrowing Cost : ' + str(f_borrow) - print 'Leverage : ' - print ts_leverage + print('Commision Costs : ' + str(f_commision)) + print('Slippage : ' + str(f_slippage)) + print('Short Borrowing Cost : ' + str(f_borrow)) + print('Leverage : ') + print(ts_leverage) np.testing.assert_approx_equal(df_funds[-1], \ 10000 * self.i_open_result, significant = 3) self.assertTrue(True) --- ./QSTK/qstkstrat/strategies.py (original) +++ ./QSTK/qstkstrat/strategies.py (refactored) @@ -32,12 +32,12 @@ @param dFuncArgs: Dict of function args passed to the function @return DataFrame corresponding to the portfolio allocations """ - if not dFuncArgs.has_key('dmPrice'): - print 'Error: Strategy requires dmPrice information' - return - - if not dFuncArgs.has_key('lfWeights'): - print 'Error: Strategy requires weight information' + if 'dmPrice' not in dFuncArgs: + print('Error: Strategy requires dmPrice information') + return + + if 'lfWeights' not in dFuncArgs: + print('Error: Strategy requires weight information') return dmPrice = dFuncArgs['dmPrice'] @@ -60,8 +60,8 @@ @param dFuncArgs: Dict of function args passed to the function @return DataFrame corresponding to the portfolio allocations """ - if not dFuncArgs.has_key('dmPrice'): - print 'Error: Strategy requires dmPrice information' + if 'dmPrice' not in dFuncArgs: + print('Error: Strategy requires dmPrice information') return dmPrice = dFuncArgs['dmPrice'] @@ -85,24 +85,24 @@ @param dFuncArgs: Dict of function args passed to the function @return DataFrame corresponding to the portfolio allocations """ - if not dFuncArgs.has_key('dmPrice'): - print 'Error:', stratMark.__name__, 'requires dmPrice information' - return - - if not dFuncArgs.has_key('sPeriod'): - print 'Error:', stratMark.__name__, 'requires rebalancing period' - return - - if not dFuncArgs.has_key('lLookback'): - print 'Error:', stratMark.__name__, 'requires lookback' - return - - if not dFuncArgs.has_key('sMarkPoint'): - print 'Error:', stratMark.__name__, 'requires markowitz point to choose' + if 'dmPrice' not in dFuncArgs: + print('Error:', stratMark.__name__, 'requires dmPrice information') + return + + if 'sPeriod' not in dFuncArgs: + print('Error:', stratMark.__name__, 'requires rebalancing period') + return + + if 'lLookback' not in dFuncArgs: + print('Error:', stratMark.__name__, 'requires lookback') + return + + if 'sMarkPoint' not in dFuncArgs: + print('Error:', stratMark.__name__, 'requires markowitz point to choose') return ''' Optional variables ''' - if not dFuncArgs.has_key('bAddAlpha'): + if 'bAddAlpha' not in dFuncArgs: bAddAlpha = False else: bAddAlpha = dFuncArgs['bAddAlpha'] @@ -121,7 +121,7 @@ dtStart = dtDate - pand.DateOffset(days=lLookback) if( dtStart < dmPrice.index[0] ): - print 'Error, not enough data to rebalance' + print('Error, not enough data to rebalance') continue naRets = dmPrice.ix[ dtStart:dtDate ].values.copy() @@ -184,7 +184,7 @@ lInd = 0 else: - print 'Warning: invalid sMarkPoint''' + print('Warning: invalid sMarkPoint''') return --- ./QSTK/qstkstudy/EventProfiler.py (original) +++ ./QSTK/qstkstudy/EventProfiler.py (refactored) @@ -67,7 +67,7 @@ # Study Params na_mean = np.mean(na_event_rets, axis=0) na_std = np.std(na_event_rets, axis=0) - li_time = range(-i_lookback, i_lookforward + 1) + li_time = list(range(-i_lookback, i_lookforward + 1)) # Plotting the chart plt.clf() --- ./QSTK/qstkstudy/Events.py (original) +++ ./QSTK/qstkstudy/Events.py (refactored) @@ -43,10 +43,10 @@ window = 10 if verbose: - print __name__ + " reading data" + print(__name__ + " reading data") close = d_data[closefield] if verbose: - print __name__ + " finding events" + print(__name__ + " finding events") for symbol in symbols: close[symbol][close[symbol]>= 1.0] = np.NAN for i in range(1,len(close[symbol])): --- ./QSTK/qstkstudy/study.py (original) +++ ./QSTK/qstkstudy/study.py (refactored) @@ -16,7 +16,7 @@ dataobj = da.DataAccess('Yahoo') ls_keys = ['open', 'high', 'low', 'close', 'volume', 'actual_close'] ldf_data = dataobj.get_data(ldt_timestamps, ls_symbols, ls_keys) - d_data = dict(zip(ls_keys, ldf_data)) + d_data = dict(list(zip(ls_keys, ldf_data))) eventMatrix = ev.find_events(ls_symbols,d_data,verbose=True) ep.eventprofiler(eventMatrix, d_data, --- ./QSTK/qstktest/testDataAccess.py (original) +++ ./QSTK/qstktest/testDataAccess.py (refactored) @@ -14,7 +14,7 @@ import QSTK.qstkutil.DataAccess as da import tables as pt import numpy as np -from itertools import izip + import time import dircache @@ -22,7 +22,7 @@ listOfStocks=list() #Path does not exist - print "Reading in all stock names..." + print("Reading in all stock names...") fileExtensionToRemove=".h5" for path in listOfPaths: @@ -30,9 +30,9 @@ stocksAtThisPath= dircache.listdir(str(path)) #Next, throw away everything that is not a .h5 And these are our stocks! - stocksAtThisPath = filter (lambda x:(str(x).find(str(fileExtensionToRemove)) > -1), stocksAtThisPath) + stocksAtThisPath = [x for x in stocksAtThisPath if (str(x).find(str(fileExtensionToRemove)) > -1)] #Now, we remove the .h5 to get the name of the stock - stocksAtThisPath = map(lambda x:(x.partition(str(fileExtensionToRemove))[0]),stocksAtThisPath) + stocksAtThisPath = [(x.partition(str(fileExtensionToRemove))[0]) for x in stocksAtThisPath] for stock in stocksAtThisPath: listOfStocks.append(stock) @@ -44,7 +44,7 @@ if __name__ == '__main__': - print "Starting..." + print("Starting...") dataItemsList=[] dataItemsList.append('alphaValue') @@ -100,7 +100,7 @@ alphaList= alpha.getStockDataList(stock, 'volume')RefactoringTool: Refactored ./QSTK/qstktest/testLearner.py RefactoringTool: Refactored ./QSTK/qstktools/YahooDataPull.py RefactoringTool: Refactored ./QSTK/qstktools/csv2fund.py RefactoringTool: Refactored ./QSTK/qstktools/report.py RefactoringTool: Refactored ./QSTK/qstkutil/DataAccess.py ctr=0 for val in alphaList: - print "stock: " + str(stock) + ", val: "+str(val) + ", ts: " + str(listOfTS[ctr]) + print("stock: " + str(stock) + ", val: "+str(val) + ", ts: " + str(listOfTS[ctr])) ctr+=1 - print "DONE!" + print("DONE!") --- ./QSTK/qstktest/testLearner.py (original) +++ ./QSTK/qstktest/testLearner.py (refactored) @@ -132,13 +132,13 @@ # # Compare to ground truth # - print 'trainsize ' + str(trainsize) + print('trainsize ' + str(trainsize)) Ytruth = Y[-trainsize:] - print 'Ytruth.shape ' + str(Ytruth.shape) + print('Ytruth.shape ' + str(Ytruth.shape)) Xtest = dataX[-trainsize:,:] - print 'Xtest.shape ' + str(Xtest.shape) + print('Xtest.shape ' + str(Xtest.shape)) Ytest = learner.query(Xtest) # to check every point - print 'Ytest.shape ' + str(Ytest.shape) + print('Ytest.shape ' + str(Ytest.shape)) plt.clf() plt.scatter(Ytruth,Ytest,edgecolors='none') @@ -148,7 +148,7 @@ plt.ylabel('Estimated') savefig("scatterdata.png", format='png') - print corrcoef(Ytruth,Ytest) + print(corrcoef(Ytruth,Ytest)) if __name__ == '__main__': main() --- ./QSTK/qstktools/YahooDataPull.py (original) +++ ./QSTK/qstktools/YahooDataPull.py (refactored) @@ -2,8 +2,8 @@ Pulling Yahoo CSV Data ''' -import urllib2 -import urllib +import urllib.request, urllib.error, urllib.parse +import urllib.request, urllib.parse, urllib.error import datetime import os import QSTK.qstkutil.DataAccess as da @@ -35,9 +35,9 @@ # print "Getting {0}".format(symbol) try: - params = urllib.urlencode ({'a':0, 'b':1, 'c':2000, 'd':_now.month-1, 'e':_now.day, 'f':_now.year, 's': symbol}) + params = urllib.parse.urlencode ({'a':0, 'b':1, 'c':2000, 'd':_now.month-1, 'e':_now.day, 'f':_now.year, 's': symbol}) url = "http://ichart.finance.yahoo.com/table.csv?%s" % params - url_get = urllib2.urlopen(url) + url_get = urllib.request.urlopen(url) header = url_get.readline() symbol_data.append (url_get.readline()) @@ -58,16 +58,16 @@ f.close() - except urllib2.HTTPError: + except urllib.error.HTTPError: miss_ctr += 1 ls_missed_syms.append(symbol_name) - print "Unable to fetch data for stock: {0} at {1}".format(symbol_name, url) - except urllib2.URLError: + print("Unable to fetch data for stock: {0} at {1}".format(symbol_name, url)) + except urllib.error.URLError: miss_ctr += 1 ls_missed_syms.append(symbol_name) - print "URL Error for stock: {0} at {1}".format(symbol_name, url) + print("URL Error for stock: {0} at {1}".format(symbol_name, url)) - print "All done. Got {0} stocks. Could not get {1}".format(len(ls_symbols) - miss_ctr, miss_ctr) + print("All done. Got {0} stocks. Could not get {1}".format(len(ls_symbols) - miss_ctr, miss_ctr)) return ls_missed_syms --- ./QSTK/qstktools/csv2fund.py (original) +++ ./QSTK/qstktools/csv2fund.py (refactored) @@ -78,7 +78,7 @@ #first pass reader=csv.reader(open(filename,'rU'), delimiter=',') - reader.next() + next(reader) prev=0 first=1 diffs=[] @@ -256,7 +256,7 @@ @return commissions : value of slippage over the csv time """ reader=csv.reader(open(filename,'rU'), delimiter=',') - reader.next() + next(reader) symbols=[] dates=[] for row in reader: @@ -265,9 +265,9 @@ symbols.append(row[0]) if not(dp.parse(row[3]) in dates): dates.append(dp.parse(row[3])) - print symbols + print(symbols) reader=csv.reader(open(filename,'rU'), delimiter=',') - reader.next() + next(reader) if not("_CASH" in symbols): symbols.append("_CASH") vals=numpy.zeros([len(dates),len(symbols)]) @@ -309,7 +309,7 @@ column_index = sorted(share_table.columns) share_table = share_table.reindex(index=time_index, columns=column_index) i_start_cash = share_table["_CASH"].ix[0] - print i_start_cash + print(i_start_cash) return [share_table, commissions, i_start_cash] # def ofx2fund(filename, start_val): @@ -408,14 +408,14 @@ if __name__ == "__main__": filename = "Strat.csv" plot_name = "Strategy" - print "load csv" + print("load csv") [share_table, commissions, i_start_cash] = csv2fund(filename) - print share_table + print(share_table) [fund_ts, ts_leverage] = share_table2fund(share_table) - print "print report" - print fund_ts + print("print report") + print(fund_ts) report.print_stats(fund_ts, ["SPY"], plot_name, directory="./" + plot_name, commissions=commissions, i_start_cash=i_start_cash) - print "analyze transactions" + print("analyze transactions") #Generate new plot based off transactions alone analyze_transactions(filename, plot_name, share_table, True) - print "done" + print("done") --- ./QSTK/qstktools/report.py (original) +++ ./QSTK/qstktools/report.py (refactored) @@ -26,7 +26,7 @@ from matplotlib import pyplot from matplotlib import gridspec import matplotlib.dates as mdates -import cPickle +import pickle import datetime as dt import pandas import numpy as np @@ -433,7 +433,7 @@ splot_dir = path.join(directory, splot) ostream = open(sfile, "wb") ostream.write("
")
-        print "writing to ", sfile
+        print("writing to ", sfile)
 
         if type(original)==type("str"):
             if type(leverage)!=type(False):
@@ -706,7 +706,7 @@
         splot = "plot-%s.png" % name
         splot_dir =  path.join(directory, splot)
         ostream = open(sfile, "wb")
-        print "writing to ", sfile
+        print("writing to ", sfile)
 
         if type(original)==type("str"):
             if type(leverage)!=type(False):
@@ -842,8 +842,8 @@
         lf_vals.append(get_annual_return(benchmark_close[bench_sym], years))
         ls_labels.append(bench_sym)
 
-    print lf_vals
-    print ls_labels
+    print(lf_vals)
+    print(ls_labels)
     ls_year_labels=[]
     for i in range(0,len(years)):
         ls_year_labels.append(str(years[i]))
@@ -915,7 +915,7 @@
 def print_bar_chart(llf_vals, ls_fund_labels, ls_year_labels, s_filename):
     llf_vals=((1,2,3),(3,2,1),(2,2,2))
     amin=min(min(llf_vals))
-    print amin
+    print(amin)
     min_lim=0
     if amin<0:
         min_lim = amin
@@ -1167,7 +1167,7 @@
 
     if(ROBUST == 1):
         ANINPUT = open(sys.argv[2],"r")
-        FUNDS = cPickle.load(ANINPUT)
+        FUNDS = pickle.load(ANINPUT)
         generate_robust_report(FUNDS, FILENAME)
     else:
         FILES = sys.argv
@@ -1175,7 +1175,7 @@
         FUNDS = []
         for AFILE in FILES:
             ANINPUT = open(AFILE,"r")
-            FUND = cPickle.load(ANINPUT)
+            FUND = pickle.load(ANINPUT)
             FUNDS.append(FUND)
         generate_report(FUNDS, FILES, FILENAME)
 
--- ./QSTK/qstkutil/DataAccess.py	(original)
+++ ./QSTK/qstkutil/DataAccess.py	(refactored)
@@ -93,11 +93,11 @@
                 self.scratchdir = os.path.join(tempfile.gettempdir(), 'QSScratch')
 
         if verbose:
-            print "Scratch Directory: ", self.scratchdir
-            print "Data Directory: ", self.rootdir
+            print("Scratch Directory: ", self.scratchdir)
+            print("Data Directory: ", self.rootdir)
 
         if not os.path.isdir(self.rootdir):
-            print "Data path provided is invalid"
+            print("Data path provided is invalid")
             raise
 
         if not os.path.exists(self.scratchdir):
@@ -245,7 +245,7 @@
                 if bIncDelist:
                     lsDelPaths = self.getPathOfFile( symbol, True )
                     if file_path == None and len(lsDelPaths) > 0:
-                        print 'Found delisted paths:', lsDelPaths
+                        print('Found delisted paths:', lsDelPaths)
                 
                 ''' If we don't have a file path continue... unless we have delisted paths '''
                 if (type (file_path) != type ("random string")):
@@ -256,7 +256,7 @@
                     _file = open(file_path, "rb")
             except IOError:
                 # If unable to read then continue. The value for this stock will be nan
-                print _file
+                print(_file)
                 continue;
                 
             assert( not _file == None or bIncDelist == True )
@@ -264,8 +264,8 @@
             if _file != None:
                 if (self.source==DataSource.CUSTOM) or (self.source==DataSource.YAHOO)or (self.source==DataSource.MLT):
                     creader = csv.reader(_file)
-                    row=creader.next()
-                    row=creader.next()
+                    row=next(creader)
+                    row=next(creader)
                     #row.pop(0)
                     for i, item in enumerate(row):
                         if i==0:
@@ -315,7 +315,7 @@
                         
             #now remove all the columns except the timestamps and one data column
             if verbose:
-                print self.getPathOfFile(symbol)
+                print(self.getPathOfFile(symbol))
             
             ''' Fix 1 row case by reshaping '''
             if( naData.ndim == 1 ):
@@ -337,7 +337,7 @@
                 num_rows= temp_np.shape[0]
 
                 
-                symbol_ts_list = range(num_rows) # preallocate
+                symbol_ts_list = list(range(num_rows)) # preallocate
                 for i in range (0, num_rows):
 
                     timebase = temp_np[i][0]
@@ -460,7 +460,7 @@
         # final complete filename
         cachefilename = self.scratchdir + '/' + hashstr + '.pkl'
         if verbose:
-            print "cachefilename is: " + cachefilename
+            print("cachefilename is: " + cachefilename)
 
         # now eather read the pkl file, or do a hardread
         readfile = False  # indicate that we have not yet read the file
@@ -476,7 +476,7 @@
         if os.path.exists(cachefilename):
             if ((dt.datetime.now() - dt.datetime.fromtimestamp(os.path.getmtime(cachefilename))) < cachestall):
                 if verbose:
-                    print "cache hit"
+                    print("cache hit")
                 try:
                     cachefile = open(cachefilename, "rb")
                     start = time.time() # start timer
@@ -486,36 +486,36 @@
                     cachefile.close()
                 except IOError:
                     if verbose:
-                        print "error reading cache: " + cachefilename
-                        print "recovering..."
+                        print("error reading cache: " + cachefilename)
+                        print("recovering...")
                 except EOFError:
                     if verbose:
-                        print "error reading cache: " + cachefilename
-                        print "recovering..."
+                        print("error reading cache: " + cachefilename)
+                        print("recovering...")
         if (readfile!=True):
             if verbose:
-                print "cache miss"
-                print "beginning hardread"
+                print("cache miss")
+                print("beginning hardread")
             start = time.time() # start timer
             if verbose:
-                print "data_item(s): " + str(data_item)
-                print "symbols to read: " + str(symbol_list)
+                print("data_item(s): " + str(data_item))
+                print("symbols to read: " + str(symbol_list))
             retval = self.get_data_hardread(ts_list, 
                 symbol_list, data_item, verbose, bIncDelist)
             elapsed = time.time() - start # end timer
             if verbose:
-                print "end hardread"
-                print "saving to cache"
+                print("end hardread")
+                print("saving to cache")
             try:
                 cachefile = open(cachefilename,"wb")
                 pkl.dump(retval, cachefile, -1)
-                os.chmod(cachefilename,0666)
+                os.chmod(cachefilename,0o666)
             except IOError:
-                print "error writing cache: " + cachefilename
+                print("error writing cache: " + cachefilename)
             if verbose:
-                print "end saving to cache"
+                print("end saving to cache")
             if verbose:
-                print "reading took " + str(elapsed) + " seconds"
+                print("reading took " + str(elapsed) + " seconds")
 
         if type(retval) == type([]):
             for i, df_single in enumerate(retval):
@@ -555,7 +555,7 @@
             lsPaths.sort()
             return lsPaths
 
-        print "Did not find path to " + str(symbol_name) + ". Looks like this file is missing"
+        print("Did not find path to " + str(symbol_name) + ". Looks like this file is missing")
 
     def getPathOfCSVFile(self, symbol_name):
 
@@ -565,7 +565,7 @@
                     return (str(str(path1)+str(symbol_name)+".csv"))
                     #if ends
                 #for ends
-        print "Did not find path to " + str (symbol_name)+". Looks like this file is missing"    
+        print("Did not find path to " + str (symbol_name)+". Looks like this file is missing")    
 
     def get_all_symbols (self):
         '''
@@ -584,9 +584,9 @@
             #print str(path)
             stocksAtThisPath = dircache.listdir(str(path))
             #Next, throw away everything that is not a .pkl And these are our stocks!
-            stocksAtThisPath = filter (lambda x:(str(x).find(str(self.fileExtensionToRemove)) > -1), stocksAtThisPath)
+            stocksAtThisPath = [x for x in stocksAtThisPath if (str(x).find(str(self.fileExtensionToRemove)) > -1)]
             #Now, we remove the .pkl to get the name of the stock
-            stocksAtThisPath = map(lambda x:(x.partition(str(self.fileExtensionToRemove))[0]),stocksAtThisPath)
+            stocksAtThisPath = [(x.partition(str(self.fileExtensionToRemove))[0]) for x in stocksAtThisPath]
 
             listOfStocks.extend(stocksAtThisPath)
             #for stock in stocksAtThisPath:
@@ -645,11 +645,11 @@
 
         #Next, throw away everything that is not a .pkl And these are our stocks!
         try:
-            stocksAtThisPath = filter (lambda x:(str(x).find(str(self.fileExtensionToRemove)) > -1), stocksAtThisPath)
+            stocksAtThisPath = [x for x in stocksAtThisPath if (str(x).find(str(self.fileExtensionToRemove)) > -1)]
             #Now, we remove the .pkl to get the name of the stock
-            stocksAtThisPath = map(lambda x:(x.partition(str(self.fileExtensionToRemove))[0]),stocksAtThisPath)
+            stocksAtThisPath = [(x.partition(str(self.fileExtensionToRemove))[0]) for x in stocksAtThisPath]
         except:
-            print "error: no path to " + subdir
+            print("error: no path to " + subdir)
             stocksAtThisPath = list()
 
         return stocksAtThisPath
@@ -671,7 +671,7 @@
         '''
 
         if (self.source != DataSource.COMPUSTAT):
-            print 'Function only valid for Compustat objects!'
+            print('Function only valid for Compustat objects!')
             return []
 
         return DataItem.COMPUSTAT
@@ -725,7 +725,7 @@
         else:
             retstr = "DataAccess internal error\n"
 
-        print retstr
+        print(retstr)
         return retstr
         #get_sublists
 
@@ -737,18 +737,18 @@
     
     # Check if GOOG is a valid symbol.
     val = c_dataobj.check_symbol('GOOG')
-    print "Is GOOG a valid symbol? :" , val
+    print("Is GOOG a valid symbol? :" , val)
     
     # Check if QWERTY is a valid symbol.
     val = c_dataobj.check_symbol('QWERTY')
-    print "Is QWERTY a valid symbol? :" , val
+    print("Is QWERTY a valid symbol? :" , val)
 
     # Check if EBAY is part of SP5002012 list.
     val = c_dataobj.check_symbol('EBAY', s_list='sp5002012')
-    print "Is EBAY a valid symbol in SP5002012 list? :", val
+    print("Is EBAY a valid symbol in SP5002012 list? :", val)
 
     # Check if GLD is part of SP5002012 after checking if GLD is a valid symbol.RefactoringTool: No changes to ./QSTK/qstkutil/fundutil.py
RefactoringTool: Refactored ./QSTK/qstkutil/qsdateutil.py
RefactoringTool: Refactored ./QSTK/qstkutil/tsutil.py
RefactoringTool: No changes to ./QSTK/qstkutil/utils.py
RefactoringTool: No changes to ./QSTK/qstkutil/tests/test_utils.py
RefactoringTool: Files that were modified:
RefactoringTool: ./ez_setup.py
RefactoringTool: ./setup.py
RefactoringTool: ./Bin/DataGenerate_SineWave.py
RefactoringTool: ./Bin/Data_CSV.py
RefactoringTool: ./Bin/converter.py
RefactoringTool: ./Bin/csvformatter.py
RefactoringTool: ./Bin/gen_nyse_dates.py
RefactoringTool: ./Bin/investors_report.py
RefactoringTool: ./Bin/sinewave_data_generator.py
RefactoringTool: ./Examples/Validation.py
RefactoringTool: ./Examples/Basic/numpy-tutorial.py
RefactoringTool: ./Examples/Basic/pandas-tutorial.py
RefactoringTool: ./Examples/Basic/tutorial1.py
RefactoringTool: ./Examples/Basic/tutorial2.py
RefactoringTool: ./Examples/Basic/tutorial3.py
RefactoringTool: ./Examples/Basic/tutorial4.py
RefactoringTool: ./Examples/Basic/tutorial5.py
RefactoringTool: ./Examples/Basic/tutorial8.py
RefactoringTool: ./Examples/DataAccess/setexample.py
RefactoringTool: ./Examples/EventProfiler/tutorial.py
RefactoringTool: ./Examples/FeatureSearch/code.py
RefactoringTool: ./Examples/FeatureSearch/functions.py
RefactoringTool: ./Examples/Features/featuretest.py
RefactoringTool: ./QSTK/__init__.py
RefactoringTool: ./QSTK/qstkfeat/__init__.py
RefactoringTool: ./QSTK/qstkfeat/classes.py
RefactoringTool: ./QSTK/qstkfeat/features.py
RefactoringTool: ./QSTK/qstkfeat/featutil.py
RefactoringTool: ./QSTK/qstklearn/1knn.py
RefactoringTool: ./QSTK/qstklearn/fastknn.py
RefactoringTool: ./QSTK/qstklearn/gendata.py
RefactoringTool: ./QSTK/qstklearn/hmm.py
RefactoringTool: ./QSTK/qstklearn/kdtknn.py
RefactoringTool: ./QSTK/qstklearn/mldiagnostics.py
RefactoringTool: ./QSTK/qstklearn/parallelknn.py
RefactoringTool: ./QSTK/qstksim/__init__.py
RefactoringTool: ./QSTK/qstksim/tradesim.py
RefactoringTool: ./QSTK/qstksim/tests/test_tradesim.py
RefactoringTool: ./QSTK/qstksim/tests/test_tradesim_SPY.py
RefactoringTool: ./QSTK/qstksim/tests/test_tradesim_SPY_Short.py
RefactoringTool: ./QSTK/qstkstrat/strategies.py
RefactoringTool: ./QSTK/qstkstudy/EventProfiler.py
RefactoringTool: ./QSTK/qstkstudy/Events.py
RefactoringTool: ./QSTK/qstkstudy/study.py
RefactoringTool: ./QSTK/qstktest/testDataAccess.py
RefactoringTool: ./QSTK/qstktest/testLearner.py
RefactoringTool: ./QSTK/qstktools/YahooDataPull.py
RefactoringTool: ./QSTK/qstktools/csv2fund.py
RefactoringTool: ./QSTK/qstktools/report.py
RefactoringTool: ./QSTK/qstkutil/DataAccess.py
RefactoringTool: ./QSTK/qstkutil/fundutil.py
RefactoringTool: ./QSTK/qstkutil/qsdateutil.py
RefactoringTool: ./QSTK/qstkutil/tsutil.py
RefactoringTool: ./QSTK/qstkutil/utils.py
RefactoringTool: ./QSTK/qstkutil/tests/test_utils.py
RefactoringTool: Warnings/messages while refactoring:
RefactoringTool: ### In file ./QSTK/qstklearn/fastknn.py ###
RefactoringTool: Line 12: absolute and local imports together
RefactoringTool: ### In file ./QSTK/qstklearn/kdtknn.py ###
RefactoringTool: Line 12: absolute and local imports together

     val = c_dataobj.check_symbol('GLD')
-    print "Is GLD a valid symbol? : ", val
+    print("Is GLD a valid symbol? : ", val)
     val = c_dataobj.check_symbol('GLD', 'sp5002012')
-    print "Is GLD a valid symbol in sp5002012 list? :", val
+    print("Is GLD a valid symbol in sp5002012 list? :", val)
--- ./QSTK/qstkutil/qsdateutil.py	(original)
+++ ./QSTK/qstkutil/qsdateutil.py	(refactored)
@@ -27,7 +27,7 @@
         # filename = os.environ['QS'] + "/qstkutil/NYSE_dates.txt"
         filename = os.path.join(os.path.dirname(__file__), 'NYSE_dates.txt')
     except KeyError:
-        print "Please be sure you have NYSE_dates.txt in the qstkutil directory"
+        print("Please be sure you have NYSE_dates.txt in the qstkutil directory")
 
     datestxt = np.loadtxt(filename, dtype=str)
     dates = []
@@ -172,8 +172,8 @@
         # filename = os.environ['QS'] + "/qstkutil/NYSE_dates.txt"
         filename = os.path.join(os.path.dirname(__file__), 'NYSE_dates.txt')
     except KeyError:
-        print "Please be sure to set the value for QS in config.sh or\n"
-        print "in local.sh and then \'source local.sh\'.\n"
+        print("Please be sure to set the value for QS in config.sh or\n")
+        print("in local.sh and then \'source local.sh\'.\n")
 
     datestxt = np.loadtxt(filename,dtype=str)
     dates=[]
@@ -198,8 +198,8 @@
         # filename = os.environ['QS'] + "/qstkutil/NYSE_dates.txt"
         filename = os.path.join(os.path.dirname(__file__), 'NYSE_dates.txt')
     except KeyError:
-        print "Please be sure to set the value for QS in config.sh or\n"
-        print "in local.sh and then \'source local.sh\'.\n"
+        print("Please be sure to set the value for QS in config.sh or\n")
+        print("in local.sh and then \'source local.sh\'.\n")
 
     datestxt = np.loadtxt(filename,dtype=str)
 
@@ -263,7 +263,7 @@
         dr_range = pd.DateRange(dt_start, dt_end,
                                 timeRule=s_period[1:])
         dr_range = np.asarray(dr_range)
-        li_even = np.array(range(len(dr_range)))
+        li_even = np.array(list(range(len(dr_range))))
         dr_range = dr_range[li_even[li_even % 2 == 0]]
     else:
         dr_range = pd.DateRange(dt_start, dt_end,
--- ./QSTK/qstkutil/tsutil.py	(original)
+++ ./QSTK/qstkutil/tsutil.py	(refactored)
@@ -324,8 +324,8 @@
         pass
         import nagint as nag
     except ImportError:
-        print 'Could not import NAG library'
-        print 'make sure nagint.so is in your python path'
+        print('Could not import NAG library')
+        print('make sure nagint.so is in your python path')
         return ([], 0, 0)
     
     # Get number of stocks """
@@ -367,7 +367,7 @@
         naReturn = nag.optPort( naConstraints, naLower, naUpper, \
                                       naCov, naInitial, lNagDebug )
     except RuntimeError:
-        print 'NAG Runtime error with target: %.02lf'%(f_target)
+        print('NAG Runtime error with target: %.02lf'%(f_target))
         return ( naInitial, sqrt( naCov[0][0] ) )  
     #return semi-junk to not mess up the rest of the plot
 
@@ -402,7 +402,7 @@
         from cvxopt.solvers import qp, options
 
     except ImportError:
-        print 'Could not import CVX library'
+        print('Could not import CVX library')
         raise
     
     ''' Get number of stocks '''
@@ -481,7 +481,7 @@
     (fMin, fMax) = getRetRange(False, naLower, naUpper, naExpected, "long") 
     #print (fTarget, fMin, fMax)
     if fTargetfMax:
-        print "Target not possible", fTarget, fMin, fMax
+        print("Target not possible", fTarget, fMin, fMax)
         b_error = True
 
     naLower = naLower*(-1)
@@ -519,7 +519,7 @@
         b_error = True
 
     if b_error == True:
-        print "Optimization not Possible"
+        print("Optimization not Possible")
         na_port = naLower*-1
         if sum(na_port) < 1:
             if sum(naUpper) == 1:
@@ -765,7 +765,7 @@
 
     for sStock in dmPrice.columns:
         fValid = 0.0
-        print sStock
+        print(sStock)
         # loop through all dates """
         for dtDate in dmPrice.index:
             # Count null (nan/inf/etc) values """
@@ -830,7 +830,7 @@
     lsRetStocks = []
 
     # Loop until we have enough randomly selected stocks """
-    llRemainingIndexes = range(0,len(lsStocks))
+    llRemainingIndexes = list(range(0,len(lsStocks)))
     lsValid = None
     while( len(lsRetStocks) != lNum ):
 
@@ -838,7 +838,7 @@
         for i in range( lNum - len(lsRetStocks) ):
             lRemaining = len(llRemainingIndexes)
             if( lRemaining == 0 ):
-                print 'Error in getRandPort: ran out of stocks'
+                print('Error in getRandPort: ran out of stocks')
                 return lsRetStocks
             
             # Pick a stock and remove it from the list of remaining stocks """
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%build): /bin/sh -e /home/iurt/rpmbuild/tmp/rpm-tmp.i7VfMO
+ umask 022
+ cd /home/iurt/rpmbuild/BUILD
+ cd QSTK-0.2.8
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ CFLAGS='-O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables'
+ LDFLAGS=' -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -Wl,--build-id -Wl,--enable-new-dtags'
+ /usr/bin/python3 setup.py build '--executable=/usr/bin/python3 -s'
running build
running build_py
creating build
creating build/lib
creating build/lib/Bin
copying Bin/sinewave_data_generator.py -> build/lib/Bin
copying Bin/converter.py -> build/lib/Bin
copying Bin/Data_CSV.py -> build/lib/Bin
copying Bin/gen_nyse_dates.py -> build/lib/Bin
copying Bin/__init__.py -> build/lib/Bin
copying Bin/DataGenerate_SineWave.py -> build/lib/Bin
copying Bin/csvformatter.py -> build/lib/Bin
copying Bin/investors_report.py -> build/lib/Bin
creating build/lib/QSTK
copying QSTK/__init__.py -> build/lib/QSTK
creating build/lib/QSTK/qstksim
copying QSTK/qstksim/tradesim.py -> build/lib/QSTK/qstksim
copying QSTK/qstksim/__init__.py -> build/lib/QSTK/qstksim
creating build/lib/QSTK/qstktest
copying QSTK/qstktest/testDataAccess.py -> build/lib/QSTK/qstktest
copying QSTK/qstktest/__init__.py -> build/lib/QSTK/qstktest
copying QSTK/qstktest/testLearner.py -> build/lib/QSTK/qstktest
creating build/lib/QSTK/qstktools
copying QSTK/qstktools/report.py -> build/lib/QSTK/qstktools
copying QSTK/qstktools/csv2fund.py -> build/lib/QSTK/qstktools
copying QSTK/qstktools/YahooDataPull.py -> build/lib/QSTK/qstktools
copying QSTK/qstktools/__init__.py -> build/lib/QSTK/qstktools
creating build/lib/QSTK/qstkfeat
copying QSTK/qstkfeat/classes.py -> build/lib/QSTK/qstkfeat
copying QSTK/qstkfeat/features.py -> build/lib/QSTK/qstkfeat
copying QSTK/qstkfeat/__init__.py -> build/lib/QSTK/qstkfeat
copying QSTK/qstkfeat/featutil.py -> build/lib/QSTK/qstkfeat
creating build/lib/QSTK/qstkutil
copying QSTK/qstkutil/DataAccess.py -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/fundutil.py -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/utils.py -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/__init__.py -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/qsdateutil.py -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/tsutil.py -> build/lib/QSTK/qstkutil
creating build/lib/QSTK/qstklearn
copying QSTK/qstklearn/gendata.py -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/hmm.py -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/parallelknn.py -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/kdtknn.py -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/__init__.py -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/mldiagnostics.py -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/fastknn.py -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/1knn.py -> build/lib/QSTK/qstklearn
creating build/lib/QSTK/qstkstrat
copying QSTK/qstkstrat/__init__.py -> build/lib/QSTK/qstkstrat
copying QSTK/qstkstrat/strategies.py -> build/lib/QSTK/qstkstrat
creating build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/EventProfiler.py -> build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/study.py -> build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/Events.py -> build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/__init__.py -> build/lib/QSTK/qstkstudy
creating build/lib/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim_SPY_Short.py -> build/lib/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim_SPY.py -> build/lib/QSTK/qstksim/tests
copying QSTK/qstksim/tests/__init__.py -> build/lib/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim.py -> build/lib/QSTK/qstksim/tests
creating build/lib/QSTK/qstkutil/tests
copying QSTK/qstkutil/tests/__init__.py -> build/lib/QSTK/qstkutil/tests
copying QSTK/qstkutil/tests/test_utils.py -> build/lib/QSTK/qstkutil/tests
running egg_info
creating QSTK.egg-info
writing QSTK.egg-info/PKG-INFO
writing dependency_links to QSTK.egg-info/dependency_links.txt
writing namespace_packages to QSTK.egg-info/namespace_packages.txt
writing requirements to QSTK.egg-info/requires.txt
writing top-level names to QSTK.egg-info/top_level.txt
writing manifest file 'QSTK.egg-info/SOURCES.txt'
reading manifest file 'QSTK.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*' under directory 'bin'
warning: manifest_maker: MANIFEST.in, line 8: 'recursive-include' expects    ...

warning: manifest_maker: MANIFEST.in, line 9: 'recursive-include' expects    ...

warning: no files found matching '*' under directory 'QSData'
warning: no files found matching 'QSTK/QSData/Yahoo/*.csv''
writing manifest file 'QSTK.egg-info/SOURCES.txt'
copying QSTK/__init__.pyc -> build/lib/QSTK
creating build/lib/QSTK/QSData
creating build/lib/QSTK/QSData/Yahoo
creating build/lib/QSTK/QSData/Yahoo/Lists
copying QSTK/QSData/Yahoo/Lists/index.txt -> build/lib/QSTK/QSData/Yahoo/Lists
copying QSTK/QSData/Yahoo/Lists/sp5002008.txt -> build/lib/QSTK/QSData/Yahoo/Lists
copying QSTK/QSData/Yahoo/Lists/sp5002012.txt -> build/lib/QSTK/QSData/Yahoo/Lists
copying QSTK/qstksim/__init__.py.bak -> build/lib/QSTK/qstksim
copying QSTK/qstksim/tradesim.py.bak -> build/lib/QSTK/qstksim
copying QSTK/qstktest/data-classification-prob.csv -> build/lib/QSTK/qstktest
copying QSTK/qstktest/data-ripple-prob.csv -> build/lib/QSTK/qstktest
copying QSTK/qstktest/testDataAccess.py.bak -> build/lib/QSTK/qstktest
copying QSTK/qstktest/testLearner.py.bak -> build/lib/QSTK/qstktest
copying QSTK/qstktools/YahooDataPull.py.bak -> build/lib/QSTK/qstktools
copying QSTK/qstktools/csv2fund.py.bak -> build/lib/QSTK/qstktools
copying QSTK/qstktools/report.py.bak -> build/lib/QSTK/qstktools
copying QSTK/qstkfeat/__init__.py.bak -> build/lib/QSTK/qstkfeat
copying QSTK/qstkfeat/featutil.py.bak -> build/lib/QSTK/qstkfeat
copying QSTK/qstkutil/DataAccess.py.bak -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/NYSE_dates.txt -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/graph.png -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/qsdateutil.py.bak -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/report.html -> build/lib/QSTK/qstkutil
copying QSTK/qstkutil/tsutil.py.bak -> build/lib/QSTK/qstkutil
copying QSTK/qstklearn/1knn.py.bak -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/fastknn.py.bak -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/gendata.py.bak -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/hmm.py.bak -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/kdtknn.py.bak -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/mldiagnostics.py.bak -> build/lib/QSTK/qstklearn
copying QSTK/qstklearn/parallelknn.py.bak -> build/lib/QSTK/qstklearn
copying QSTK/qstkstrat/strategies.py.bak -> build/lib/QSTK/qstkstrat
copying QSTK/qstkstudy/EventProfiler.py.bak -> build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/Events.py.bak -> build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/sp500.txt -> build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/study.py.bak -> build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/symbol-set1.txt -> build/lib/QSTK/qstkstudy
copying QSTK/qstkstudy/symbol-set2.txt -> build/lib/QSTK/qstkstudy
copying QSTK/qstksim/tests/test_tradesim.py.bak -> build/lib/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim_SPY.py.bak -> build/lib/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim_SPY_Short.py.bak -> build/lib/QSTK/qstksim/tests
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%install): /bin/sh -e /home/iurt/rpmbuild/tmp/rpm-tmp.QCTKbR
+ umask 022
+ cd /home/iurt/rpmbuild/BUILD
+ '[' 1 -eq 1 ']'
+ '[' /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64 '!=' / ']'
+ rm -rf /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64
++ dirname /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64
+ mkdir -p /home/iurt/rpmbuild/BUILDROOT
+ mkdir /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64
+ cd QSTK-0.2.8
+ '[' 1 -eq 1 ']'
+ /usr/bin/python3 setup.py install --skip-build --root /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64
running install
running install_lib
copying Bin/sinewave_data_generator.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin
copying Bin/converter.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin
copying Bin/Data_CSV.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin
copying Bin/gen_nyse_dates.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin
copying Bin/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin
copying Bin/DataGenerate_SineWave.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin
copying Bin/csvformatter.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin
copying Bin/investors_report.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin
Skipping installation of /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/__init__.py (namespace package)
Skipping installation of /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/__init__.pyc (namespace package)
copying QSTK/qstksim/tradesim.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim
copying QSTK/qstksim/tradesim.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim
copying QSTK/qstksim/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim
copying QSTK/qstksim/__init__.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim
copying QSTK/qstksim/tests/test_tradesim_SPY_Short.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim_SPY.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim_SPY.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim_SPY_Short.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests
copying QSTK/qstksim/tests/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests
copying QSTK/qstksim/tests/test_tradesim.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests
copying QSTK/qstktest/testDataAccess.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest
copying QSTK/qstktest/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest
copying QSTK/qstktest/data-ripple-prob.csv -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest
copying QSTK/qstktest/testLearner.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest
copying QSTK/qstktest/testLearner.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest
copying QSTK/qstktest/data-classification-prob.csv -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest
copying QSTK/qstktest/testDataAccess.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest
copying QSTK/qstktools/report.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools
copying QSTK/qstktools/csv2fund.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools
copying QSTK/qstktools/YahooDataPull.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools
copying QSTK/qstktools/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools
copying QSTK/qstktools/csv2fund.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools
copying QSTK/qstktools/report.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools
copying QSTK/qstktools/YahooDataPull.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools
copying QSTK/qstkfeat/classes.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat
copying QSTK/qstkfeat/features.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat
copying QSTK/qstkfeat/featutil.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat
copying QSTK/qstkfeat/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat
copying QSTK/qstkfeat/__init__.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat
copying QSTK/qstkfeat/featutil.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat
copying QSTK/qstkutil/DataAccess.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/NYSE_dates.txt -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/fundutil.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/DataAccess.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/utils.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/report.html -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/tsutil.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/qsdateutil.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/tsutil.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/qsdateutil.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/graph.png -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil
copying QSTK/qstkutil/tests/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/tests
copying QSTK/qstkutil/tests/test_utils.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/tests
copying QSTK/qstklearn/gendata.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/kdtknn.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/hmm.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/hmm.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/parallelknn.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/parallelknn.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/fastknn.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/kdtknn.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/gendata.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/mldiagnostics.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/fastknn.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/mldiagnostics.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/1knn.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/qstklearn/1knn.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn
copying QSTK/QSData/Yahoo/Lists/sp5002012.txt -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/QSData/Yahoo/Lists
copying QSTK/QSData/Yahoo/Lists/sp5002008.txt -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/QSData/Yahoo/Lists
copying QSTK/QSData/Yahoo/Lists/index.txt -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/QSData/Yahoo/Lists
copying QSTK/qstkstrat/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstrat
copying QSTK/qstkstrat/strategies.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstrat
copying QSTK/qstkstrat/strategies.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstrat
copying QSTK/qstkstudy/study.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/EventProfiler.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/symbol-set2.txt -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/sp500.txt -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/study.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/Events.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/symbol-set1.txt -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/__init__.py -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/EventProfiler.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
copying QSTK/qstkstudy/Events.py.bak -> /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin/sinewave_data_generator.py to sinewave_data_generator.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin/converter.py to converter.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin/Data_CSV.py to Data_CSV.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin/gen_nyse_dates.py to gen_nyse_dates.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin/DataGenerate_SineWave.py to DataGenerate_SineWave.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin/csvformatter.py to csvformatter.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/Bin/investors_report.py to investors_report.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tradesim.py to tradesim.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests/test_tradesim_SPY_Short.py to test_tradesim_SPY_Short.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests/test_tradesim_SPY.py to test_tradesim_SPY.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstksim/tests/test_tradesim.py to test_tradesim.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest/testDataAccess.py to testDataAccess.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktest/testLearner.py to testLearner.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools/report.py to report.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools/csv2fund.py to csv2fund.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools/YahooDataPull.py to YahooDataPull.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstktools/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat/classes.py to classes.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat/features.py to features.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkfeat/featutil.py to featutil.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/DataAccess.py to DataAccess.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/fundutil.py to fundutil.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/utils.py to utils.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/qsdateutil.py to qsdateutil.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/tsutil.py to tsutil.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/tests/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkutil/tests/test_utils.py to test_utils.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn/gendata.py to gendata.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn/hmm.py to hmm.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn/parallelknn.py to parallelknn.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn/kdtknn.py to kdtknn.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn/mldiagnostics.py to mldiagnostics.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn/fastknn.py to fastknn.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstklearn/1knn.py to 1knn.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstrat/__init__.py to __init__.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstrat/strategies.py to strategies.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy/EventProfiler.py to EventProfiler.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy/study.py to study.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy/Events.py to Events.cpython-38.pyc
byte-compiling /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK/qstkstudy/__init__.py to __init__.cpython-38.pyc
running install_egg_info
running egg_info
writing QSTK.egg-info/PKG-INFO
writing dependency_links to QSTK.egg-info/dependency_links.txt
writing namespace_packages to QSTK.egg-info/namespace_packages.txt
writing requirements to QSTK.egg-info/requires.txt
writing top-level names to QSTK.egg-info/top_level.txt
reading manifest file 'QSTK.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*' under directory 'bin'
warning: manifest_maker: MANIFEST.in, line 8: 'recursive-include' expects    ...

warning: manifest_maker: MANIFEST.in, line 9: 'recursive-include' expects    ...

warning: no files found matching '*' under directory 'QSData'
warning: no files found matching 'QSTK/QSData/Yahoo/*.csv''
writing manifest file 'QSTK.egg-info/SOURCES.txt'
Copying QSTK.egg-info to /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK-0.2.8-py3.8.egg-info
Installing /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8/site-packages/QSTK-0.2.8-py3.8-nspkg.pth
running install_scripts
+ mv /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64//usr/lib/python3.8/site-packages/Bin /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64//usr/lib/python3.8/site-packages/QSTK
+ /usr/lib/rpm/find-debuginfo.sh -j96 --strict-build-id -m -i --build-id-seed 0.2.8-11.mga8 --unique-debug-suffix -0.2.8-11.mga8.x86_64 --unique-debug-src-base python-qstk-0.2.8-11.mga8.x86_64 --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 -S debugsourcefiles.list /home/iurt/rpmbuild/BUILD/QSTK-0.2.8

+ /usr/lib/rpm/check-buildroot
+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_files
+ '[' -n '' ']'
+ /usr/share/spec-helper/compress_files .xz
+ '[' -n '' ']'
+ /usr/share/spec-helper/relink_symlinks
+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_perl
+ '[' -n '' ']'
+ /usr/share/spec-helper/lib_symlinks
+ '[' -n '' ']'
+ /usr/share/spec-helper/gprintify
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_mo
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_pamd
+ '[' -n '' ']'
+ /usr/share/spec-helper/remove_info_dir
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_eol
+ '[' -n '' ']'
+ /usr/share/spec-helper/check_desktop_files
+ '[' -n '' ']'
+ /usr/share/spec-helper/check_elf_files
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python3 1 1
Bytecompiling .py files below /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/lib/python3.8 using /usr/bin/python3.8
+ /usr/lib/rpm/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-mangle-shebangs
Processing files: python3-qstk-0.2.8-11.mga8.noarch
Executing(%doc): /bin/sh -e /home/iurt/rpmbuild/tmp/rpm-tmp.Dk1vmN
+ umask 022
+ cd /home/iurt/rpmbuild/BUILD
+ cd QSTK-0.2.8
+ DOCDIR=/home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/share/doc/python3-qstk
+ export LC_ALL=C
+ LC_ALL=C
+ export DOCDIR
+ /usr/bin/mkdir -p /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/share/doc/python3-qstk
+ cp -pr docs/README.md /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/share/doc/python3-qstk
+ cp -pr README.md /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/share/doc/python3-qstk
+ cp -pr LICENSE.txt /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64/usr/share/doc/python3-qstk
+ RPM_EC=0
++ jobs -p
+ exit 0
warning: File listed twice: /usr/share/doc/python3-qstk/README.md
Provides: python-qstk = 0.2.8-11.mga8 python3-qstk = 0.2.8-11.mga8 python3.8-qstk = 0.2.8-11.mga8 python3.8dist(qstk) = 0.2.8 python3dist(qstk) = 0.2.8
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: python(abi) = 3.8 python3.8dist(matplotlib) >= 1.1 python3.8dist(numpy) >= 1.6.1 python3.8dist(pandas) >= 0.7.3 python3.8dist(python-dateutil) >= 1.5 python3.8dist(scikit-learn) >= 0.11 python3.8dist(scipy) >= 0.9
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64
Wrote: /home/iurt/rpmbuild/RPMS/noarch/python3-qstk-0.2.8-11.mga8.noarch.rpm
Executing(%clean): /bin/sh -e /home/iurt/rpmbuild/tmp/rpm-tmp.DoCaIQ
+ umask 022
+ cd /home/iurt/rpmbuild/BUILD
+ cd QSTK-0.2.8
+ /usr/bin/rm -rf /home/iurt/rpmbuild/BUILDROOT/python-qstk-0.2.8-11.mga8.x86_64
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(--clean): /bin/sh -e /home/iurt/rpmbuild/tmp/rpm-tmp.X3v0JR
+ umask 022
+ cd /home/iurt/rpmbuild/BUILD
+ rm -rf QSTK-0.2.8
+ RPM_EC=0
++ jobs -p
+ exit 0
D: [iurt_root_command] Success!