403Webshell
Server IP : 182.53.201.61  /  Your IP : 216.73.217.175
Web Server : Apache/2.2.15 (Fedora)
System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686
User : apache ( 48)
PHP Version : 5.3.3
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/ibus-pinyin/engine/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/ibus-pinyin/engine/pysqlitedb.pyo
Ñò
,¯Jc@sRddkZddkiZddkZddkZddkZddkZddkZddk	Z	ddk
Z
ddkZddkZe
dƒ\
ZZZZZZZZZZZZZddZdfd„ƒYZdfd„ƒYZd	„Zd
„Zd„Z d„Z!e"d
jo3ddk#Z#e#i$ddƒZ%e%i&ddƒGHndS(iÿÿÿÿNi
i<it
PYSQLiteDBcBsÈeZdZdddd„Zdd„Zd„Zdd„Zd„Zd„Z	d	„Z
dd
„Zd„Ze
d„Ze
d
„Zd„Zd„Zd„Zddd„Zd„Ze
d„ZRS(s=phrase database that contains all phrases and phrases' pinyinspy.dbc		Csd|_|o&ti|ƒ|_tiƒ|_dSti	t
ƒ}tii||ƒ}ti|ƒ|_tiƒ|_|ii
dƒ|ii
dƒ|djoÎtidƒ}ti|ddƒ}ti||ƒ}ti|ƒpti|ƒnyit|ƒ}|djp|ddjo;d|tiƒf}tid	|IJti||ƒnWq|q|Xnd
}y|ii
d|ƒWnHtidIJti|d|tiƒfƒ|ii
d|ƒnX|id
ƒ|id
ƒ|iƒtƒ|_dS(NsPRAGMA synchronous = NORMAL;sPRAGMA temp_store = MEMORY;tHOMEs.ibustpinyintids0.1s%s.%ds4Can not support the user db. We will rename it to %ss:memory:s ATTACH DATABASE "%s" AS user_db;s3The user database was damaged. We will recreate it!tuser_db(tNonet_last_flush_timetsqlitetconnecttdbtpyparsertPinYinParsertparsertpathtdirnamet__file__tostjointexecutetgetenvtisdirtmakedirstget_database_desctgetpidtsyststderrtrenamet
create_tablestcreate_indexestgenerate_userdb_desctCachetselect_cache(	tselftnameRtfilenameRt	home_pathtpinyin_pathtdesctnew_name((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt__init__(sH	

 


tmaincCs‘y!|iidƒ|itƒWnnXd|}|ii|ƒd|}|ii|ƒd}|ii|h|d6ƒ|itƒdS(s2create all phrases tables that contain all phrasess!PRAGMA default_cache_size = 5000;sBCREATE TABLE IF NOT EXISTS %s.py_pinyin (pinyin TEXT PREMARY KEY);sDCREATE TABLE IF NOT EXISTS %s.py_shengmu (shengmu TEXT PREMARY KEY);seCREATE TABLE IF NOT EXISTS %(database)s.py_phrase (
                            ylen INTEGER,
                            y0 INTEGER, y1 INTEGER, y2 INTEGER, y3 INTEGER, yx TEXT,
                            s0 INTEGER, s1 INTEGER, s2 INTEGER, s3 INTEGER,
                            phrase TEXT,
                            freq INTEGER, user_freq INTEGER);tdatabaseN(R	t
executescripttflushtTrueR(R R)t	sqlstring((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyRas

cCs‘y~d}|ii|ƒd}|ii|d	ƒ|ii|dttiƒƒfƒd}|ii|d
ƒ|itƒWndGHnXdS(Ns4CREATE TABLE user_db.desc (name PRIMARY KEY, value);s(INSERT INTO user_db.desc  VALUES (?, ?);tversions0.1RsCINSERT INTO user_db.desc  VALUES (?, DATETIME("now", "localtime"));screate-timesdesc table has been created.(sversions0.1(screate-time(R	R*Rtstrtuuidtuuid4R+R,(R R-((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyR}s%cCs2d}|ii|h|d6ƒ|itƒdS(NsØ
                /*
                CREATE INDEX IF NOT EXISTS %(database)s.py_phrase_index_1 ON
                    py_phrase (y0, y1, y2, y3);
                */

                CREATE INDEX IF NOT EXISTS %(database)s.py_phrase_index_2 ON
                    py_phrase (ylen, y0, y1, y2, y3);
                CREATE INDEX IF NOT EXISTS %(database)s.py_phrase_index_3 ON
                    py_phrase (ylen, s0, s1, s2, s3);

                /*
                CREATE INDEX IF NOT EXISTS %(database)s.py_phrase_index_4 ON
                    py_phrase (s0, s1, s2, s2, s3);
                CREATE INDEX IF NOT EXISTS %(database)s.py_phrase_index_5 ON
                    py_phrase (phrase);
                */
                R)(R	R*R+R,(R R)R-((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyRŠscCs*d}|ii|ƒ|iidƒdS(Nsø
                CREATE TABLE tmp AS SELECT * FROM py_phrase;
                DELETE FROM py_phrase;
                INSERT INTO py_phrase SELECT * FROM tmp ORDER BY ylen, y0, y1, y2, y3, yx, phrase;
                DROP TABLE tmp;
                sVACUUM;(R	R*(R R-((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pytoptimize_database¡scCsMd}x3tiiƒD]"}|ii|t|ƒfƒqW|itƒdS(s,create table pinyin that contains all pinyins)INSERT INTO py_pinyin (pinyin) VALUES (?)N(tpydicttPINYIN_DICTtkeysR	RtunicodeR+R,(R R-tpy((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pytinit_pinyin_table«s
 cCsMd}x3tiiƒD]"}|ii|t|ƒfƒqW|itƒdS(s8create table shengmu that contains all shengmu of pinyins+INSERT INTO py_shengmu (shengmu) VALUES (?)N(R3tSHENGMU_DICTR5R	RR6R+R,(R R-tshengmu((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pytinit_shengmu_table²s
 cCsÛd}d}x»|D]³\}}}yN|ii|ƒ}t|ƒt|ƒjo)d||f}	t|	idƒƒ‚ndddddddddddddg
}
t|ƒ|
t<d}xD|d D]8}|iƒ|
t|<|i	ƒ|
t
|<|d7}qÇWt|ƒdjo$ditt
|dƒƒ|
t<n||
t<||
t<d|
t<|ii|||
ƒWnItj
o=}
|GdG|id	ƒG|G|GHd
dk}|iƒnX|d7}qW|itƒdS(sƒ add phrases to database, phrases is a iterable object
        Like: [(phrase, pinyin, freq), (phrase, pinyin, freq), ...]
        s—INSERT INTO %s.py_phrase (ylen, y0, y1, y2, y3, yx, s0, s1, s2, s3, phrase, freq, user_freq)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)iu%s %s: Can not parse pinyin.tutf8iit't:sutf-8iÿÿÿÿN(Rtparsetlent	ExceptiontencodeRtYLENt
get_pinyin_idtY0tget_sheng_mu_idtS0RtmapR/tYXtPHRASEtFREQt	USER_FREQR	Rt	tracebackt	print_excR+R,(R tphrasesR)R-tlinetphraseRtfreqR7t
error_messagetrecordtitpteRM((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pytadd_phrases¹s:-$


cCsy|iSWnnXd}h}|ii|tƒ}xI|D]A\}}}||jog||<n||i||fƒq>W||_|S(sget pinyin tables3SELECT phrase, y0, s0 FROM py_phrase WHERE ylen = 1(t
_pinyin_tableR	RRUtappend(R tsqltpinyin_tabletresultRQty0ts0((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pytget_pinyin_tableÜs
	c
sˆditt|ƒƒ}|i|}|djo|Sd}ˆodt|ƒg}ndt|ƒg}d}ˆtjonxX|d D][}|iƒo!|id||i	ƒfƒn|id||i
ƒfƒ|d	7}qŒWnîxê|d D]Þ}|iƒo,|iƒ}	|iƒt|	ƒ}
|	t
ijot
i|	}n
|	g}|
t
ijot
i|
}n
|
g}g}
xW|D]O}xF|D]>}||}|t
ijo|
itt
i|ƒƒqqWqWt|
ƒd	jo$|id
|di|
ƒfƒqÎ|id||
dfƒn–|iƒ}	|	t
ijo\g}x/t
i|	D] }|itt
i|ƒƒqiW|id
|di|ƒfƒn|id||i
ƒfƒ|d	7}qúW|doD‡fd†}dit||dƒƒ}|id|dƒn|hdi|ƒd6}d|}|d}t|ii|ƒiƒƒ}||i|<|S(sJselect words from database by list that contains pyutil.PinYinWord objectsu's|( SELECT * FROM main.py_phrase WHERE %(conditions)s UNION ALL
        SELECT * FROM user_db.py_phrase WHERE %(conditions)s )s
+ylen = %ds	ylen = %diisy%d = %dss%d = %disy%d in (%s)t,s	y%d == %sss%d in (%s)cs
|iˆƒS((tget_pattern(tx(tmohu(s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt<lambda>.sR=s	yx LIKE "s"s AND t
conditionssSELECT * FROM s4 GROUP BY phrase ORDER BY user_freq DESC, freq DESC;N(RRHR/RRR@tFalsetis_valid_pinyinRZRDRFtget_shengmut
get_pinyinR3tMOHU_SHENGMUt
MOHU_YUNMUR4R9tlistR	Rtfetchall(R tpysRdt
pinyin_stringR]ttables_uniontsql_conditionsRUR7R:tyunmutshengmu_listt
yunmu_listt
pinyin_idststyRtshengmu_idstpptpatternt
sql_prefixt
sql_string((Rds+/usr/share/ibus-pinyin/engine/pysqlitedb.pytselect_words_by_pinyin_listïsr



!
		
&$$


cCs(|ii|ƒ}|i||ƒ}|S(s/select words from the database by pinyin string(RR?R~(R tstringRdRoR]((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pytselect_words_by_pinyin_string>scCsŒxn|D]f}|tdjo2d}|ii||t|t|tfƒqd}|ii||d ƒqW|iƒ|ii	ƒdS(s;this function adjusts frequence of phrase in user database.s`UPDATE user_db.py_phrase SET user_freq = user_freq + 1 WHERE ylen = ? AND y0 = ? AND phrase = ?;s¥INSERT INTO user_db.py_phrase (ylen, y0, y1, y2, y3, yx, s0, s1, s2, s3, phrase, freq, user_freq)
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1);iN(
RLRR	RRCRERJR+Rtclear(R trecordsRTR[((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pytcommit_phrasesEs,
cCs|i|gƒdS(N(Rƒ(R RT((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt
commit_phraseSscCs8d}|ii|||fƒiƒ}|i|ƒdS(NsESELECT * FROM main.py_phrase WHERE ylen = 1 AND y0 = ? AND phrase = ?(R	RRnRƒ(R tchart	pinyin_idt
shengmu_idR[R‚((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pytcommit_charVs!icCsg}g}d}d}x|D]ú}||tdjoPn||t7}||t7}|tdjo|tidƒ}	nx“td|tƒD]~}
|
djo.|i|t|
ƒ|i|t|
ƒq—ti	|	|
dƒ}|i|i
ƒƒ|i|iƒƒq—WqWd}|ddddddddd|||g
}
|djo.|| |
dd|+|| |
dd|+nL|d |
dd	+|d |
dd
+d„}di
t||dƒƒ|
d	<|ii||
ƒ|iƒ|iiƒdS(
sSthis function create a new phrase from a phrase list and put it into user database.uiiiR=s¨INSERT INTO user_db.py_phrase
            (ylen, y0, y1, y2, y3, yx, s0, s1, s2, s3, phrase, freq, user_freq)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)iiii
cSsti|S((R3tID_PINYIN_DICT(R((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyRe}sN(RCRJRItsplittrangeRZRERGtpyutilt
PinYinWordRDRFRRRHR	RR+RR(R RORRt	user_freqRvRyRQt
phrase_lengthRVtysRUtwR[tvaluesRj((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt
new_phrase[s@
-
	 
cCsId}|ii||t|t|tfƒ|iƒ|iiƒdS(s Remove phrase from user databasesFDELETE FROM user_db.py_phrase WHERE ylen = ? AND y0 = ? AND phrase = ?N(R	RRCRERJR+RR(R RTR[((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt
remove_phrase…s(
cCsh|idjotiƒ|_n|ptiƒ|itjo |iiƒtiƒ|_ndS(N(RRttimetFLUSH_PERIODR	tcommit(R tforce((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyR+s
!
N(t__name__t
__module__t__doc__RR'RRRR2R8R;RXR`RgR~R€RƒR„RˆR“R”R+(((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyR&s$9	
	
		#	O			*	
RcBsZeZdZdd
d„ƒYZdd„Zd„Zd„Zd„Zd„Zd	„Z	RS(s&cache object for cache history queriestSlotcBseZdZd„ZRS(sSlot item of cache objectcCsd|_d|_d|_dS(Niÿÿÿÿ(R•Rtvaluetindex(R ((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyR'œs		(R™RšR›R'(((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyRœšsicCs||_|iƒdS(N(t	_max_slotR(R tmax_slot((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyR'¡s	cCsg|_h|_d|_dS(Ni(t_slotst_dictt_time(R ((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyR¥s		cCs&|ii|ƒpdS|i|=dS(N(R¢thas_keyR(R Rž((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt__delitem__ªscCsG|ii|ƒpdS|i|}|id7_|i|_|iS(smreturn a vale associate with the giving index. It cache does not has this index,
        it will retrun None.iN(R¢R¤RR£R•R(R Ržtslot((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt__getitem__¯s
cCsn|ii|ƒo|i|}n
|iƒ}|id7_||_|i|_||_||i|<dS(Ni(R¢R¤tget_slotR£RR•Rž(R RžRR¦((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt__setitem__ºs		cCsjt|iƒ|ijo tiƒ}|ii|ƒn.|iid„ƒ|id}|i|i=|S(suget_slot will return a empty slot. If there is not any empty slot
        it will find the oldest slot and return it.cSs|i|iS((R•(RcRx((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyReÌsi(	R@R¡RŸRRœRZtsortR¢Rž(R R¦((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyR¨Ås

((
R™RšR›RœR'RR¥R§R©R¨(((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyR—s				cCs|ti|ƒptdtƒ‚nyIh}ti|ƒ}x)|idƒD]}|d||d<qLW|SWndSXdS(Ns%s does not exist!sSELECT * FROM desc;ii(R
texistsRAtdbnameRRR*R(tdb_fileR%R	trow((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyRÑsc		Cs@ddk}tƒ}x$totƒiƒ}|pPn|iƒ}|i|ƒ}|iƒ|}d}x=|D]5}d|t|ƒ|tidƒfGH|d7}qrWdG|GdGt	|ƒGHxrtojy-t
tdƒiƒƒ}|i||ƒWn5tj
o}d	GHt
idƒnd
GHqÅnXPqÅWqWdS(Niÿÿÿÿis%s = %s %s R<isOK t =s count =s	commit = tExitsInput is invalidate(R•RR,t	raw_inputtstripR€R/RJRBR@tintR„tKeyboardInterruptRtexit(	R•R	tltttresRURVR—RW((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyttest_select_wordsÝs8	%cCsÏtƒ}tiƒ}|i|ƒ}d}x‚t|ƒt|ƒjoh|t|ƒ}xQtt|ƒddƒD]7}|i|| ƒ}|o||dt7}PqoqoWq-Wdit	t
|ƒƒGH|GHdS(NuiiÿÿÿÿR=(RR
RR?R@R‹R~RJRRHR/(RR	RRoR]tppsRct
candidates((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt	test_caseýs	cCs@tdƒtdƒtdƒtdƒtdƒtdƒdS(Nt0gaodangfangdichankaifashangdedongtianjiuyaolailet,huanyingshiyongwokaifadezhinengpinyinshurufatEbeijingshirenminzhengfujuedingzaitongzhouqujianlizhengfuxingzhengjidit+woguojuminshoumingqiwangtigaodaoqishisansuitwgjmshmqwtgdqshsstxjinyhuiyouyongme(R»(((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyttests




t__main__spysqlitedb.test ()simport pysqlitedbii('Rtos.pathR
R•Rtsqlite3RtreR0RMRŒR3R
R‹RCREtY1tY2tY3RIRGtS1tS2tS3RJRKRLR–RRRR¸R»RÂR™ttimeittTimerR¶trepeat(((s+/usr/share/ibus-pinyin/engine/pysqlitedb.pyt<module>s.3
ÿr:		 		


Youez - 2016 - github.com/yon3zu
LinuXploit