Files
IB-Dashboard/backend/__pycache__/flex_query.cpython-313.pyc

38 lines
7.1 KiB
Plaintext
Raw Normal View History

2026-04-01 21:44:21 -05:00
<EFBFBD>
<00><><EFBFBD>i<EFBFBD><00><01><><00>SrSSKJr SSKrSSKrSSKrSSKrSSKJ s J
r SSK J r SSKJr Sr\S3r\S3r\ "S S
55r"S S \5rSS jrSSjrSSjrSSjrSSjrSSjrg)apUtilities for Interactive Brokers Flex Web Service integration.
This module provides the first layer of infrastructure for pulling
historical trade data from a saved Flex Query. It intentionally keeps the
surface area small so the app can validate configuration, trigger a sync,
and persist the raw XML responses locally before the data is wired into the
lot engine.
<EFBFBD>)<01> annotationsN)<01> dataclass)<01>PathzFhttps://ndcdyn.interactivebrokers.com/AccountManagement/FlexWebServicez /SendRequestz /GetStatementc<01>P<00>\rSrSr%S\S'S\S'S\S'SrS\S 'S
rS \S 'S rg)<0F>
FlexConfig<EFBFBD><00>str<74>token<65>query_idr<00>data_dirg@<40>float<61>poll_interval_seconds<64><00>int<6E> max_polls<6C>N)<08>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__annotations__rr<00>__static_attributes__r<00><00>backend/flex_query.pyrrs&<00><00> <0E>J<EFBFBD><11>M<EFBFBD><12>N<EFBFBD>#&<26><19>5<EFBFBD>&<26><17>I<EFBFBD>s<EFBFBD>rrc<01><00>\rSrSrSrg)<04>FlexQueryError<6F>"rN)rrrrrrrrrr"s<00><00>rrc<01><><00>[RRSS5R5n[RRSS5R5nU(aU(dg[ [RRS[ [
5R 5RRS- S- 55n[XUS9$)N<> IB_FLEX_TOKEN<45><00>IB_FLEX_QUERY_ID<49>IB_FLEX_DATA_DIR<49>data<74>flex<65>r
r r ) <09>os<6F>environ<6F>get<65>stripr<00>__file__<5F>resolve<76>parentrr%s r<00>load_flex_configr-&s<><00><00> <0E>J<EFBFBD>J<EFBFBD>N<EFBFBD>N<EFBFBD>?<3F>B<EFBFBD> /<2F> 5<> 5<> 7<>E<EFBFBD><11>z<EFBFBD>z<EFBFBD>~<7E>~<7E>0<>"<22>5<>;<3B>;<3B>=<3D>H<EFBFBD> <10><08><13><13>B<EFBFBD>J<EFBFBD>J<EFBFBD>N<EFBFBD>N<EFBFBD>#5<>t<EFBFBD>H<EFBFBD>~<7E>7M<37>7M<37>7O<37>7V<37>7V<37>7]<5D>7]<5D>`f<>7f<37>io<69>7o<37>p<>q<>H<EFBFBD> <15>E<EFBFBD>x<EFBFBD> H<>Hrc<01><><00>[5nUcKSSVs/sH:n[RRUS5R 5(aM8UPM< snS.$SnSnUR
R 5(aU[UR
RS55nU(a*USn[U5nUR5RnSUR[UR
5UUS.$s snf) NF)rr!r )<02>
configured<EFBFBD>missingz
flex_*.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>T)r/r r <00> latest_file<6C>latest_timestamp) r-r&r'r(r)r <00>exists<74>sorted<65>globr <00>stat<61>st_mtimer )<06>config<69>namer2<00> latest_mtime<6D> xml_files<65>latests r<00>get_flex_statusr>/s<><00><00> <1D> <1F>F<EFBFBD> <0A>~<7E><1F>B<01><0E>A<>D<EFBFBD><19>z<EFBFBD>z<EFBFBD>~<7E>~<7E>d<EFBFBD>B<EFBFBD>/<2F>5<>5<>7<><15>A<><0E>
<EFBFBD>
<EFBFBD><17>K<EFBFBD><17>L<EFBFBD> <0A><EFBFBD><EFBFBD><1D><1D><1F><1F><1A>6<EFBFBD>?<3F>?<3F>/<2F>/<2F> <0C>=<3D>><3E> <09> <14><1E>r<EFBFBD>]<5D>F<EFBFBD><1D>f<EFBFBD>+<2B>K<EFBFBD>!<21>;<3B>;<3B>=<3D>1<>1<>L<EFBFBD><1A><1A>O<EFBFBD>O<EFBFBD><17><06><0F><0F>(<28>"<22>(<28>  <06><06><>s <00>7C6<06>C6c<01><00>US[RRU53n[RR USS0S9n[RR USS9nUR 5sSSS5 $!,(df  g=f)N<>?z
User-AgentzIB-Dashboard/1.0)<01>headersr)<01>timeout)<07>urllib<69>parse<73> urlencode<64>request<73>Request<73>urlopen<65>read)<05>url<72>params<6D>full_urlrF<00>responses r<00> _http_getrNKsw<00><00><15><15>a<EFBFBD><06> <0C> <0C>.<2E>.<2E>v<EFBFBD>6<>7<>8<>H<EFBFBD><14>n<EFBFBD>n<EFBFBD>$<24>$<24><10><1D>1<>2<>%<25><06>G<EFBFBD>
<10><1E><1E> <1F> <1F><07><12> <1F> 4<><08><17>}<7D>}<7D><EFBFBD>
5<EFBFBD> 4<> 4<>s <00>#A=<03>=
B c<01>f<00>[R"U5nURS5=(d SR5nUR 5S:wa#[ URS5=(d S5eURS5=(d SR5nU(d [ S5eX#4$)N<>Statusr <00>success<73> ErrorMessagezFlex send-request failed<65> ReferenceCodez+Flex send-request returned no ReferenceCode)<06>ET<45>
fromstring<EFBFBD>findtextr)<00>lowerr)<04> xml_bytes<65>root<6F>status<75>reference_codes r<00>_parse_send_requestr\Us<><00><00> <0A>=<3D>=<3D><19> #<23>D<EFBFBD><12>m<EFBFBD>m<EFBFBD>H<EFBFBD>%<25>+<2B><12> 2<> 2<> 4<>F<EFBFBD> <0A>|<7C>|<7C>~<7E><19>"<22><1C>T<EFBFBD>]<5D>]<5D>><3E>:<3A>X<>>X<>Y<>Y<><1A>m<EFBFBD>m<EFBFBD>O<EFBFBD>4<>:<3A><02>A<>A<>C<>N<EFBFBD> <19><1C>J<>K<>K<> <11> !<21>!rc<01><><00>[R"U5nURS:Xa;URS5=(d SR 5nU(a [ U5egSUR SSS94$) N<>FlexStatementResponserRr )Fr T<>utf-8<>replace)<01>errors)rTrU<00>tagrVr)r<00>decode)rXrY<00> error_messages r<00>_parse_statement_statusre`se<00><00> <0A>=<3D>=<3D><19> #<23>D<EFBFBD> <0B>x<EFBFBD>x<EFBFBD>*<2A>*<2A><1D><1D><1D>~<7E>6<><<3C>"<22>C<>C<>E<> <0A> <18> <20><1D>/<2F> /<2F><18> <0F><19>!<21>!<21>'<27>)<29>!<21><<3C> <<3C><rc <01><><00>[5nUc [S5eURRSSS9 [ [ [ URURSS.55upSn[UR5HYn[ [URUSS.5n[U5upVU(aUn O$[R"UR5 M[ Uc [S5e[R "S5nURSUS 3- nUR#US
S 9 [%U5U['UR)S
55S .$) NzFlex Query is not configuredT)<02>parents<74>exist_ok<6F>3)<03>t<>q<>vz/Timed out waiting for Flex statement generationz %Y%m%d_%H%M%S<>flex_z.xmlr_)<01>encoding)<03>saved_tor[<00>bytes)r-rr <00>mkdirr\rN<00>FLEX_SEND_REQUEST_URLr
r <00>ranger<00>FLEX_GET_STATEMENT_URLre<00>time<6D>sleepr<00>strftime<6D>
write_textr <00>len<65>encode) r9<00>_r[<00> statement_xmlrX<00>done<6E>payload<61> timestamp<6D> destinations r<00>fetch_flex_statementr<74>js3<00><00> <1D> <1F>F<EFBFBD> <0A>~<7E><1C>;<3B><<3C><<3C>
<EFBFBD>O<EFBFBD>O<EFBFBD><19><19>$<24><14><19>6<>+<2B>I<EFBFBD><1D><14>l<EFBFBD>l<EFBFBD><16><1F><1F>s<EFBFBD>;<3B>-<06><07><15>A<EFBFBD>
<19>M<EFBFBD> <12>6<EFBFBD>#<23>#<23> $<24><01><1D> "<22><18>,<2C>,<2C>^<5E>#<23> ><3E>
<EFBFBD> <09>0<> <09>:<3A> <0A><04> <0F>#<23>M<EFBFBD> <11> <0C>
<EFBFBD>
<EFBFBD>6<EFBFBD>/<2F>/<2F>0<>%<25><15><1C><1C>N<>O<>O<><14> <0A> <0A>o<EFBFBD>.<2E>I<EFBFBD><18>/<2F>/<2F>e<EFBFBD>I<EFBFBD>;<3B>d<EFBFBD>$;<3B>;<3B>K<EFBFBD><0F><1A><1A>=<3D>7<EFBFBD><1A>;<3B><18> <0B>$<24>(<28><14>]<5D>)<29>)<29>'<27>2<>3<> <06>r)<02>returnzFlexConfig | None)r<><00>dict)rJr rKzdict[str, str]r<>rp)rXrpr<>ztuple[str, str])rXrpr<>ztuple[bool, str])<1C>__doc__<5F>
__future__rr&ru<00> urllib.parserC<00>urllib.request<73>xml.etree.ElementTree<65>etree<65> ElementTreerT<00> dataclassesr<00>pathlibr<00> FLEX_BASE_URLrrrtr<00> RuntimeErrorrr-r>rNr\rer<>rrr<00><module>r<>s<><00><01><04>#<23> <09> <0B><13><15>"<22>"<22>!<21><18>Y<01> <0A>(<28>/<2F><1C>6<><15>)<29>?<3F>-<2D>8<><16> <0B><18><18> <0B><18> <09>\<5C> <09>I<01><06>8<1F>"<22>=<3D>#r