From 1170b2897a6df23e6665f61bc8bb9d13e4ba3fe6 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Mon, 5 Sep 2016 03:31:48 -0700 Subject: [PATCH] Doc updates --- docs/Makefile | 5 +++ docs/source/_static/favicon.ico | Bin 0 -> 17957 bytes docs/source/_static/logo-apple.png | Bin 0 -> 15269 bytes docs/source/_static/logo.png | Bin 0 -> 15701 bytes docs/source/conf.py | 59 ++++++++++++++++++++++------- homeassistant/const.py | 37 +++++++++++++++++- setup.py | 32 +++++++--------- 7 files changed, 100 insertions(+), 33 deletions(-) create mode 100644 docs/source/_static/favicon.ico create mode 100644 docs/source/_static/logo-apple.png create mode 100644 docs/source/_static/logo.png diff --git a/docs/Makefile b/docs/Makefile index c2cf05dc0e496..e8b712ce8a1c8 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -18,6 +18,7 @@ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" + @echo " livehtml to make standalone HTML files via sphinx-autobuild" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @@ -54,6 +55,10 @@ html: @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." +.PHONY: livehtml +livehtml: + sphinx-autobuild --port 0 -B -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + .PHONY: dirhtml dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml diff --git a/docs/source/_static/favicon.ico b/docs/source/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6d12158c18b17464323bea3d769003e6dd915af3 GIT binary patch literal 17957 zcmV)IK)k<+P)ht(u002dT zNkl z#0(0O1SH2L=gm3JOxN#^u35tOJ?EWs;BI%{zM;~ss#~{OuI~R{#=HXXZmn%u{cXaE z0*c=$g#p=@AfqLp=k z11Qi4C?MYURNb?q}LqYwX=PpcW{!v8USK)mG1yRK=M z+|xdq9ltSk*nOFiW!_aXIQctovF>F6@D^&o7@~nQWpG+$wIK%^; zP@)F+08nnQD6x@e62Svn(x1T~gQS5hh2U*Yfo4}+>~61ZT2?uuC~v^R`E$>kxkE6Fd{bIgEr4Jdq3N*_gOoc$Mu&=766qdL)7}O zWxHMHTF)^Vw$%&R1y3ec5gOHT;QlSZ0SI#$0f{VDh6 ziH+szxZigk&RdY~y&FF(>HeX`Y~@9L5=bMCL_j#l2DH)u;3F)ZJOe=309|L#vkgE2 zL$v?Ansj@<)i}Th?QZ(|^V9GBQo7ZXnEz`7K)mrzy2+LV15gcR0A$b%fP6zh>=y%w zr@sTx&LOnu-J@@BTY6K>_={N#VBjk7+cV~OL*9g6p`tNO%b_Q=>rlhMs-#Y0+ z70{MTo!$&UU0jNePnTVX{&;wx~|^0a-cy5qljt|;28(2aiG+%c0s!zIc{LF zRkFaJsC4u>R7>i4==fFCv-?iHh&TKn!*hQ7u3gvIb?g_DMVSB+XNV2?99G}2Q@{E~ zkLy8k5PS}Ifl3p-wRk2<)A0bMw0_Z1KCS{Ta@pGI%bb8))8JqA=i?Wp! zXVjKQ|EDdI7RtG_Ap|Dak18Xv>BPVpLrd&eY#qDSRU^A!QeWSH9KrepMbpGb`?{?V#-~a4JzJf zKc+2b*nP+T#rWZ{-H*wOSpRBe2|h17HlENiqfm}&>8S=PVG9RKsV$iz20W7@$^&?+DfBxr4^5l@H!2|zQ}Xbw=U7cv9% zaX!$2;E7(WPeJBKaZgKYNcl1Nf%J#{FI4;&odI4`{$mozNAibE0BX6Iy})?VI2mM& z+#)XkWxOOGf)>!2Q$SMj$g#28TnPZh#;t1q8iJ{#i$D)s-^RS!9*0>VqZ1czD|gEC>eO4IZzN|khE_y; z; zFF6|8#Ddme(J_)hQObb?R`D#5qi5(e(8sw@iy(T6*T-uQ%}0gaaK49|dv|V?^e;3k zNgV3_1hXI5abCqCSoqYT>uZOBydjJqBHWOpgW%k2ZV#@(v4We|S zaDq};TmSTEJIB8lvxfX?FPRR|7$F4$T*6My0_tc_0Q3?LSO>mc>ekDGgyRqxLv>xf zc3Nd+Y=SWq#_ZYHu-aHzY-OgEJFILAK!(}pB{oGp#yRQ&E;CpStk$!b0y$Qw5}%zMO_jBBV?VKJT=J8!qe8 zH1!V9Yjw0&4h#N0)Uswj=-av#1!ul1Oab}PZA2f?h0@h|8{}bKDpv#P@;hGw%E@#B z;DAA()aDbDoBIu3F@4@gl~+&bF|{_upk8FyXkhS3wYOq+Q{8a{qvltLT@Pa`0`#YX zb`a2K_>E-HU3>$;6dQnJdbk>59MkLfn_v5Ec?u@|)A_BW zROptM{#NjFU>JS42UyP*_5)E;@PLpJRu)+#0tMuf4k-tN-#Vwm_zqnn=}!Zhj3{Xi zf8KCtPR*S_1&@&h&QE;75TMA3qX?*wBhHV&B&uXO&`HMf8lc1*#C(>@t7jY^4vFST z4H+YCF-B@#5ARxoQ^4x^yB}5NL2Xd)0gbbIDOMh^`@W|#N$UuJ_SPW`hJcRJ#VBa4 zehVO@@DUU>1jZW$#_ZCVD2vupXo68};5dY9z2hiGnZ6{@n8(j1mSz@gO}z^>&L+0Z zr*!=u7YMM7HNXZf;WE&>L0yPW^uG5>pxNMr-{pI_HL>$MNe*=Dl93!N2C`_cb3u=2 zjaf8~t&34}^c?*O;MlzD2;)IYPTYsiS{R?vWp4Uv&;%V&G7A*6 zB*|1@y>pNp;2`^)w?S?tMeYK!d4U&z3ev~`LR6aB=4%5f2H}`!uQNE;n5V-fi~@D_ z9#S7}>BjL#my~2fe6n4aTm2LOeV0!G=+75^cMsUAyUSmLb+n6)=TwC}Iq8@*=5x1hT@Z zkQadEv}Q6eOD>U{0C6~_yjhF3Ovxs>_8!)*CTWUJpj@e80sTH((4iD+wg4+R0`4%-!$|$A<#oW zsnyQFH`B_k<2w6S1JVV5<&XI9QEYY7fkucP0*>HH8j!{sT?_2cOL-jh0tRRXM4yiS z>7_uk#i0a#hDk4Uxio14bRV9P8u$V9M{T5k0W*1%vp{lW0;fTFi|{yY1Dghv%!^(H zJFCl+q6a~%nE}w|>*ROcBhdZ)j33-NkTx=Svor;M;#F3H=4uKar0k7*UOt5JOS=A= zwgnX4VF)a!JlwZtABgZISAg>kySM|i(An+u0=a{7=TqQx+aFCd!W%@y%xI+oUzv_K z&d&zAGDyw_=_e<17Ld(YE&~b}W}1B>0esyok)w{Jc#t@Qaf1DefuFLE?+1`mEy%oOJ zT4(LI1XJiB35OLx6>F&iHs~dK7U-k&)722okN)h#(ogq8^uFlZUJW#RGxRU7z@$&Q+>_V>x-U!rBXB0@ zrJTw<(0qRha{iJpr3dUCSV{C(cs8)~bhj^A1Rk(}mX|VR`U2a-b)fU4nZcwJz=p=P}UX%w{V{BPyr^EzuM(B4KsNPIARhc=Bkgmh+7&? zZ};(_cYrhpxjcQ*?27Zs^J=$yb^1wiwp>M9;yD^H5z{SWD^F}Uz3P|_6pm9(VmoZd zIy{ny=>t9qRa-zq9V__>_)q(5chJYQn^raF*FgXV9B{^WF+Jh}7G#3j(9FyrgM z>EK}XhH*+b^o@wnu+k$fIWL_UI(d@xwM4FSA~{4=`ix?=ArmY zA>-4y#&R7jSaoD)_;XmZr|{?SLWo?iAMrh0cvp+Y@oV6&ue<&oY6{LtJWK|VLjoRf zh$yMxJT4z`CX`jwjrKzD&S{&oN^gMQmK@kvtPE%mlT^L?Su83dEJbe*zc6Lu1#zsEuLkbEWx_8L)0z(bUKhD15E< zRj(T~d?m&|*Ux}q(biE1^a8m=Ujc4l6WKtD6DR9| zM42KF0K;j*2q24|^f&1og?cYQY}awDF9~!UFb)E|kAnxg(%0H$OuYj#rbWi$0giIM zPawYe(WZVM+cg4E>o9iTvHCvZoASPI$Lmne0-dOtS_09Ryf3_+(EQ)fMtZ`Og3h7D zfzTs2{pLVN@RI4wJkVUN6W;@fdLS|L=M#pL4psj}yOIUvN5WloKFEu7ARZDXxV5qr z+Vo9MaoYfI>Y1#A=#}c}5@`HyLbB5lI(AOI(5-?k<4cJE6|*Cc>ux9?5q?r@q0xQu zeQ5|9*2i%`f<)DpI1%tFiRkZ;`dl#TjDVXi>3Vni{jhFlL1y(T(C%EsAHa9i5(X_7 z(OQn~`Yj`k5NNV4*U{i*M_vhE0NyyKaiA$U`{goe1Dv7nJIjG1`nG-q@`?UQy8oDdwmS!+ zXX+r3cINR!a7~=g@g{ypZowx4+SojUqN%IWH?k!ie9a) zVExeIiy|$cOOMpMoJru`;;dy86b!E2=v@Q5Q_8ENM?fB9C@zG4bZ5%nko1NNAA!0I z)hy7Dxt}Kh;XjgqYD7N*Ud81F@S@sKM?w12ai=+r;q>&TGm`!RK4S-iL2uS4^?YDD z)jS1clE{AGKl(Ep^n9g^F1kgs_G(8(Q+i9zr!0C+Q6+rb({sY>| zE&%#iBvMknzos*Qj^Gafruk8a0ey}S0koU`48VED*;)0Dg_sr)+s=uFHd#cF*mjNX zGE!?_zbN>gyE&`@4)7|M0oQ3$O@!!t?>(;&n!gfSL@7+k==6Q)LFn;QT5@0qcr{*2 z{TuWJBAkZ5N#)uS;`<}i;sSi9X?sb+g|z>ICENk_cPhEjuOp6L2AIxB$Apoxb0_0UEp!|GcDu zH$;ndBQ1vh~2F%1Lp zwk@W(BmswsQU|(LcM|~)vZvnlRLjwjw*nK{B?<6mv~a*iV~$KQw5=h=h@Jjma^1Q>3pz73TI=3@1LLL3PK z{i&lVun%-MP=QMrUl(wI&bZ=lAG;(12Ux9JfJ1r{4}gBlGnxV3Io@oq4K$a~VK%~) zQJu!b?}hFS(=K!;f;UKe=o+Ay2t$D;BoGgzQ%eHiQA8H~~nd&^DJ+jR4|l1msdfC4S^m zH6WClSuD2r##_XdzZX)i7wB7{g*sgKfiBb@?diaI;MJ;od=AA4?bs_m!{7tq#M1 z^Q*>3_XF3_o_J_dNPlHBFj{-?4CovkMF`|f zdXfRUl-(qQjG>xoK$MVtXN$nM_`aC^ps(QXw~j|R9RhkEA`^jYL3e_V<*2P6eZcgCtL#E-%4xZmO*rY zexehA8shi>c#%Y^fNY{9145YvQM54aqwF|BIQAF2Q+V`mebxWlTjK50+aO8YC;!#E)-Ve27|bOA{t`skXJQ`lC6T^Fo-~30 zv&bV6^kbBGkZTO_F~?6OzC9VJF9YV}S;eQoIvuCyfKK5KT?f%c(PzCvX#Ptmm9JsS zubqy>KLOqMq>XjAgLj)ZQcnjhMopB8*iOGj3?P0Olh4!9`ta>qZClW1=@#?~4%q}383X2a6>oy=rm_6Vuk}stTIAi5ynu0de6%+$6 zOD{jpPB&8x-ro$=y`a-{mF;-fnTQRT-I8pP%zFs~Tl8=K0-~Hl?|R`)Jqn^!PzW4k zEgOMcy6b*mpDATZ0ulUxj3^M*^|s?)q=!M8${0$(@%T+Tf=rXXWCI&1qYAv6^m^S1 zIz}f_1iBxG2v9>6wLrj@fCl=6{tC&1g5SI6!p$psY-=zFc-&c4avA*o#o^p=5GanW za;w1E;tcb80u8)P&X+)mGfNu*SL@AkE07_t@e>eFKhl9~@Et*Osih4B_?kT0g3cz0 z_))>f{i1kg$A7>YV7)%9!$7a&Qr!#DzoKt>xzM~cG?=?#%EXQj$6W#4?@YVhy#>5( zdb6eiB~&pK-#?H9I2m1KJPQosY$AY1I<-I&MbrYrNTdZgD_Bk!DEzMWIThG`Qu%;r9OS)H z^Q1Q)k~;>v$#>A9I%R{i9h!Gc9OX;~8OR9AK}&g+1Na9$Vy<<-E6}idkon@0_R(4CpQ7fdOrJsCi0py2jp43QEmlXd6(Bg z->}1Rw^7Ro2%EXtaV)*LmyUZAP01$mR-7zv3t1$N3}ICXmV?}0urepK5H!F!?cuL%!3mxI??Z`48{ z#TJQTxk6Ha0W72$a6J_!(j7BgeF+z)hzPKOZ*>!}j@{A`bg!<~V{{7{F4+LOMt>y& z3;<J30@(7_~Po{0rEOkr91&y65m^nz`1`k`84nVTt2DA-r#&l z`X#VdUI%ZVeyHU@yzi37^9e#LsKbMl_k!OzLt#SaF1aZ;0^iHc6$jw=laIU;c>u_l zuJQ=T--P9TkawMR%m;GiUFR`itWJ{Kfy?A+o(27p0F5EQ$Np-s@A+$xT;NLrf*ha< zsMW`K2=q~=>nRZ3>#guwLyN~k)A;V) zzNc&8_m>X88a@Te_k`!@6uAG?E)Cl}R_UhK4OY3(d1mvFpZ z1N_0CWI|wrGfIYoI{Fo5a3orN*c%BSui5=ocsNwXM;d84+_!@)-d7J&b7%81E;dC;xPPv|B(ZcI&g;Zw|oIS&T{gA z)0~L>1x%1%c?h^j?~~7fSv*S`1oR0u18^xn1L!b@;s8nf%vNA6hxBdmzS4Je7PKf% z*hO2Iy1rwZ;04gVbLv`m2t+^e8tPX3pMw zMw{IwP(C7D!znQ5oBa*Kg|N3-n19BhLy^y5Kzf5;-I365ZpK6IJrKP^Gjt!m znJK199yK`8a*d#nJUZ}+q`^(Mb}C9*1Dq>gRriBG3v#O?zkvQEePkcdM4pyKzyaCo zwgrZ99j!r=^i3u}fERt2q5h)F0OUG5ZXBf>IiQ#89V`X8K*#GvaQQPW&JJ7(y&p^; z?kKb5C`B?#zLe-ntY%m>hG>1kr0{d zJ*X#xJI%dX27;WeXAlDJ&~7>jC?QHEe!xTqM;$wPRI>nhSZDAJ==r*la?n#bgCgKN z&Senf{#4V(dji7$=rA1%+Jp%lfaZ54el6W0{jp#pwm|qi?`^-+;&vZyT?H(^lru8Y;%twT|8Z8(QT}ulf$c1NAyKgM203 zWgPITjFjQvEO7=nJK*rkHC1{Gls2ioAlez&st>tMKu^^otpg6~2)!M+K>n1KKreoy z7y`^g=mz>J$hjcbQ$r$9&PE*tl;M&F@-T%GfWP|ZO^d9Azppv`L9`?2nCSBG7|>af z=fktW>l0}m9s-fn@WXXC!gY6b{vbUEu6w-e@0sU=rs=25gp97iKX@JjYn-3?3!+P- z;|Rd!j-{ibJ0W*p&0m2Q(D<>0nUVzI4|I?I4QnneS`qyfYMMk>=_sHb`K*HMcJUWV zF$7<577+p_v0e{@uA;Fd0^``s5}=Nz^uj+rooNIhK$t?xLASG%t-yH72m)nVprycE z=_TzUsd?acW`c8p_?Zk|V45z2oUHQOypC|7UDegzbOr||>GyR7DYNb!QBc@CVj?klRelrx9iDw_MazSyLD?6P)94A# z^MNk|9Y9WYuM7minGfhJV)CGa&(hysgApd09T zJk@Vw>3NCzGP{T!hS;E^O}02dL^FF@DG6-)x@A^V)c;QcKxdv}0tmLj(kXu7=Y zy$|}1bH6tc^h2jb;BnBG$Wbey8=#nIAgJM6&yNPeT_a1ix%bgih7_gay6%dlrn=x(CE|n;ZgzaXL2o{ zf;UR1QVKGKb9DyjliEgygSKNCOYje7cHpQ>wvY&Uz;pVfz5)7*`X~6VVG?hFKBMFG zQD`zZVXKrv;_2>so`uTiBNvbY`wvx#cP~7*Xxp%G9~dw*^KIvIDC$^uzox@qKjobr zt%OJ;U8Xld+%)HOITw2VnfA8xKX9Jl4_*enQ@iWcKsSEncJMYxZ>Jl09i5-$TaXK# zfO{42pA#Qg58ioBb>Mf9dz|wEb3o2@7CXHG6_Ja8y*wy8K|dfMF9VHOBSpXn5*Y;n zeUMVRgN{aM404s7@k!+r`hk8=Q+X2@!%CR~S||PFQ;-Xt#?D#5CHe`U17(2`JOLC+ znM6Rc75)Hu+WFHR2)sxw1Hs$wd$KZ`2EUSaaM^p!8w5JSEAw*3g!@3%*O5hf3#@jF zW<)2!>iIk`#4-fjmnXq?J5HCU~Fd2r8lPoCe=GSHggi znK<>Uf$kg)=^AIMk_x@Ymkc!T#`N%Kqmgi{SA1>d~45(KWhH*MpoZ50VMN zm!0l%A%t6b#rg-xAkHHM1sBwQpa)@AUe42zeh@0?e2uu!dqR4llK^a?iX*_aG_&}` zn2i!M2MeeI3YbqZI4W~-Apf7*-P!ff>Q`K^nV{2gZQpx{teqLEdn#at8o!%L7ga;9D6Y zPXKMHlS_a~vSl>zEe+WL0Ud_Fb9S~54ZYn?%;Yhc5kRVpm79Ry^d0U8eP2AL0pIhl zI~+)J_Q(^!X);l!1B2-#>w&YpX8ImTSLr1m0qq&0w}Gx8hhe~WKf90fG3{{R+%|(#O4L;E2{#Y91s#QyU1m|e4tOY54y>5hczcG1NwhP;z% zrf3Ev-xFvdlcC4n^poTd==(@|#3_L!C(vJR2XBhr#1 z+@TV-uS^n@}q0 z(Co3$JMISHH;M=Wr_+ac;A;j@2JMz7pDWFPXZeELV9EIf)1$9|dyXjCuzOBrU+)ok zWnqpR-Uv5$YWGXvV{qp4lKJ30OXi>`$bH-^iBNE`ZoGa4U+muZVssHK*;nvvbQ(B6 z^91qW-OMz~AZ=MNOBTQ_CG9o`Qeap~!?)ZnK#(Xwh`z6VbRRf>%QI38l0q$KfH#tp zbsu;s`iK4o?6lCWn6I%nMRGk*#yvzq3*?}4K1d1=J2wMW&JyP;V82uB_5?aR#jXIK zIL(~-!1eNgGZW+@dhigiO1jE5K!8d73+!Puw*o8qhg~4&4gc$#sww4pwZpv<{a@9O);-+>-0y|;o#|@V|BS6vb$OS&3 zgecIG&SU~>*h>-6z;+W`+acRhYDoq1aoG+y>>~@D)5VpCVAq*@k<_t2$B^1pe3FSDK+ zNchuTEccd94d_V!oT`rX-69eT3%8$+G*8s{`amZC6m68Iv;(5_ zuvS2{h6W@+W?XQN@-+)f0%8@P*dNb4IsRlbCY`R(=u-h`p6vWGby=ykeX zXMujAL#PCSKLkHWv>xD5Mg_2#ef$SxX%X## zQ#l~LfsOR!Eua9;2*3}Zsj^VLYCIx9-7(qBfMdL#v2=Jj00BNa9`X8yUB}Wm?6)%A z%8gdW4uAH)8u5 zri;bQ`MEDW+7NF`L}MV#HueCuWRi-1@SzU8LT#>JL1w?WnKXe(z1#J2p8~muMw$qV zUo8086L2PREv3NeWD_`s5Yl}Rd2P6fa!7kNc%jUOiAC*Rb|=7)zq1ZWFYub`N16xx z#0)kAoB4whU^}~P{Fx*Ixg?MXB(ResK#^q@EhC*mV6bHv+)h4;;GYrz{eT*N1l`GZ z08HUV9AGP3NB~@2K@I5dJVyX1q#F*%S3pD1kMR%b#Im!+&T+K0^6C1_FCl<{KJMSp zL4GOYPdKI=t`Bnde^vG2;<0)z9_V&h62up+LM><+wK$+G7R$Pp6a}EA} zC~u9$BLA(6eKhX2oWJEP0HDx>eS#e<2wN`SFn`N3rR9LRib(XDq9~*Fh z`Q+<6pv9V}nZQnVa|9@`P|q-R77|r#B$rMjAV{1YId@0{@@=h4rh-bK0RbXFv4ybK zT27K$BBTQ$KV7n?dIh0QM0S=Q-KIj5|<7;3t=a37WOn}Znl@D*-&l&(4n#!4DGCGe~1f##nmt?77>Wp#A z4BrtZ`%AzRb_Vb^UqtEkhUloJbUBHg0IalR%~_^Sc$@-2BRdv4$p(-@6$0e?5ji@8 zMQj5`@c}OaoB59oK!A=2P(>vXAc1O%@ni3r01XHkqLXP3EWxD-(1^|C1Dyy_2kfzg z@}+oG0p--v8pt$S57B_bpzU=k9%vKo&nv)KsyPYBGYMDfBgzwPr&BL9rkIEx{c zfYO(NLWpKSh{hZMnzP4p8m3Z=zeFmKMizbWb13cx(rH2w(1;uofUV@?pEGET1B8gD z6!c8?>Mg)WTFg(tKAr<0-V(^~v!Jn4Y}}baekfYri)E*2Yr#j9%&6gZxcWpO{6$}_AC-vg@UfMkjeM`phy<6 zm^Gj)b-!)|8kz_0Sf_04cf6Jni=vhK`1;rpEMEd0)#hUxJD$Dm`x(Lr$Z&aKi>_9(qhK^-;feI>7JOk7(B8 z-tWN?xg2Of9gBeq;yKyIr=WZMoX7Hzy|){sIZ$Ui962UOn_2u-nK9@pmH_Bqc20Pt zA4=;;FFWv^W;uFx*@5qAuZX1 zAKqO71T3MMYvJXtnRNjRn|ABVfMv#X3E;;R29LQ8TImuvu06+;FSq`AoZa7I2RaVb z6V~x)^+l(vYpwsFwG$h!WA`0X?gI7Ku8rS0t~@$^|G6LQ7Z)>Q?LFuJ%r~av)M*V6 z;7ZN`vbdhUAVD(e0i=;3je#`E7zFGkUz!3nY__Gi*f`&3@GSrP1agY{)0r>TkEKS*VX^aarBSIgb1FL8X9F#jb3Al%I*Z?|9{j^1^ zD6I!rjEg;d`?VHGvn4KLUc4#HWfk)9A^HcZ|KrGqPKB7R0*~>~Z zTf1Xv?|r4Rl!a6SMb!8~rG)GAo<)t26FHg)Bf;!#KQWd+f>_*t9KNgBN2H%fzSfqA z#A76Y9G#c$p^!@8CFv=Hfpg?vc?|fA`LY_=EZ@odKp$>l3b2tR1_K=l@Ey>d26(`! zX2`#9%6g*dZU?0g04;d}Lqj?MXPL6sz_i8;`UBA1l!pDLRCKiC;(Kgqh7>0JS5$vp5ALgsc0(-5_661$bOS8IVpoNub-QAOO;ZF6;yS&y>Sta%C{! zQcEL{3|43kkV*q-1q8{W4#+22596Dc@j!qIYJp>>|eq=_HUA^d=E> zIU6Vhn&L_)U@hATgY>F5s9TW^G@vPY;PjVI=m@pXML*J)A=*|3IdehAv&lIOjFy+A z36RUxG7pHbgS&ww67hgi`(VWiW1BuE;j4U|O^aC$!1;cnN;&)2zizLZT%K2VgZGm@ zk(|w4bSKEsv~7i^?R%DLAk&n_0v6x^Lv$Vof$?0byFoAY9`=3%@7(CJ$Y98x6*v@K z0Rz^heWzIvn8Cp4kDz$D(JavOysNwd;AdUpO$V0gL`?yT`I+TF3WrGnN-Ps$9CcI! z@s?3A-~0d})Dlkzh&O=L0uh3Ez+;?B2-aqowk8jDUr{xM{lGj110>%P_=Dy!_=C*9 zX#t^J_igHc2iQg`5a%PFTq2a=J6rtd;-Go(YD`C|AsKM&fW2p@hLeaA52$_ACPF)0 zpc8k<1HcH$lO&K#=N9<~b{3Sc^^#%3on<{~2+};TK5jP1UBT;vaUf0HYl7#3eCf_~ zyMlOfwi5&fif^wirq~i;mYW3d^90_^7epY`(s@wsDV-X?v)s~E_KA`f(glDcX7`ty z($K@c1r*B%n89U!Di|3>0&uBbBo_d!-i^`Cp!0N@-U8(EuRaf?+gEl9O~l8Rjo246Vy^5ATRUS( zs`BmVSJaf*m8_)}9FMPP2u?HULwjJj51_J#YtsnBk6y*?@LIp=Z?xa)^2MpnWoDFiDbHB42Jig$N;OiHozjxGK+kgTa{dLb^)jM=g0AuI^|FC)cv>$64(g}u0BX#Km1dHt zs{WHRtpO;qB`Vv-Ra5_QDgPHsrd)1TPOcGf6Yd0J8F*o>4;c3s;%Ek(Y`K!x+L9P+ zugaE8F(oUO^0jGw=F?cVq)Y?6PpGSGoJB@RY4&}!o$`r154<6#$^?)UdC9p6c*||& z&H>r)eC5ssb~?%Kvp|LOgL4J&fb^0oAYP`*V?a+9G6JY!E-p}ErxY6*20W9Z}nrTSPvLMq#I)6%$!3R zvjXHDdDm?XTqQrtM_mYkwBvGM7Nv4FkR==G0xXf)&N7e+r;hbN6PfR< z2Ts;!yeC2KblPh*ki$dz80d0c&r?8zWo!cCX@UciVdG3Ot7N}%V6sVsMX|4H`5s0s zwrwo`U>efO5M1Jyy4MK9&(n#VZW%OI8G;%ap+&6yT}D7Hj9~mtR-|#gGTa!dZs1ONk+ndCElxX-LT9wR1NO^H$Y<2l?zA#wmi!QaLK!%!DyVK`*iKVNnFmu(_ zMF5)buXWPE2)IfH`t9f*06N(HToaAOCgDyo0@yG8jnMr0X8Yd_lr9ni(0#Uq?$DnA zWUzm&`6f}rT!7T)Yx|xslP}D#9!pRuPyQ)lp#<2)Ft<| zzh0FCp^hm(4w;NYseS|`a+qX5jbmHzo6(cMcJ{K(h&%(>dJ~n6E$zcvKiHFYY_fwF z*@S^?ej^XaGBa~2X$a6-clZe*q$5!vVtW5x^I^N@m^#HAR?F2#NXV45_A&&3tu~H$ z6WK|Ips1y(&lO*n392ty(!|f6Rb@IwoY~2fEN%X56Pf>+HI!~jb83Ae&1`Gm_pl8X zKX=&QCaG#nCrOEIuBk5(DlMB@x>;Y+ZD0^L#ld-=V8g{AMAA9Y*b{hHB9^P9G8edVmT zoGtDxf!fq$USq1>4fNxD9H88?P?gvckZXufvM*|;7$+Sxw8=A+krhYHY_ubW) zNc3#2^>c$kXYmnnz&O%1z;|I30E?>7>aay$zUMIW1+1ia|QBPpC)%OV^%j#v@ z5|&`?udV++L+m>WLEGNlivr1}bDZffN%czXJ`?$|FT3t!9}2Xg0}Aw|hs*%))aXAE zDXXk#erU&@nUn96=8xaF?8z$=u55bwS^1BvUoo|8xi zn)4eQfu&{#?=ex+lnVi9X={yV=1!sww6Sse0^62sY7<{=N@O2~+rYmAj(&=@hpn;O z4Y5s4%U@}Tt7QTJhYcZ7)3%%18eGdZ08X(rd@F+hSZ1*?v2E;tjjy#4;S6+=LZ*{PPUL3f(AUTu_J z<4;_AnW&H0T3l_3UR+<&XtjyHDqnk%Y$LeD`oxyLKFPK_0sGWT&_|$}St=%3bdwQQGb6|xpOC~SgQE^6*GHsoFzcd`4=1&~ zPDwY$h<)N#ZC5sAOQFYM%c<0m_Mo@xNbigA8_^eQR#na4{9N6uWfO}3eEqJvb^9LK za@FkT1A9aL6ECmY_5T2A%A}qQXC0;h001I-R9JLVZ)S9NVRB^v0C?JSOvz75Rq)JB gOiv9;O-!i-056;c)UFJvO#lD@07*qoM6N<$f?sy{TmS$7 literal 0 HcmV?d00001 diff --git a/docs/source/_static/logo-apple.png b/docs/source/_static/logo-apple.png new file mode 100644 index 0000000000000000000000000000000000000000..20117d00f22756f4e77b60042ac48186e31a3861 GIT binary patch literal 15269 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 literal 0 HcmV?d00001 diff --git a/docs/source/conf.py b/docs/source/conf.py index b9f5f22567209..4ca74060aada3 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -21,6 +21,13 @@ # import sys # sys.path.insert(0, os.path.abspath('.')) +from homeassistant.const import (__version__, __short_version__, PROJECT_NAME, + PROJECT_LONG_DESCRIPTION, PROJECT_URL, + PROJECT_COPYRIGHT, PROJECT_AUTHOR, + PROJECT_GITHUB_USERNAME, + PROJECT_GITHUB_REPOSITORY, PYPI_URL, + GITHUB_URL) + # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. @@ -53,18 +60,18 @@ master_doc = 'index' # General information about the project. -project = 'Home Assistant' -copyright = '2016, Home Assistant Team' -author = 'Home Assistant Team' +project = PROJECT_NAME +copyright = PROJECT_COPYRIGHT +author = PROJECT_AUTHOR # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '0.27' +version = __short_version__ # The full version, including alpha/beta/rc tags. -release = '0.27.0' +release = __version__ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -124,13 +131,31 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -# html_theme = 'alabaster' +html_theme = 'alabaster' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # -# html_theme_options = {} +html_theme_options = { + 'logo': 'logo.png', + 'logo_name': PROJECT_NAME, + 'description': PROJECT_LONG_DESCRIPTION, + 'github_user': PROJECT_GITHUB_USERNAME, + 'github_repo': PROJECT_GITHUB_REPOSITORY, + 'github_type': 'star', + 'github_banner': True, + 'travis_button': True, + 'touch_icon': 'logo-apple.png', + # 'fixed_sidebar': True, # Re-enable when we have more content + 'extra_nav_links': { + '🏡 Homepage': PROJECT_URL, + '📌 Community Forums': 'https://community.home-assistant.io', + '💬 Gitter': 'https://gitter.im/home-assistant/home-assistant', + '🚀 GitHub': GITHUB_URL, + '💾 Download Releases': PYPI_URL, + } +} # Add any paths that contain custom themes here, relative to this directory. # html_theme_path = [] @@ -147,13 +172,14 @@ # The name of an image file (relative to this directory) to place at the top # of the sidebar. # -# html_logo = None +# html_logo = '_static/logo.png' # The name of an image file (relative to this directory) to use as a favicon of -# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# the docs. +# This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. # -# html_favicon = None +html_favicon = '_static/favicon.ico' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -170,16 +196,23 @@ # bottom, using the given strftime format. # The empty string is equivalent to '%b %d, %Y'. # -# html_last_updated_fmt = None +html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. # -# html_use_smartypants = True +html_use_smartypants = True # Custom sidebar templates, maps document names to template names. # -# html_sidebars = {} +html_sidebars = { + '**': [ + 'about.html', + 'navigation.html', + 'relations.html', + 'searchbox.html', + ] +} # Additional templates that should be rendered to pages, maps page names to # template names. diff --git a/homeassistant/const.py b/homeassistant/const.py index a07316711d19e..c367792852af6 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,9 +1,42 @@ # coding: utf-8 """Constants used by Home Assistant components.""" - -__version__ = '0.28.0.dev0' +MAJOR_VERSION = 0 +MINOR_VERSION = 28 +PATCH_VERSION = '0.dev0' +__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) +__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4) +PROJECT_NAME = 'Home Assistant' +PROJECT_PACKAGE_NAME = 'homeassistant' +PROJECT_LICENSE = 'MIT License' +PROJECT_AUTHOR = 'The Home Assistant Authors' +PROJECT_COPYRIGHT = '2016, {}'.format(PROJECT_AUTHOR) +PROJECT_URL = 'https://home-assistant.io/' +PROJECT_EMAIL = 'hello@home-assistant.io' +PROJECT_DESCRIPTION = ('Open-source home automation platform ' + 'running on Python 3.') +PROJECT_LONG_DESCRIPTION = ('Home Assistant is an open-source ' + 'home automation platform running on Python 3. ' + 'Track and control all devices at home and ' + 'automate control. ' + 'Installation in less than a minute.') +PROJECT_CLASSIFIERS = [ + 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 3.4', + 'Topic :: Home Automation' +] + +PROJECT_GITHUB_USERNAME = 'home-assistant' +PROJECT_GITHUB_REPOSITORY = 'home-assistant' + +PYPI_URL = 'https://pypi.python.org/pypi/{}'.format(PROJECT_PACKAGE_NAME) +GITHUB_URL = 'https://github.com/{}/{}'.format(PROJECT_GITHUB_USERNAME, + PROJECT_GITHUB_REPOSITORY) + PLATFORM_FORMAT = '{}.{}' # Can be used to specify a catch all when registering state or event listeners. diff --git a/setup.py b/setup.py index caa5b177b5c7a..67366bd7d8322 100755 --- a/setup.py +++ b/setup.py @@ -1,12 +1,15 @@ #!/usr/bin/env python3 import os from setuptools import setup, find_packages -from homeassistant.const import __version__ +from homeassistant.const import (__version__, PROJECT_PACKAGE_NAME, + PROJECT_LICENSE, PROJECT_URL, + PROJECT_EMAIL, PROJECT_DESCRIPTION, + PROJECT_CLASSIFIERS, GITHUB_URL, + PROJECT_AUTHOR) -PACKAGE_NAME = 'homeassistant' HERE = os.path.abspath(os.path.dirname(__file__)) -DOWNLOAD_URL = ('https://github.com/home-assistant/home-assistant/archive/' - '{}.zip'.format(__version__)) +DOWNLOAD_URL = ('{}/archive/' + '{}.zip'.format(GITHUB_URL, __version__)) PACKAGES = find_packages(exclude=['tests', 'tests.*']) @@ -21,14 +24,14 @@ ] setup( - name=PACKAGE_NAME, + name=PROJECT_PACKAGE_NAME, version=__version__, - license='MIT License', - url='https://home-assistant.io/', + license=PROJECT_LICENSE, + url=PROJECT_URL, download_url=DOWNLOAD_URL, - author='Home Assistant', - author_email='hello@home-assistant.io', - description='Open-source home automation platform running on Python 3.', + author=PROJECT_AUTHOR, + author_email=PROJECT_EMAIL, + description=PROJECT_DESCRIPTION, packages=PACKAGES, include_package_data=True, zip_safe=False, @@ -41,12 +44,5 @@ 'hass = homeassistant.__main__:main' ] }, - classifiers=[ - 'Intended Audience :: End Users/Desktop', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Operating System :: OS Independent', - 'Programming Language :: Python :: 3.4', - 'Topic :: Home Automation' - ], + classifiers=PROJECT_CLASSIFIERS, )