Ë isä¸6óãó^—dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZddl m!Z!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-dd l.m/Z/m0Z0m1Z1m2Z2dd l3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9dd l:m;Z;mZ>dd l?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRdd lSmTZTddlUmVZVmWZWddlXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcddldmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlddlmmnZnmoZompZpmqZqddlrmsZsGd„de_«Ztdd„Zuy)z+Test suite for the `humanfriendly` package.éN)Ú InvalidDateÚ InvalidLengthÚ InvalidSizeÚInvalidTimespanÚTimerÚcoerce_booleanÚcoerce_patternÚ format_lengthÚ format_numberÚ format_pathÚ format_sizeÚformat_timespanÚ parse_dateÚ parse_lengthÚ parse_pathÚ parse_sizeÚparse_timespanÚpromptsÚ round_number)ÚCaseInsensitiveDictÚCaseInsensitiveKey)Úmain)ÚStringIO©Úcached)ÚDeprecationProxyÚdefine_aliasesÚdeprecated_argsÚ get_aliases)ÚTooManyInvalidRepliesÚprompt_for_confirmationÚprompt_for_choiceÚprompt_for_input)Údeprecation_note_callbackÚman_roleÚ pypi_roleÚsetupÚspecial_methods_callbackÚusage_message_callback)Úformat_pretty_tableÚformat_robust_tableÚformat_rst_tableÚformat_smart_table)ÚANSI_CSIÚANSI_ERASE_LINEÚANSI_HIDE_CURSORÚ ANSI_RESETÚANSI_SGRÚANSI_SHOW_CURSORÚ ansi_stripÚ ansi_styleÚ ansi_widthÚ ansi_wrapÚclean_terminal_outputÚconnected_to_terminalÚfind_terminal_sizeÚget_pager_commandÚmessageÚoutputÚ show_pagerÚterminal_supports_colorsÚwarning©Ú html_to_ansi)ÚAutomaticSpinnerÚSpinner) ÚCallableTimedOutÚ CaptureOutputÚ MockedProgramÚPatchedAttributeÚ PatchedItemÚTemporaryDirectoryÚTestCaseÚretryÚrun_cliÚ skip_on_raiseÚtouch)ÚcompactÚcompact_empty_linesÚ concatenateÚdedentÚ generate_slugÚ pluralizeÚ random_stringÚtrim_empty_lines)Úfind_meta_variablesÚ format_usageÚ parse_usageÚ render_usage)Ú MagicMockcóÆ—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d „Z"d!„Z#d"„Z$d#„Z%d$„Z&d%„Z'd&„Z(d'„Z)d(„Z*d)„Z+d*„Z,d+„Z-d,„Z.d-„Z/d.„Z0d/„Z1d0„Z2d1„Z3d2„Z4d3„Z5d4„Z6d5„Z7d6„Z8d7„Z9d8„Z:d9„Z;d:„Zd=„Z?d>„Z@d?„ZAd@„ZBdA„ZCdB„ZDdC„ZEdD„ZFdE„ZGdF„ZHdG„ZIdH„ZJdI„ZKdJ„ZLyK)LÚHumanFriendlyTestCasez-Container for the `humanfriendly` test suite.cóz—ttddg««dk(sJ‚ttddgdd¬««d k(sJ‚tttdd¬ «««dk(sJ‚tttdd¬ «dd¬««d k(sJ‚ttddd¬ ««d k(sJ‚tjgd ¢«}t|«d k(sJ‚td¬«}|j d«dk(sJ‚td¬«}|j d«dk(sJ‚t|«dk(sJ‚td¬«}|j d«dk(sJ‚|j dd«|ddk(sJ‚td¬«}d|vsJ‚td¬«}|d=t|«dk(sJ‚td¬«}|ddk(sJ‚td¬«}d|d<|ddk(sJ‚y)z#Test the CaseInsensitiveDict class.)ÚkeyT)ÚKEYFé)ÚoneT)ÚONEFFT)rcÚtwoé)r`ra)rcrd)rcrdre)ÚOnercrdÚTworeÚTWOé*)Ú existing_keyÚ Existing_KeyrÚ other_keyé Ú Other_KeyrkN)ÚlenrÚdictÚfromkeysÚgetÚpopÚ setdefault)ÚselfÚobjs ú8/usr/lib/python3.12/site-packages/humanfriendly/tests.pyÚtest_case_insensitive_dictz0HumanFriendlyTestCase.test_case_insensitive_dict…sÜ€ôÔ&¨ °~Ð'FÓGÓHÈAÒMÐMÐMäÔ&¨ °~Ð'FÈEÐW[Ô\Ó]ÐabÒbÐbÐbäÔ&¤t°¸%Ô'@ÓAÓBÀaÒGÐGÐGäÔ&¤t°¸%Ô'@ÀeÐQUÔVÓWÐ[\Ò\Ð\Ð\äÔ&¨4°UÀÔEÓFÈ!ÒKÐKÐKä!×*Ñ*Ò+UÓVˆÜ�3‹x˜1Š}Ј}ä!¨rÔ2ˆØ�w‰w�~Ó&¨"Ò,Ð,Ð,ä!¨rÔ2ˆØ�w‰w�~Ó&¨"Ò,Ð,Ð,Ü�3‹x˜1Š}Ј}ä!¨rÔ2ˆØ�~‰~˜nÓ-°Ò3Ð3Ð3Ø �‰�{ BÔ'Ø�;Ñ 2Ò%Ð%Ð%ä!¨rÔ2ˆØ Ñ$Ð$Ð$ä!¨rÔ2ˆØ �Ð Ü�3‹x˜1Š}Ј}ä!¨rÔ2ˆØ�>Ñ" bÒ(Ð(Ð(ä!¨rÔ2ˆØ ˆˆNÑØ�>Ñ" bÒ(Ð(Ñ(ócóv—td«}td«}||k(sJ‚i}d||<d||<t|«dk(sJ‚y)z"Test the CaseInsensitiveKey class.zPlease don't shoutzPLEASE DON'T SHOUTrbrfN)rrp)rvÚpoliteÚrudeÚmappings rxÚtest_case_insensitive_keyz/HumanFriendlyTestCase.test_case_insensitive_key¯sO€ô$Ð$8Ó9ˆÜ!Ð"6Ó7ˆØ˜Š~Ј~àˆØˆ�‰Øˆ�‰ Ü�7‹|˜qÒ Ð Ñ rzcó@—t«5}tjjd«tjjd«|jj «dgk(sJ‚|jj «dgk(sJ‚ ddd«y#1swYyxYw)zTest the CaptureOutput class.zSomething for stdout. zAnd for stderr. zSomething for stdout.zAnd for stderr.N)rFÚsysÚstdoutÚwriteÚstderrÚ get_lines)rvÚcapturers rxÚtest_capture_outputz)HumanFriendlyTestCase.test_capture_output»sw€ä Œ_ Ü �J‰J× Ñ Ð6Ô 7Ü �J‰J× Ñ Ð0Ô 1Ø—?‘?×,Ñ,Ó.Ð3JÐ2KÒKÐ KÐKØ—?‘?×,Ñ,Ó.Ð3DÐ2EÒEÐ EÑE÷ �_‰_ús ‹A?BÂBcó¤—d„}tt«}||«}|jt|«|jtj|«y)z#Test the skip_on_raise() decorator.có—t«‚©N)ÚNotImplementedError©rzrxÚtest_fnz9HumanFriendlyTestCase.test_skip_on_raise..test_fnÅs €Ü%Ó'Ð 'rzN)rNr‹Ú assertRaisesÚunittestÚSkipTest)rvr�Ú decorator_fnÚ decorated_fns rxÚtest_skip_on_raisez(HumanFriendlyTestCase.test_skip_on_raiseÃsC€ò (ä$Ô%8Ó9ˆ Ù# GÓ,ˆ Ø ×ÑÔ-¨wÔ7Ø ×Ñœ(×+Ñ+¨\Õ:rzc󤇗ˆfd„Št‰«dk(sJ‚d„}|jt«5t|d¬«ddd«y#1swYyxYw)zFTest :func:`~humanfriendly.testing.retry()` based on assertion errors.có<•—t‰d«st‰dd«J‚y)NÚ was_calledTÚyes©ÚhasattrÚsetattr©Úsuccess_helpers€rxrœz>HumanFriendlyTestCase.test_retry_raise..success_helperÐs!ø€Ü˜>¨<Ô8ܘ¨ °dÔ;Ø�uàrzr—có—J‚rŠrŒrŒrzrxÚfailure_helperz>HumanFriendlyTestCase.test_retry_raise..failure_helperÙs€Ø �5rzrb©ÚtimeoutN)rLrŽÚAssertionError)rvržrœs @rxÚtest_retry_raisez&HumanFriendlyTestCase.test_retry_raiseÌsFø€ô ô �^Ó$¨Ò-Ð-Ð-ò à × Ñ œ~Õ .Ü �.¨!Õ ,÷/× .Ñ .ús ¯AÁAcó ‡—ˆfd„Št‰«dk(sJ‚|jt«5td„d¬«ddd«y#1swYyxYw)zCTest :func:`~humanfriendly.testing.retry()` based on return values.có:•—t‰d«st‰dd«yy)Nr–TFrjr˜r›s€rxrœz?HumanFriendlyTestCase.test_retry_return..success_helperâs!ø€Ü˜>¨<Ô8䘨 °dÔ;Øðrzrjcó—y)NFrŒrŒrzrxÚz9HumanFriendlyTestCase.test_retry_return..ìs€˜%rzrbrŸN)rLrŽrE)rvrœs @rxÚtest_retry_returnz'HumanFriendlyTestCase.test_retry_returnÞsBø€ô ô�^Ó$¨Ò*Ð*Ð*Ø × Ñ Ô/Õ 0Ü ‘-¨Õ +÷1× 0Ñ 0ús ¬AÁA có$—t«}td«}t|d|¬«5}tjj |«sJ‚tjj tjj||««sJ‚tj|tjtjtj¬«}|jd¬«\}}|jdk(sJ‚|dk(sJ‚|dk(sJ‚ d d d «y #1swYy xYw) z2Test :class:`humanfriendly.testing.MockedProgram`.zˆ # This goes to stdout. tr a-z A-Z # This goes to stderr. echo Fake warning >&2 rj)ÚnameÚ returncodeÚscript)Ústdinr‚r„s hello world ©Úinputs HELLO WORLD s Fake warning N) rVrSrGÚosÚpathÚisdirÚisfileÚjoinÚ subprocessÚPopenÚPIPEÚ communicaterª)rvr©r«Ú directoryÚprogramr‚r„s rxÚtest_mocked_programz)HumanFriendlyTestCase.test_mocked_programîs߀䋈Üð ó ˆô  °¸FÕ CÀyÜ—7‘7—=‘= Ô+Ð +Ð+Ü—7‘7—>‘>¤"§'¡'§,¡,¨y¸$Ó"?Ô@Ð @Ð@Ü ×&Ñ& t´:·?±?Ì:Ï?É?Ôcm×crÑcrÔsˆGØ$×0Ñ0Ð7GÐ0ÓH‰NˆF�FØ×%Ñ%¨Ò+Ð +Ð+ØÐ-Ò-Ð -Ð-ØÐ.Ò.Ð .Ñ.÷D× CÑ Cús ¤CDÄDcó¬—t«5}tjj|«sJ‚tjj |d«}t |d«5}|j d«ddd«ddd«tjj«rJ‚tjj«rJ‚y#1swYŒTxYw#1swYŒXxYw)z7Test :class:`humanfriendly.testing.TemporaryDirectory`.z some-fileÚwz Hello world!N)rJr¯r°r±r³ÚopenrƒÚexists)rvr¸Útemporary_fileÚhandles rxÚtest_temporary_directoryz.HumanFriendlyTestCase.test_temporary_directorys™€ä Ô ! YÜ—7‘7—=‘= Ô+Ð +Ð+ÜŸW™WŸ\™\¨)°[ÓAˆNÜ�n cÔ*¨fØ— ‘ ˜^Ô,÷+÷"ô —7‘7—>‘> .Ô1Ð1Ð1Ü—7‘7—>‘> )Ô,Ð,Ð,Ð,÷+Ð*ú÷"Ð !ús$‹AC ÁB>Á+C Â>C ÃC à Ccó*—t«5}tjj|t ««}tjj |«rJ‚t |«tjj |«sJ‚tjj|t «t ««}tjj |«rJ‚t |«tjj |«sJ‚ ddd«y#1swYyxYw)z+Test :func:`humanfriendly.testing.touch()`.N)rJr¯r°r³rVr²rO)rvr¸Úfilenames rxÚ test_touchz HumanFriendlyTestCase.test_touch s¬€ä Ô ! Yä—w‘w—|‘| I¬}«Ó?ˆHÜ—w‘w—~‘~ hÔ/Ð /Ð/Ü �(ŒOÜ—7‘7—>‘> (Ô+Ð +Ð+ä—w‘w—|‘| I¬}«Ä ÃÓPˆHÜ—w‘w—~‘~ hÔ/Ð /Ð/Ü �(ŒOÜ—7‘7—>‘> (Ô+Ð +Ñ+÷"× !Ñ !ús ‹C4D Ä Dcóè—Gd„dt«}|«}|jdk(sJ‚t|dd«5}||usJ‚|jdk(sJ‚ ddd«|jdk(sJ‚y#1swYŒxYw)z5Test :class:`humanfriendly.testing.PatchedAttribute`.có—eZdZdZy)ú;HumanFriendlyTestCase.test_patch_attribute..SubjectrjN)Ú__name__Ú __module__Ú __qualname__Ú my_attributerŒrzrxÚSubjectrÇs„؉LrzrÌrjrËé N)ÚobjectrËrH)rvrÌÚinstanceÚ return_values rxÚtest_patch_attributez*HumanFriendlyTestCase.test_patch_attributes}€ô ”fô á“9ˆØ×$Ñ$¨Ò*Ð*Ð*Ü ˜h¨¸Ô ;¸|Ø 8Ñ+Ð +Ð+Ø×(Ñ(¨BÒ.Ð .Ñ.÷<ð×$Ñ$¨Ò*Ð*Ñ*÷<Ð ;ús µA(Á(A1có¤—td¬«}|ddusJ‚t|dd«5}||usJ‚|ddusJ‚ ddd«|ddusJ‚y#1swYŒxYw)z0Test :class:`humanfriendly.testing.PatchedItem`.T)Úmy_itemrÓFN)rqrI)rvrÏrÐs rxÚtest_patch_itemz%HumanFriendlyTestCase.test_patch_item#sq€ä Ô%ˆØ˜ Ñ" dÑ*Ð*Ð*Ü ˜ 9¨eÔ 4¸ Ø 8Ñ+Ð +Ð+ؘIÑ&¨%Ñ/Ð /Ñ/÷5ð˜ Ñ" dÑ*Ð*Ñ*÷5Ð 4ús £AÁAcóF—td„«\}}|j|d«y)z*Test that run_cli() intercepts SystemExit.có,—tjd«S)Nrj)r�ÚexitrŒrzrxr¦zDHumanFriendlyTestCase.test_run_cli_intercepts_exit...s €¬S¯X©X°b¬\rzrjN)rMÚ assertEqual©rvrªr=s rxÚtest_run_cli_intercepts_exitz2HumanFriendlyTestCase.test_run_cli_intercepts_exit,s"€ä$Ñ%9Ó:ш �FØ ×ј RÕ(rzcóX—t|j«\}}|j|d«y)z*Test that run_cli() intercepts exceptions.rbN)rMÚrun_cli_raise_otherrØrÙs rxÚtest_run_cli_intercepts_errorz3HumanFriendlyTestCase.test_run_cli_intercepts_error1s'€ä$ T×%=Ñ%=Ó>ш �FØ ×ј QÕ'rzcó—t«‚)z*run_cli() sample that raises an exception.)Ú ValueError©rvs rxrÜz)HumanFriendlyTestCase.run_cli_raise_other6s €ä‹lÐrzcóЇ—t«dzŠtˆfd„«\}}|j|d«|j|‰«y)z&Test that run_cli() intercepts output.Ú cóB•—tjj‰«SrŠ)r�r‚rƒ)Úexpected_outputs€rxr¦zFHumanFriendlyTestCase.test_run_cli_intercepts_output..=sø€¬S¯Z©Z×-=Ñ-=¸oÔ-NrzrN)rVrMrØ)rvrªr=räs @rxÚtest_run_cli_intercepts_outputz4HumanFriendlyTestCase.test_run_cli_intercepts_output:s?ø€ä'›/¨DÑ0ˆÜ$Ó%NÓOш �FØ ×ј QÔ'Ø ×ј Õ1rzcóš—td„«}td„«}|«|«k(sJ‚|«|«k(sJ‚|«|«k7sJ‚y)zTest the caching decorator.có*—tj«SrŠ©ÚrandomrŒrzrxr¦z>HumanFriendlyTestCase.test_caching_decorator..Dó €œ6Ÿ=™=œ?rzcó*—tj«SrŠrèrŒrzrxr¦z>HumanFriendlyTestCase.test_caching_decorator..ErêrzNr)rvÚaÚbs rxÚtest_caching_decoratorz,HumanFriendlyTestCase.test_caching_decoratorAsJ€ô Ñ*Ó +ˆÜ Ñ*Ó +ˆÙ‹s‘a“cŠzЈzÙ‹s‘a“cŠzЈzá‹s‘a“cŠzЉzrzcój—td«dk(sJ‚tdd«dk(sJ‚tdd¬«d k(sJ‚y ) z*Test :func:`humanfriendly.text.compact()`.z a b za bz* %s template notation ÚSimplezSimple template notationz3 More {type} template notation Úreadable)ÚtypezMore readable template notationN)rPràs rxÚ test_compactz"HumanFriendlyTestCase.test_compactKs^€ä�|Ó$¨Ò-Ð-Ð-Üð à óà4ò5ð 5ð5ôð àôà!BòCð CñCrzcóä—td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚y) z6Test :func:`humanfriendly.text.compact_empty_lines()`.Úfooz fooúfoo barzfoo barz foo barz foo barz foo barN)rQràs rxÚtest_compact_empty_linesz.HumanFriendlyTestCase.test_compact_empty_linesUs‹€ô# 5Ó)¨UÒ2Ð2Ð2ä" 7Ó+¨wÒ6Ð6Ð6ä" :Ó.°*Ò<Ð<Ð<ä" <Ó0°LÒ@Ð@Ð@ä" >Ó2°lÒBÐBÐBÜ"Ð#3Ó4¸ ÒDÐDÐDÜ"Ð#5Ó6¸,ÒFÐFÑFrzcój—td«dk(sJ‚tdd«dk(sJ‚tdd¬«d k(sJ‚y ) z)Test :func:`humanfriendly.text.dedent()`.z line 1 line 2 zline 1 line 2 z' Dedented, %s text Ú interpolatedzDedented, interpolated text z) Dedented, {op} text Ú formatted)ÚopzDedented, formatted text N)rSràs rxÚ test_dedentz!HumanFriendlyTestCase.test_dedentds`€äÐ/Ó0Ð4GÒGÐGÐGÜð à óà ?ò@ð @ð@ôð àôà <ò=ð =ñ=rzcó�—tdd«dk(sJ‚tdd«dk(sJ‚tddd«dk(sJ‚tddd«d k(sJ‚y ) z,Test :func:`humanfriendly.text.pluralize()`.rbÚwordz1 wordrfz2 wordsÚboxÚboxesz1 boxz2 boxesN)rUràs rxÚtest_pluralizationz(HumanFriendlyTestCase.test_pluralizationnsZ€ä˜˜FÓ# xÒ/Ð/Ð/ܘ˜FÓ# yÒ0Ð0Ð0ܘ˜E 7Ó+¨wÒ6Ð6Ð6ܘ˜E 7Ó+¨yÒ8Ð8Ñ8rzcóD—|jdtd««|jdtd««|jt«5td«ddd«|jt«5td«ddd«y#1swYŒ3xYw#1swYyxYw)z0Test :func:`humanfriendly.text.generate_slug()`.zsome-random-textzSome Random Text!Ú NÚ-)rØrTrŽrßràs rxÚtest_generate_slugz(HumanFriendlyTestCase.test_generate_slugus{€ð ×ÑÐ+¬]Ð;NÓ-OÔPà ×ÑÐ+¬]Ð;MÓ-NÔOà × Ñ œzÕ *Ü ˜#Ô ÷+à × Ñ œzÕ *Ü ˜#Ô ÷+Ð *÷+Ð *úç *Ð *úsÁ B Á5 B BÂBcóö—dD]}|jdt|««ŒdD]}|jdt|««Œ|jt«5td«ddd«y#1swYyxYw)z,Test :func:`humanfriendly.coerce_boolean()`.)TÚTRUEÚTrueÚtrueÚonr—Ú1T)FÚFALSEÚFalseÚfalseÚoffÚnoÚ0Fz not a booleanN)rØrrŽrß)rvÚvalues rxÚtest_boolean_coercionz+HumanFriendlyTestCase.test_boolean_coercion�sd€ãEˆEØ × Ñ ˜T¤>°%Ó#8Õ 9ðFãIˆEØ × Ñ ˜U¤N°5Ó$9Õ :ðJà × Ñ œzÕ *Ü ˜?Ô +÷+× *Ñ *ús Á A/Á/A8cóP—tjd«}ttd«t |««sJ‚|t|«usJ‚tdtj «}|j d«sJ‚|jt«5tg«ddd«y#1swYyxYw)z,Test :func:`humanfriendly.coerce_pattern()`.ÚÚfoobarÚFOOBARN) ÚreÚcompileÚ isinstancer ròÚ IGNORECASEÚmatchrŽrß)rvÚ empty_patternÚpatterns rxÚtest_pattern_coercionz+HumanFriendlyTestCase.test_pattern_coercionŠs€€äŸ ™  2›ˆ äœ.¨Ó2´D¸Ó4GÔHÐHÐHन}Ó =Ñ=Ð=Ð=ä  ¬2¯=©=Ó9ˆØ�}‰}˜XÔ&Ð&Ð&à × Ñ œzÕ *Ü ˜2Ô ÷+× *Ñ *ús  BÂB%cór—d}|dz}|dz}|dz}|dz}dtdd¬«k(sJ‚d td d¬«k(sJ‚d td d¬«k(sJ‚d tdd¬«k(sJ‚dtdd¬«k(sJ‚dtdd¬«k(sJ‚dtdd¬«k(sJ‚dtd«k(sJ‚dtd«k(sJ‚dtd«k(sJ‚dttj«k(sJ‚dt|«k(sJ‚dtd«k(sJ‚dt|d z«k(sJ‚d!t|«k(sJ‚d"t|d z«k(sJ‚d#t|«k(sJ‚d$t|d z«k(sJ‚d%t|«k(sJ‚d&t|d z«k(sJ‚d't|«k(sJ‚d(t|d z«k(sJ‚d)t|d*z|d+zz|d,zz|d-zz|d zzdzd¬«k(sJ‚d.t||d zz|d-zz|d/zz«k(sJ‚d0td1d¬«k(sJ‚d2td1d¬«k(sJ‚d3td4«k(sJ‚d5td6«k(sJ‚d7td8d¬«k(sJ‚d9td:d¬«k(sJ‚d;td«z }d?t||z «k(sJ‚y@)Az-Test :func:`humanfriendly.format_timespan()`.é<ééé4z 1 nanosecondç•Ö&è .>T)Údetailedz500 nanosecondsg�íµ ÷Æ >z 1 microsecondç�íµ ÷ư>z500 microsecondsgü©ñÒMb@?ú 1 millisecondçü©ñÒMbP?ú500 millisecondsçà?ú 0.5 secondsFz 0 secondsrz 0.54 secondsgn†ðùaá?ú1 secondrbz 3.14 secondsú1 minutez1 minute and 20 secondséPú 2 minutesrfú1 hourú2 hoursú1 dayú2 daysú1 weekú2 weeksz1 yearz2 yearszA6 years, 5 weeks, 4 days, 3 hours, 2 minutes and 500 millisecondsééééz1 year, 2 weeks and 3 daysé z'1 minute, 1 second and 100 millisecondsgÍÌÌÌÌŒN@z1 minute and 1.1 secondsz1 minute and 0.3 secondsgfffff&N@z5 minutes and 0.3 secondsgÍÌÌÌÌÄr@z1 second and 15 millisecondsg= ×£p=ð?z10 seconds and 15 millisecondsgHáz®$@z 1 microsecond and 50 nanosecondsgÓ‹5·�±>é)Úhoursz23 hoursN)rÚmathÚpiÚdatetimeÚnowÚ timedelta)rvÚminuteÚhourÚdayÚweekÚyearrAÚthens rxÚtest_format_timespanz*HumanFriendlyTestCase.test_format_timespan˜sR€àˆØ˜‰{ˆØ�R‰iˆØ�Q‰wˆØ�b‰yˆØ¤°ÀtÔ!LÒLÐLÐLØ ¤O°IÈÔ$MÒMÐMÐMؤ/°(ÀTÔ"JÒJÐJÐJØ!¤_°VÀdÔ%KÒKÐKÐKؤ/°%À$Ô"GÒGÐGÐGØ!¤_°SÀ4Ô%HÒHÐHÐHؤ°¸eÔ DÒDÐDÐDØœo¨aÓ0Ò0Ð0Ð0ؤ°Ó!9Ò9Ð9Ð9Øœ_¨QÓ/Ò/Ð/Ð/ؤ´·±Ó!9Ò9Ð9Ð9Øœ_¨VÓ4Ò4Ð4Ð4Ø(¬O¸BÓ,?Ò?Ð?Ð?Øœo¨f°q©jÓ9Ò9Ð9Ð9Øœ?¨4Ó0Ò0Ð0Ð0ØœO¨D°1©HÓ5Ò5Ð5Ð5Øœ/¨#Ó.Ò.Ð.Ð.Øœ?¨3°©7Ó3Ò3Ð3Ð3Øœ?¨4Ó0Ò0Ð0Ð0ØœO¨D°1©HÓ5Ò5Ð5Ð5Øœ?¨4Ó0Ò0Ð0Ð0ØœO¨D°1©HÓ5Ò5Ð5Ð5ØRÜ ˜D 1™H t¨a¡xÑ/°#¸±'Ñ9¸DÀ1¹HÑDÀvÐPQÁzÑQÐTWÑWÐbfÔ gòhð hðhà+Ü ˜D 4¨!¡8™O¨c°A©gÑ5¸¸r¹ ÑAÓ BòCð CðCð9¼OÈEÐ\`ÔÚ51nsr'Ú1usg¢'eRC ?Ú52usr)Ú1msr(r+r*r,r8Ú5sz 5 secondséxÚ2mr0é´z3 minz3 minsi0*z3 hz3 hoursiFÚ4dz4 daysi€$.z5 wz5 weeksÚ1zN)rØrrŽrràs rxÚtest_parse_timespanz)HumanFriendlyTestCase.test_parse_timespanÊs÷€à ×јœN¨3Ó/Ô0Ø ×јœN¨4Ó0Ô1Ø ×ј¤n°UÓ&;Ô<Ø ×ј¤n°VÓ&<Ô=Ø ×ј¤>°%Ó#8Ô9Ø ×ј¤>°&Ó#9Ô:Ø ×ј¤¨uÓ 5Ô6Ø ×ј¤¨Ó ?Ô@Ø ×јœnÐ-?Ó@ÔAØ ×јœn¨]Ó;Ô<Ø ×јœN¨4Ó0Ô1Ø ×јœN¨;Ó7Ô8Ø ×ј¤°Ó!5Ô6Ø ×ј¤° Ó!<Ô=Ø ×ј¤°Ó!8Ô9Ø ×ј¤°Ó!9Ô:Ø ×ј¤n°UÓ&;Ô<Ø ×ј¤n°YÓ&?Ô@Ø ×ÑÐ)¬>¸$Ó+?Ô@Ø ×ÑÐ)¬>¸(Ó+CÔDØ ×ÑÐ-¬~¸eÓ/DÔEØ ×ÑÐ-¬~¸iÓ/HÔIØ × Ñ œÕ /Ü ˜4Ô ÷0× /Ñ /ús É( I=É=Jcó—|jdtd««|jdtd««|jdtd««|jt«5td«ddd«y#1swYyxYw) z(Test :func:`humanfriendly.parse_date()`.)éÝr7érrrz 2013-06-17)rYr7rZrfé/rjz2013-06-17 02:47:42)iàrnérr[rZz2016-11-30 00:47:17z 2013-06-XYN)rØrrŽrràs rxÚtest_parse_datez%HumanFriendlyTestCase.test_parse_dateåsh€à ×ÑÐ/´¸LÓ1IÔJØ ×ÑÐ1´:Ð>SÓ3TÔUØ ×ÑÐ2´JÐ?UÓ4VÔWØ × Ñ œ{Õ +Ü �|Ô $÷,× +Ñ +ús Á' A<Á<Bcó’—|jdtd««|jdtd««|jdtd««|jdtd««|jd td ««|jd td ««|jd td««|jdtd««|jdtd««|jdtd««|jdtd««|jdtdd¬««|jdtdd¬««|jdtdd¬««|jdtd d¬««|jd!td"d¬««|jd#td$d¬««|jd%td&d¬««|jd'td(d¬««|jd)td*««|jd+td,««y-).z)Test :func:`humanfriendly.format_size()`.z0 bytesrz1 byterbz42 bytesrjú1 KBéèz1 MBé@Bú1 GBéÊš;ú1 TBìJ)£ú1 PBì�Iú5ú1 EBìÈNÎZoú1 ZBì@=7M.cú1 YBìB¶3v^!<z1 KiBéT©Úbinaryz1 MiBéz1 GiBi@z1 TiBlz1 PiBl z1 EiBlz1 ZiBlz1 YiBl z45 KBiȯz2.9 TBg@«…BN)rØr ràs rxÚtest_format_sizez&HumanFriendlyTestCase.test_format_sizeísÈ€à ×ј¤K°£NÔ3Ø ×ј¤;¨q£>Ô2Ø ×ј¤[°£_Ô5Ø ×ј¤¨YÓ!7Ô8Ø ×ј¤¨YÓ!7Ô8Ø ×ј¤¨YÓ!7Ô8Ø ×ј¤¨YÓ!7Ô8Ø ×ј¤¨YÓ!7Ô8Ø ×ј¤¨YÓ!7Ô8Ø ×ј¤¨YÓ!7Ô8Ø ×ј¤¨YÓ!7Ô8Ø ×ј¤+¨iÀÔ"EÔFØ ×ј¤+¨iÀÔ"EÔFØ ×ј¤+¨iÀÔ"EÔFØ ×ј¤+¨iÀÔ"EÔFØ ×ј¤+¨iÀÔ"EÔFØ ×ј¤+¨iÀÔ"EÔFØ ×ј¤+¨iÀÔ"EÔFØ ×ј¤+¨iÀÔ"EÔFØ ×ј¤+¨iÓ"8Ô9Ø ×ј¤;¨Ó#?Õ@rzcóv—|jdtd««|jdtd««|jdtd««|jdtd««|jdtdd ¬ ««|jdtd ««|jdtd ««|jdtd d ¬ ««|jd td««|jdtd««|jdtd««|jdtd««|jdtd««|jdtd««|jdtd««|jdtd««|jdtd««|jt«5td«d d d «|jt«5td!«d d d «y #1swYŒ3xYw#1swYy xYw)"z(Test :func:`humanfriendly.parse_size()`.rÚ0BrjÚ42Ú42Br`Ú1krnTror_z 1 kilobytei@Ûz69 MBrcrbrerdrgrfrirhrkrjrmrlgÀ ZÖAz1.5 GBgøDz1.5 YiBÚ1qNrì)rØrrŽrràs rxÚtest_parse_sizez%HumanFriendlyTestCase.test_parse_sizes³€à ×јœJ tÓ,Ô-Ø ×јœZ¨Ó-Ô.Ø ×јœZ¨Ó.Ô/Ø ×јœz¨$Ó/Ô0Ø ×јœz¨$°tÔ<Ô=Ø ×јœz¨&Ó1Ô2Ø ×јœz¨,Ó7Ô8Ø ×јœz¨,¸tÔDÔEØ ×ј¬°GÓ)<Ô=Ø ×ј¤J¨vÓ$6Ô7Ø ×ј¤J¨vÓ$6Ô7Ø ×ј¤J¨vÓ$6Ô7Ø ×ј¤J¨vÓ$6Ô7Ø ×ј¤J¨vÓ$6Ô7Ø ×ј¤J¨vÓ$6Ô7Ø ×ј¬*°XÓ*>Ô?Ø ×ј¬*°YÓ*?Ô@Ø × Ñ œ{Õ +Ü �tÔ ÷,à × Ñ œ{Õ +Ü �sŒO÷,Ð +÷,Ð +úç +Ð +úsÇ% H#È H/È#H,È/H8có´—|jdtd««|jdtd««|jdtd««|jdtd««|jd td ««|jd td ««|jd td««|jdtd««y)z+Test :func:`humanfriendly.format_length()`.z0 metresrz1 metrerbz 42 metresrjz1 kmr`ú15.3 cmç/Ý$�•Ã?z1 cmç{®Gáz„?z1 mmr)z1 nmr%N)rØr ràs rxÚtest_format_lengthz(HumanFriendlyTestCase.test_format_lengthsª€à ×ј¤]°1Ó%5Ô6Ø ×ј¤M°!Ó$4Ô5Ø ×ј¤m°BÓ&7Ô8Ø ×ј¤¨xÓ!8Ô9Ø ×ј¤M°%Ó$8Ô9Ø ×ј¤¨uÓ!5Ô6Ø ×ј¤¨uÓ!5Ô6Ø ×ј¤¨uÓ!5Õ6rzcó¾—|jdtd««|jdtd««|jdtd««|jdtd««|jdtd ««|jd td ««|jd td ««|jdtd««|jdtd««|jt«5td«ddd«|jt«5td«ddd«y#1swYŒ3xYw#1swYyxYw)z*Test :func:`humanfriendly.parse_length()`.rÚ0mrjruçø?ú1.5Ú42mr`Ú1kmr|r{r}Ú1cmr)Ú1mmr%Ú1nmrVNrì)rØrrŽrràs rxÚtest_parse_lengthz'HumanFriendlyTestCase.test_parse_length(s€à ×јœL¨Ó.Ô/Ø ×јœ\¨$Ó/Ô0Ø ×јœl¨5Ó1Ô2Ø ×јœ\¨%Ó0Ô1Ø ×јœ|¨EÓ2Ô3Ø ×ј¤ ¨YÓ 7Ô8Ø ×ј¤ ¨UÓ 3Ô4Ø ×ј¤ ¨UÓ 3Ô4Ø ×ј¤ ¨UÓ 3Ô4Ø × Ñ œ}Õ -Ü ˜Ô ÷.à × Ñ œ}Õ -Ü ˜Ô ÷.Ð -÷.Ð -úç -Ð -úsÄ EÄ2 EÅEÅEcóî—|jdtd««|jdtd««|jdtd««|jdtdd««|jd td ««|jd td d ««|jd td««|jdtd««|jdtd««y)z+Test :func:`humanfriendly.format_number()`.r rbr‚r�z1.56gg›Óù?z1.567r:z1,000r`g)\�Âõ@�@rz 1,000,000raz 1,000,000.42gq= ×€„.Az-285.67g…ëQ¸ÚqÀN)rØr ràs rxÚtest_format_numberz(HumanFriendlyTestCase.test_format_number8sÀà ×јœm¨AÓ.Ô/Ø ×ј¤ ¨cÓ 2Ô3Ø ×ј¤¨wÓ!7Ô8Ø ×ј¤-°¸Ó";Ô<Ø ×ј¤-°Ó"5Ô6Ø ×ј¤-°¸Ó";Ô<Ø ×ј¤m°GÓ&<Ô=Ø ×ј¬°zÓ)BÔCà ×ј¤M°'Ó$:Õ;rzcóà—|jdtd««|jdtd««|jdtdd¬««|jdtd««y ) z*Test :func:`humanfriendly.round_number()`.r rbgð?ú1.00T©Ú keep_widthz3.14g-DTû! @N)rØrràs rxÚtest_round_numberz'HumanFriendlyTestCase.test_round_numberEsX€à ×јœl¨1›oÔ.Ø ×јœl¨3Ó/Ô0Ø ×ј¤¨a¸DÔ!AÔBØ ×ј¤Ð.?Ó!@ÕArzcóÜ—tjjdd«}tjjtjdd«}|j |t |««y)z)Test :func:`humanfriendly.format_path()`.Ú~ú.vimrcÚHOMEN)r¯r°r³ÚenvironrØr ©rvÚ friendly_pathÚ absolute_paths rxÚtest_format_pathz&HumanFriendlyTestCase.test_format_pathLsH€äŸ™Ÿ ™  S¨(Ó3ˆ ÜŸ™Ÿ ™ ¤R§Z¡Z°Ñ%7¸ÓBˆ Ø ×ј¬ °MÓ(BÕCrzcóÜ—tjjdd«}tjjtjdd«}|j |t |««y)z(Test :func:`humanfriendly.parse_path()`.r‘r’r“N)r¯r°r³r”rØrr•s rxÚtest_parse_pathz%HumanFriendlyTestCase.test_parse_pathRsH€äŸ™Ÿ ™  S¨(Ó3ˆ ÜŸ™Ÿ ™ ¤R§Z¡Z°Ñ%7¸ÓBˆ Ø ×ј¬ °=Ó(AÕBrzcó¬—dgg}t|«td«j«k(sJ‚gd¢gd¢g}t|«td«j«k(sJ‚gd¢}gd¢gd¢g}tt||««td«j«k(sJ‚dd g}d d gd d gg}tt||««td«j«k(sJ‚y)z8Test :func:`humanfriendly.tables.format_pretty_table()`.zJust one columnzi ------------------- | Just one column | ------------------- ©rgrhÚThree©r Ú2Ú3z‘ --------------------- | One | Two | Three | | 1 | 2 | 3 | --------------------- ©rìríÚcúÕ --------------------- | One | Two | Three | --------------------- | 1 | 2 | 3 | | a | b | c | --------------------- z Just a labelzImportant numberszRow oneÚ15zRow twoÚ300a/ ------------------------------------ | Just a label | Important numbers | ------------------------------------ | Row one | 15 | | Row two | 300 | ------------------------------------ N)r*rSÚstripr4)rvÚdataÚ column_namess rxÚtest_pretty_tablesz(HumanFriendlyTestCase.test_pretty_tablesXs€ð#Ð#Ð$ˆÜ" 4Ó(¬Fð4 ó- ÷‰U‹Wò ð ðò (ªÐ9ˆÜ" 4Ó(¬Fð4 ó- ÷ ‰U‹Wò ð ðò/ˆ Ú¢Ð1ˆÜÔ-¨d°LÓAÓBÄfðN óG ÷‰U‹Wòð ðð'Ð(;Ð<ˆ ؘDÐ! I¨uÐ#5Ð6ˆÜÔ-¨d°LÓAÓBÄfðN óG ÷‰U‹Wòð ñrzcóø—gd¢}gd¢gd¢g}tt||««td«j«k(sJ‚gd¢}gd¢gd¢g}tt||««td«j«k(sJ‚y)z8Test :func:`humanfriendly.tables.format_robust_table()`.rœržr¡z¾ -------- One: 1 Two: 2 Three: 3 -------- One: a Two: b Three: c -------- ©rìrízHere comes a multi line column!á ------------------ One: 1 Two: 2 Three: 3 ------------------ One: a Two: b Three: Here comes a multi line column! ------------------ N)r4r+rSr¦©rvr¨r§s rxÚtest_robust_tablesz(HumanFriendlyTestCase.test_robust_tables€s�€â.ˆ Ú¢Ð1ˆÜÔ-¨d°LÓAÓBÄfð N ó G ÷‰U‹Wò ð ð ò/ˆ ÚÒ!OÐPˆÜÔ-¨d°LÓAÓBÄfð N ó G ÷‰U‹Wò ð ñ rzcóø—gd¢}gd¢gd¢g}tt||««td«j«k(sJ‚gd¢}gd¢gd¢g}tt||««td«j«k(sJ‚y)z7Test :func:`humanfriendly.tables.format_smart_table()`.rœržr¡r£r«r¬N)r4r-rSr¦r­s rxÚtest_smart_tablesz'HumanFriendlyTestCase.test_smart_tablesŸs�€â.ˆ Ú¢Ð1ˆÜÔ,¨T°<Ó@ÓAÄVðM óF ÷‰U‹Wòð ðò/ˆ ÚÒ!OÐPˆÜÔ,¨T°<Ó@ÓAÄVð M ó F ÷‰U‹Wò ð ñ rzcóö—gd¢}gd¢gd¢g}|jt||«td«j««gd¢gd¢g}|jt|«td«j««y)z5Test :func:`humanfriendly.tables.format_rst_table()`.rœržr¡zÅ === === ===== One Two Three === === ===== 1 2 3 a b c === === ===== zm = = = 1 2 3 a b c = = = N)rØr,rSÚrstripr­s rxÚtest_rst_tablesz%HumanFriendlyTestCase.test_rst_tables»sy€ò/ˆ Ú¢Ð1ˆØ ×ÑÜ ˜T <Ó 0Ü ðó ÷‘“ô ò ¢Ð1ˆØ ×ÑÜ ˜TÓ "Ü ðó ÷ ‘“õ rzcóÞ—tg«dk(sJ‚tdg«dk(sJ‚tddg«dk(sJ‚tgd¢«dk(sJ‚tgd¢d¬«d k(sJ‚tgd¢d ¬ «d k(sJ‚y )z.Test :func:`humanfriendly.text.concatenate()`.rrcrez one and two)rcreÚthreezone, two and threeÚor)Ú conjunctionzone, two or threeT)Ú serial_commazone, two, and threeN©rRràs rxÚtest_concatenatez&HumanFriendlyTestCase.test_concatenate×sƒ€ä˜2‹ "Ò$Ð$Ð$ܘE˜7Ó# uÒ,Ð,Ð,ܘE 5˜>Ó*¨mÒ;Ð;Ð;ÜÒ2Ó3Ð7KÒKÐKÐKäÒ2ÀÔEÐI\Ò\Ð\Ð\äÒ2ÀÔFÐJ_Ò_Ð_Ñ_rzcó—ddlm}|j|d«g«|j|d«dg«|j|d«ddg«|j|d«gd¢«|j|d «gd¢«y ) z(Test :func:`humanfriendly.text.split()`.r)Úsplitrrõzfoo, barÚbarz foo, bar, baz©rõr½Úbazz foo,bar,bazN)Úhumanfriendly.textr¼rØ)rvr¼s rxÚ test_splitz HumanFriendlyTestCase.test_splitâst€å,Ø ×Ñ™˜r› BÔ'Ø ×Ñ™˜u›¨ wÔ/Ø ×Ñ™˜zÓ*¨U°E¨NÔ;Ø ×Ñ™˜Ó/Ò1FÔGØ ×Ñ™˜}Ó-Ò/DÕErzcó —dD]j\}}ttj«|z «}|jt|jd¬«d|z«|jt |«|«Œlttj«dz «}|j|j d«t«}tjd«|jt|jd«d «td¬ «}td «D]"}|5tjd«d d d «Œ$|jt|jd«d «td¬ «5}|€J‚ d d d «y #1swYŒoxYw#1swYy xYw)z!Test :func:`humanfriendly.Timer`.) )rbr-)rfú 2 seconds)r!r.)rRr0)ir1)i r2)i€Qr3)i£r4)i€: r5)iur6Tr�z%i.00gš™™™™™@rÃrbrrŒ)Ú resumablerfNz2.00) rÚtimerØrÚ elapsed_timeÚstrÚroundedÚsleepÚnormalize_timestampÚrange)rvÚsecondsÚtextÚtÚautomatic_timerÚresumable_timerÚiÚtimers rxÚ test_timerz HumanFriendlyTestCase.test_timerës9€ó A‰MˆG�Tô”d—i‘i“k GÑ+Ó,ˆAØ × Ñ œ\¨!¯.©.ÀTÔJÈGÐV]ÑL]Ô ^Ø × Ñ œS ›V TÕ *ð Aô ”$—)‘)“+ Ñ#Ó $ˆØ ×јŸ™ KÔ0ä›'ˆÜ � ‰ �1Œ ð ×ÑÔ,¨_×-IÑ-IÈ1ÓMÈvÔVä¨$Ô/ˆÜ�q–ˆAÚ Ü— ‘ ˜1” ÷!�ðð ×ÑÔ,¨_×-IÑ-IÈ1ÓMÈvÔVä ˜TÕ " eØÐ$Ð $Ñ$÷#Ð "÷ !�ú÷#Ð "úsÄ E.ÅE:Å.E7 Å:Fcó–—t«}tdd|d¬«}dD])}|j|¬«tjd«Œ+|j «|j «}|jtd«jtd«}|jt«D�cgc]}|sŒ|‘Œ }}|jt|«d kD«|jtd „|D«««|jtd „|D«««|jt!t#|««t!|««y cc}w) z#Test :func:`humanfriendly.Spinner`.ú test spinnerr9T)ÚlabelÚtotalÚstreamÚ interactive)rbrfr:r9)Úprogressgš™™™™™É?rrc3ó$K—|]}d|v–—Œ y­w)rÕNrŒ©Ú.0Úlines rxÚ z5HumanFriendlyTestCase.test_spinner..sèø€ÐE¹u°t˜N¨dÔ2¹uùó‚c3ó$K—|]}d|v–—Œ y­w)Ú%NrŒrÜs rxrßz5HumanFriendlyTestCase.test_spinner..sèø€Ð:±E¨D˜C 4œK±EùràN)rrDÚsteprÅrÉÚclearÚgetvalueÚreplacer3r0r¼r/Ú assertTruerpÚallrØÚsortedÚset)rvrØÚspinnerrÚr=rÞÚliness rxÚ test_spinnerz"HumanFriendlyTestCase.test_spinnersÿ€ä“ˆÜ °aÀÐTXÔYˆÛ$ˆHØ �L‰L (ˆLÔ +Ü �J‰J�s�Oð%ð � ‰ ŒØ—‘Ó"ˆØ �&—.‘.Ô!1°2Ó6ß ™Ô!1°2Ó6ð à". &§,¡,¬Ô"?ÓHÑ"?˜$Â4’Ð"?ˆÐHØ �‰œ˜E›  Q™Ô'Ø �‰œÑE¹uÓEÓEÔFØ �‰œÑ:±EÓ:Ó:Ô;Ø ×Ñœ¤ E£ Ó+¬V°E«]Õ;ùò Is Â+EÂ3Ecóp—td¬«5tjd«ddd«y#1swYyxYw)a² Test :func:`humanfriendly.AutomaticSpinner`. There's not a lot to test about the :class:`.AutomaticSpinner` class, but by at least running it here we are assured that the code functions on all supported Python versions. :class:`.AutomaticSpinner` is built on top of the :class:`.Spinner` class so at least we also have the tests for the :class:`.Spinner` class to back us up. rÕ)rÖrbN)rCrÅrÉràs rxÚtest_automatic_spinnerz,HumanFriendlyTestCase.test_automatic_spinner s#€ô NÖ 3Ü �J‰J�qŒM÷4× 3Ñ 3ús�,¬5có`‡—|jt«5tg«ddd«ttj «5}t td|«5d}t|g«|k(sJ‚ ddd«ddd«t tdd„«5tddg«dk(sJ‚ ddd«t tdd„«5tddg«dk(sJ‚ ddd«t tdd „«5tddg«dk(sJ‚ ddd«t tdd „«5tddgd¬ «dk(sJ‚ ddd«gd ¢Št tdˆfd „«5tgd¢«dk(sJ‚ ddd«ddgŠt tdˆfd„«5tgd¢«dk(sJ‚ ddd«ddgŠt tdˆfd„«5tgd¢«dk(sJ‚ ddd«t tdd„«5|jt«5tgd¢«ddd«ddd«y#1swY�Œ÷xYw#1swY�Œ¼xYw#1swY�ŒÁxYw#1swY�Œ xYw#1swY�ŒxYw#1swY�Œ^xYw#1swY�Œ;xYw#1swY�ŒxYw#1swYŒìxYw#1swYŒÄxYw#1swYŒ’xYw#1swYyxYw)z7Test :func:`humanfriendly.prompts.prompt_for_choice()`.Nr¬zonly one option (shortcut)Úinteractive_promptcó—y)NrõrŒ©Úps rxr¦z>HumanFriendlyTestCase.test_prompt_for_choice..:s€Àurzrõr½có—y)NÚfrŒrós rxr¦z>HumanFriendlyTestCase.test_prompt_for_choice..=ó€Àsrzcó—y)NrŸrŒrós rxr¦z>HumanFriendlyTestCase.test_prompt_for_choice..@r÷rzcó—y©NrrŒrós rxr¦z>HumanFriendlyTestCase.test_prompt_for_choice..Có€Àrrz©Údefault)rÚqÚzcó&•—‰jd«S©Nr©rt©rôÚrepliess €rxr¦z>HumanFriendlyTestCase.test_prompt_for_choice..Góø€ÀwÇ{Á{ÐSTÄ~rzr¾r¿rìrþcó&•—‰jd«Srrrs €rxr¦z>HumanFriendlyTestCase.test_prompt_for_choice..Krrz)rõr½r¿ÚquxrrurŸcó&•—‰jd«Srrrs €rxr¦z>HumanFriendlyTestCase.test_prompt_for_choice..Orrzcó—yrúrŒrós rxr¦z>HumanFriendlyTestCase.test_prompt_for_choice..Rrûrzr¡) rŽrßr"r½r¯ÚdevnullrHr�rr )rvrÀÚ only_optionrs @rxÚtest_prompt_for_choicez,HumanFriendlyTestCase.test_prompt_for_choice-sPø€ð× Ñ œzÕ *Ü ˜bÔ !÷+ô ”"—*‘*Ô  Ü!¤# w°Õ7Ø:� Ü(¨+¨Ó7¸;ÒFÐFÑF÷8÷ô œgÐ';¹_Õ MÜ$ e¨U ^Ó4¸Ò=Ð =Ñ=÷NôœgÐ';¹]Õ KÜ$ e¨U ^Ó4¸Ò=Ð =Ñ=÷LôœgÐ';¹]Õ KÜ$ e¨U ^Ó4¸Ò=Ð =Ñ=÷LôœgÐ';¹\Õ JÜ$ e¨U ^¸UÔCÀuÒLÐ LÑL÷Kò!ˆÜ œgÐ';Ó=UÕ VÜ$Ò%:Ó;¸uÒDÐ DÑD÷Wð˜�*ˆÜ œgÐ';Ó=UÕ VÜ$Ò%AÓBÀeÒKÐ KÑK÷Wð˜�+ˆÜ œgÐ';Ó=UÕ VÜ$Ò%:Ó;¸uÒDÐ DÑD÷WôœgÐ';¹\Õ JØ×"Ñ"Ô#8Õ9Ü!¢/Ô2÷:÷KÐ J÷E+Ñ *ú÷ 8Ñ7ú÷Ñ ú÷ NÑ Mú÷LÑ Kú÷LÑ Kú÷KÑ Jú÷WÑ Vú÷WÐ Vú÷WÐ Vú÷:Ð9ú÷KÐ Jús§— HÁH2ÁH%Á+H2 H?Â;I Ã)IÄI&Å I3ÆJÆ5J Ç#J$Ç9JÈJ$ÈH"È%H/ È*H2È2H<È?I É IÉI#É&I0É3I=ÊJ Ê JÊJ! ÊJ$Ê$J-c󇇗dD]/Šttdˆfd„«5td«dusJ‚ ddd«Œ1dD]/Šttdˆfd„«5td«d usJ‚ ddd«Œ1d D]/}ttdd „«5td|¬ «|usJ‚ ddd«Œ1d dgŠttdˆfd„«5td¬«5}td«dusJ‚d|j «vsJ‚ ddd«ddd«ttdd„«5dD]@\}}td¬«5}td|¬ «dusJ‚||j «vsJ‚ ddd«ŒB ddd«ttdd„«5|j t «5td«ddd«ddd«y#1swY�Œ¤xYw#1swY�Œ}xYw#1swY�ŒVxYw#1swYŒÞxYw#1swYŒâxYw#1swYŒÙxYw#1swYŒ™xYw#1swYŒixYw#1swYyxYw)z=Test :func:`humanfriendly.prompts.prompt_for_confirmation()`.)r—ÚYesÚYESÚyÚYrñcó•—‰SrŠrŒ©rôÚreplys €rxr¦zDHumanFriendlyTestCase.test_prompt_for_confirmation..Zóø€É5rzz Are you sure?TN)rÚNoÚNOÚnÚNcó•—‰SrŠrŒrs €rxr¦zDHumanFriendlyTestCase.test_prompt_for_confirmation..^rrzF)TFcó—yrúrŒrós rxr¦zDHumanFriendlyTestCase.test_prompt_for_confirmation..bs€È2rzrürrcó&•—‰jd«Srrrs €rxr¦zDHumanFriendlyTestCase.test_prompt_for_confirmation..frrz©Úmergedzthere's no default choicecó—y)NrrŒrós rxr¦zDHumanFriendlyTestCase.test_prompt_for_confirmation..kr÷rz))TzY/n)Fzy/N)Nzy/ncó—yrúrŒrós rxr¦zDHumanFriendlyTestCase.test_prompt_for_confirmation..qrûrz)rHrr!rFÚget_textrŽr )rvÚdefault_choicer†Ú default_valueÚ expected_textrrs @@rxÚtest_prompt_for_confirmationz2HumanFriendlyTestCase.test_prompt_for_confirmationVsìù€ó3ˆEÜ!¤'Ð+?ÃÕQÜ.¨Ó?À4ÑGÐGÑG÷RÐQð3ó0ˆEÜ!¤'Ð+?ÃÕQÜ.¨Ó?À5ÑHÐHÑH÷RÐQð0ó*ˆNÜ!¤'Ð+?ÁÕNÜ.¨ÈÔWÐ[iÑiÐiÑi÷OÐNð*ð�s�)ˆÜ œgÐ';Ó=UÕ VÜ dÕ+¨xÜ.¨Ó?À4ÑGÐGÐGØ2°h×6GÑ6GÓ6IÑIÐIÑI÷,÷Wô œgÐ';¹]Õ KÛ0\Ñ,� ˜}Ü"¨$Õ/°8Ü2°?ÈMÔZÐ^bÑbÐbÐbØ(¨H×,=Ñ,=Ó,?Ñ?Ð?Ñ?÷0Ð/ñ1]÷Lô œgÐ';¹\Õ JØ×"Ñ"Ô#8Õ9Ü'¨Ô8÷:÷KÐ J÷/RÑQú÷RÑQú÷OÑNú÷ ,Ð+ú÷WÐ Vú÷0Ð/ú÷LÐ Kú÷:Ð9ú÷KÐ Jús�œFÁF,ÂF9Â7 GÃ$GÃ)GÄ G*Ä &GÅ G*Å,HÆ G6ÆHÆF) Æ,F6 Æ9G ÇG Ç GÇGÇG' Ç#G*Ç*G3Ç6G? Ç;HÈH có>—ttj«5}ttd|«5d}t d|¬«|k(sJ‚|j t«5t d«ddd«ddd«ddd«y#1swYŒxYw#1swYŒxYw#1swYyxYw)z6Test :func:`humanfriendly.prompts.prompt_for_input()`.r¬zTo seek the holy grail!zWhat is your quest?rüzWhat is your favorite color?N)r½r¯r rHr�r#rŽÚEOFError)rvrÀr#s rxÚtest_prompt_for_inputz+HumanFriendlyTestCase.test_prompt_for_inputus~€ä ”"—*‘*Ô  Ü!¤# w°Õ7à 9� Ü'Ð(=À}ÔUÐYfÒfÐfÐfð×&Ñ&¤xÕ0Ü$Ð%CÔD÷1÷ 8÷Ð ÷1Ð0ú÷ 8Ð7ú÷Ð ús:šB¬*BÁ A;Á"BÁ*BÁ;B ÂBÂB  BÂBcóÔ—tt«\}}d|vsJ‚ttd«\}}d|vsJ‚ttd«\}}|dk7sJ‚ttd«\}}|j«dk(sJ‚tjdd«}ttd |z«\}}|j«t |«k(sJ‚tjdd«}ttd |zd «\}}|j«t |d ¬ «k(sJ‚tjdd«}ttd |z«\}}|j«t |«k(sJ‚t|«dz }ttd|z«\}}|j«t |«k(sJ‚ttddd¬«\}}|j«td«j«k(sJ‚tjdd«}ttd|z«\}}|j«t|«k(sJ‚ttd«\}}t|«td«k(sJ‚ttd«\}}t|«tdd ¬ «k(sJ‚ttd«\}}t|«td«k(sJ‚ttd«\}}t|«td«k(sJ‚ttd d!d"d#«\}}|d$k(sJ‚ttd%«\}}|dk(sJ‚|j«D�cgc] }t|«‘Œ}}d&|vsJ‚d'|vsJ‚d(|vsJ‚d)|vsJ‚d*|vsJ‚d+|vsJ‚d,|vsJ‚y-cc}w).z Test the command line interface.zUsage:z--helpz--unsupported-optionrz--format-number=1234567z 1,234,567rnrqz--format-size=%iz--binaryTroz--format-length=%igÍÌÌÌÌÈ@z--format-length=%fz--format-tablez --delimiter= z1 2 3 4 5 6 7 8 9r­z‹ ------------- | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | ------------- r8iXz--format-timespan=%iz--parse-size=5 KBz5 KBz--parse-size=5 YiBz5 YBz--parse-length=5 kmz5 kmz--parse-length=1.05 kmz1.05 kmz --run-commandÚbashz-czsleep 2 && exit 42rjz--demoz Text styles:zForeground colors:zBackground colors:z!256 color mode (standard colors):z'256 color mode (high-intensity colors):z256 color mode (216 colors):z#256 color mode (gray scale colors):N)rMrr¦réÚrandintr r ÚfloatrSrÚintrrÚ splitlinesr4)rvrªr=Úrandom_byte_countÚ random_lenÚrandom_timespanrÞrìs rxÚtest_clizHumanFriendlyTestCase.test_cli�s›€ô%¤T›]ш �Fؘ6Ñ!Ð!Ð!ä$¤T¨8Ó4ш �Fؘ6Ñ!Ð!Ð!ä$¤TÐ+AÓBш �FؘQŠÐˆä$¤TÐ+DÓEш �F؈v�|‰|‹~ Ò,Ð,Ð,ä"ŸN™N¨4°Ó=ÐÜ$¤TÐ+=Ð@QÑ+QÓRш �F؈v�|‰|‹~¤Ð->Ó!?Ò?Ð?Ð?ä"ŸN™N¨4°Ó=ÐÜ$¤TÐ+=Ð@QÑ+QÐS]Ó^ш �F؈v�|‰|‹~¤Ð->ÀtÔ!LÒLÐLÐLä—^‘^ D¨+Ó6ˆ Ü$¤TÐ+?À*Ñ+LÓMш �F؈v�|‰|‹~¤¨zÓ!:Ò:Ð:Ð:ܘ:Ó&¨Ñ0ˆ Ü$¤TÐ+?À*Ñ+LÓMш �F؈v�|‰|‹~¤¨zÓ!:Ò:Ð:Ð:ä$¤TÐ+;Ð=MÐUpÔqш �F؈v�|‰|‹~¤ð) ó" ÷ ‰U‹Wò ð ðô!Ÿ.™.¨¨CÓ0ˆÜ$¤TÐ+AÀOÑ+SÓTш �F؈v�|‰|‹~¤°Ó!AÒAÐAÐAä$¤TÐ+>Ó?ш �FÜ�6‹{œj¨Ó0Ò0Ð0Ð0ä$¤TÐ+?Ó@ш �FÜ�6‹{œj¨¸Ô=Ò=Ð=Ð=ä$¤TÐ+@ÓAш �FÜ�6‹{œl¨6Ó2Ò2Ð2Ð2Ü$¤TÐ+CÓDш �FÜ�V‹}¤ ¨YÓ 7Ò7Ð7Ð7ä$¤T¨?¸FÀDÐJ^Ó_ш �FؘRÒÐÐô%¤T¨8Ó4ш �FؘQŠÐˆØ.?¨f×.?Ñ.?Ô.AÓBÑ.A d”˜DÕ!Ð.AˆÐBØ Ñ&Ð&Ð&Ø# uÑ,Ð,Ð,Ø# uÑ,Ð,Ð,Ø2°eÑ;Ð;Ð;Ø8¸EÑAÐAÐAØ-°Ñ6Ð6Ð6Ø4¸Ñ=Ð=Ñ=ùòCsÌ&M%cóº—td¬«t›dt›�k(sJ‚td¬«t›dt›�k(sJ‚td¬«t›dt›�k(sJ‚td¬«t›d t›�k(sJ‚td¬ «t›d t›�k(sJ‚td¬ «t›d t›�k(sJ‚td¬«t›dt›�k(sJ‚td¬«t›dt›�k(sJ‚tdd¬«t›dt›�k(sJ‚td¬«t›dt›�k(sJ‚td¬«t›dt›�k(sJ‚td¬«t›dt›�k(sJ‚td¬«t›dt›�k(sJ‚td¬«t›dt›�k(sJ‚|jt«5td¬«ddd«y#1swYyxYw) z1Test :func:`humanfriendly.terminal.ansi_style()`.T©Úboldr )ÚfaintrŸ)Úitalicr )Ú underlineÚ4)ÚinverseÚ7)Ústrike_throughÚ9Úblue©ÚcolorÚ34)Ú backgroundÚ44)r@ÚbrightÚ94éÖz38;5;214z39;5;214)rrrz 38;2;0;0;0)éÿrGrGz38;2;255;255;255)é2édé–z48;2;50;100;150ÚunknownN)r5r.r2rŽrßràs rxÚtest_ansi_stylez%HumanFriendlyTestCase.test_ansi_styleÊsy€ä˜tÔ$¶8½XÐ(FÒFÐFÐFÜ Ô%¶H½hÐ)GÒGÐGÐGÜ Ô&¶X½xÐ*HÒHÐHÐHÜ DÔ)¾Å(Ð-KÒKÐKÐKÜ $Ô'¶hÅÐ+IÒIÐIÐIܨÔ.¾XÅxÐ2PÒPÐPÐPÜ Ô'¶xÅÐ+JÒJÐJÐJÜ VÔ,¾HÅhÐ0OÒOÐOÐOÜ ¨tÔ4ÆHÍhÐ8WÒWÐWÐWÜ Ô$¾(ÅHÐ(MÒMÐMÐMÜ SÔ)¾xÍÐ-RÒRÐRÐRÜ  Ô*Æ(ÍHÐ.UÒUÐUÐUÜ Ô0ÎhÕX`Ð4aÒaÐaÐaÜ ^Ô4ÖQYÕ[cÐ8dÒdÐdÐdØ × Ñ œzÕ *Ü ˜YÕ '÷+× *Ñ *ús Æ; GÇGcóÆ—d}t|«t|«k(sJ‚t|d¬«}||k7sJ‚t|«t|«kDsJ‚t|«t|«k(sJ‚y)z1Test :func:`humanfriendly.terminal.ansi_width()`.ÚWhateverTr4N)rpr6r7)rvrÍÚwrappeds rxÚtest_ansi_widthz%HumanFriendlyTestCase.test_ansi_widthÝsc€àˆä�4‹yœJ tÓ,Ò,Ð,Ð,ä˜D tÔ,ˆà˜$ŠÐˆä�7‹|œc $›iÒ'Ð'Ð'ä�4‹yœJ wÓ/Ò/Ð/Ñ/rzcó°—d}|t|«k(sJ‚t|d¬«jt«sJ‚t|d¬«jt«sJ‚y)z0Test :func:`humanfriendly.terminal.ansi_wrap()`.rNTr4N)r7Ú startswithr.Úendswithr1©rvrÍs rxÚtest_ansi_wrapz$HumanFriendlyTestCase.test_ansi_wrapësO€àˆà”y “Ò&Ð&Ð&䘠DÔ)×4Ñ4´XÔ>Ð>Ð>䘠DÔ)×2Ñ2´:Ô>Ð>Ñ>rzcóè—td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td «d k(sJ‚td «d k(sJ‚td «d k(sJ‚td«d k(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«dk(sJ‚td«d k(sJ‚td!«dk(sJ‚d"„}d#td$|¬%«vsJ‚d#td&|¬%«vsJ‚td'«sJ‚y())z@Test the :func:`humanfriendly.terminal.html_to_ansi()` function.zJust some plain textz+python.orgz=python.org (https://python.org)z@peter@peterodding.comz$peter@peterodding.comzLet's try boldzLet's try boldz5Let's try boldzLet's try italiczLet's try italicz8Let's try italiczLet's try underlinezLet's try underlinezCLet's try underlinezLet's try strike-throughz$Let's try strike-throughzKLet's try strike-throughz$Let's try pre-formattedz$Let's try pre-formattedz6Let's try text colorsz0Let's try text colorszOLet's try background colorsz3Let's try background colorsz Let's try some
line
breakszLet's try some line breaksz&Ú&z&z>Ú>z<Ú.callback's€Ø—<‘< ¨%Ó0Ð 0rzr[z :wink:)r\z:wink:a Tweakers zit er idd nog steeds:

peter@peter-work> curl -s tweakers.net | grep -i hosting
<a href="http://www.true.nl/webhosting/" rel="external" id="true" title="Hosting door True"></a>
Hosting door <a href="http://www.true.nl/vps/" title="VPS hosting" rel="external">True NrA)rvr\s rxÚtest_html_to_ansiz'HumanFriendlyTestCase.test_html_to_ansiõsR€äÐ2Ó3Ð7MÒMÐMÐMäÐIÓJØ ]ò^ð ^ð^ôÐ^Ó_Ø ;ò<ð <ð<ôÐ3Ó4Ð8]Ò]Ð]Ð]ÜÐUÓVØ 1ò2ð 2ð2ôÐ5Ó6Ø 3ò4ð 4ð4äÐXÓYØ 3ò4ð 4ð4ôÐ<Ó=Ø 6ò7ð 7ð7äÐcÓdØ 6ò7ð 7ð7ôÐ=Ó>Ø ;ò<ð <ð<äÐkÓlØ ;ò<ð <ð<ôÐBÓCØ ;ò<ð <ð<ôÐVÓWØ GòHð HðHôÐoÓpØ JòKð KðKôÐ>Ó?Ø *ò+ð +ð+ô˜GÓ$¨Ò+Ð+Ð+ä˜GÓ$¨Ò+Ð+Ð+ܘFÓ# sÒ*Ð*Ð*ܘFÓ# sÒ*Ð*Ð*ä˜HÓ%¨Ò,Ð,Ð,ò 1ðœ|¨OÀhÔOÑOÐOÐOàœ<Ð(=ÈÔQÑQÐQÐQôð ô ð ñ rzcó —d}td¬«5}t|«|j|g|jj ««|jg|j j ««ddd«y#1swYyxYw)z:Test the :func:`humanfriendly.terminal.output()` function.z%Standard output generated by output()FrN)rFr=rØr‚r…r„©rvrÍr†s rxÚtest_generate_outputz*HumanFriendlyTestCase.test_generate_output9s`€à6ˆÜ  %Õ (¨HÜ �4ŒLØ × Ñ ˜d˜V X§_¡_×%>Ñ%>Ó%@Ô AØ × Ñ ˜R §¡×!:Ñ!:Ó!<Ô =÷)× (Ñ (úó �A!A9Á9Bcó —d}td¬«5}t|«|jg|jj ««|j|g|j j ««ddd«y#1swYyxYw)z;Test the :func:`humanfriendly.terminal.message()` function.z%Standard error generated by message()FrN)rFr<rØr‚r…r„r_s rxÚtest_generate_messagez+HumanFriendlyTestCase.test_generate_messageAs`€à6ˆÜ  %Õ (¨HÜ �DŒMØ × Ñ ˜R §¡×!:Ñ!:Ó!<Ô =Ø × Ñ ˜d˜V X§_¡_×%>Ñ%>Ó%@Ô A÷)× (Ñ (úracó(—ddlm}d}|d¬«5}t|«|jg|jj ««|jt |d¬«g|j|j««ddd«y#1swYyxYw) z;Test the :func:`humanfriendly.terminal.warning()` function.r©rFz%Standard error generated by warning()FrÚredr?N) r†rFr@rØr‚r…r7Úignore_coverage_warningr„)rvrFrÍr†s rxÚtest_generate_warningz+HumanFriendlyTestCase.test_generate_warningIsp€å*Ø6ˆÙ  %Õ (¨HÜ �DŒMØ × Ñ ˜R §¡×!:Ñ!:Ó!<Ô =Ø × Ñ œi¨°EÔ:Ð;¸T×=YÑ=YÐZb×ZiÑZiÓ=jÔ k÷)× (Ñ (ús ’A-BÂBcóR—|j«D�cgc] }d|vsŒ|‘Œ c}Scc}w)a Filter out coverage.py warning from standard error. This is intended to remove the following line from the lines captured on the standard error stream: Coverage.py warning: No data was collected. (no-data-collected) zno-data-collected)r…)rvrØrÞs rxrgz-HumanFriendlyTestCase.ignore_coverage_warningRs0€ð"(×!1Ñ!1Ô!3ÓWÑ!3˜Ð7JÐRVÒ7V’Ð!3ÑWÐWùÒWs“ $�$cóÖ—td«dgk(sJ‚td«ddgk(sJ‚td«ddgk(sJ‚td«dgk(sJ‚td«dgk(sJ‚td «gd ¢k(sJ‚y ) z.°sèø€Ð#I¹y¸!¤M°"×$5¹yùs‚rH) r¯r”rsr³rËrFr>r!rt)rvÚoriginal_pagerÚ random_textr†s rxÚtest_show_pagerz%HumanFriendlyTestCase.test_show_pager§sɀ䟙Ÿ™¨°Ó6ˆð (ð#(ŒB�J‰J�wÑ ðŸ)™)Ñ#I¼uÀR¼yÓ#IÓIˆKä” Hܘ;Ô'Ø" h×&7Ñ&7Ó&9Ñ9Ð9Ñ9÷!ðÐ)à&4”— ‘ ˜7Ò#ô— ‘ —‘˜wÕ'÷!�ûðÐ)à&4”— ‘ ˜7Ò#ô— ‘ —‘˜wÕ'ús#¢>C Á B?ÂC Â?CÃC à 7Dcó*‡—dtd«vsJ‚dttdd¬««vsJ‚ddg}dD]¦}tjj dd «} |tjd<t«Š|d k(rt ˆfd „|D««sJ‚t ˆfd „|D««rJ‚|�|tjd<Œˆtjjd«Œ¨y #|�|tjd<wtjjd«wxYw) z8Test :func:`humanfriendly.terminal.get_pager_command()`.z--RAW-CONTROL-CHARSz Usage messageTr4z --no-initz--quit-if-one-screen)rzÚlessryNr�c3ó&•K—|]}|‰v–—Œ y­wrŠrŒ©rÝÚoptÚ command_lines €rxrßz?HumanFriendlyTestCase.test_get_pager_command..Îsøèø€ÐWÑ>V°s˜s lÔ2Ñ>Vùóƒc3ó&•K—|]}|‰v–—Œ y­wrŠrŒrƒs €rxrßz?HumanFriendlyTestCase.test_get_pager_command..Ðsøèø€Ð"[ÑBZ¸3 3¨,Ô#6ÑBZùr†)r;r7r¯r”rsrèÚanyrt)rvÚoptions_specific_to_lessÚpagerr}r…s @rxÚtest_get_pager_commandz,HumanFriendlyTestCase.test_get_pager_command½sûø€ð%Ô,=¸oÓ,NÑNÐNÐNà$Ô(9¼)ÀOÐZ^Ô:_Ó(`Ñ`Ð`Ð`à$/Ð1GÐ#HÐ Û"ˆEÜŸZ™ZŸ^™^¨G°TÓ:ˆNð ,à&+”— ‘ ˜7Ñ#ä0Ó2� à˜F’?ÜÓWÑ>VÓWÔWÐWÐWä"Ó"[ÑBZÓ"[Ô[Ð[Ð[à!Ð-à*8”B—J‘J˜wÒ'ô—J‘J—N‘N 7Õ+ñ%#øð"Ð-à*8”B—J‘J˜wÒ'ô—J‘J—N‘N 7Õ+ús ÁACÃ7DcóL—ttd««tgd¢«k(sJ‚y)z7Test :func:`humanfriendly.usage.find_meta_variables()`.zå Here's one example: --format-number=VALUE Here's another example: --format-size=BYTES A final example: --format-timespan=SECONDS This line doesn't contain a META variable. )ÚVALUEÚBYTESÚSECONDSN)rérXràs rxÚtest_find_meta_variablesz.HumanFriendlyTestCase.test_find_meta_variablesÙs1€äÔ)ð+ ó óô Ò5Ó6ò 7ð 7ñ7rzcóh—|jd«\}}d|vsJ‚d|vsJ‚d|vsJ‚d|vsJ‚d|vsJ‚y)z?Test :func:`humanfriendly.usage.parse_usage()` (a simple case).z» Usage: my-fancy-app [OPTIONS] Boring description. Supported options: -h, --help Show this message and exit. úUsage: my-fancy-app [OPTIONS]zBoring description.úSupported options:z -h, --helpzShow this message and exit.N©Úpreprocess_parse_result©rvÚ introductionÚoptionss rxÚtest_parse_usage_simplez-HumanFriendlyTestCase.test_parse_usage_simpleâsd€à $× <Ñ <ð > ó ! ш �gð/°,Ñ>Ð>Ð>Ø$¨ Ñ4Ð4Ð4Ø# |Ñ3Ð3Ð3à˜wÑ&Ð&Ð&Ø,°Ñ7Ð7Ñ7rzcóœ—|jd«\}}d|vsJ‚td„|D««sJ‚d|vsJ‚d|vsJ‚d|vsJ‚d|vsJ‚d|vsJ‚y ) z?Test :func:`humanfriendly.usage.parse_usage()` (a tricky case).a< Usage: my-fancy-app [OPTIONS] Here's the introduction to my-fancy-app. Some of the lines in the introduction start with a command line option just to confuse the parsing algorithm :-) For example --an-awesome-option is still part of the introduction. Supported options: -a, --an-awesome-option Explanation why this is an awesome option. -b, --a-boring-option Explanation why this is a boring option. r’c3ó$K—|]}d|v–—Œ y­w)zstill part of the introductionNrŒ)rÝrôs rxrßz@HumanFriendlyTestCase.test_parse_usage_tricky..sèø€ÐOÁ,¸QÐ3°qÔ8Á,ùràr“z-a, --an-awesome-optionz*Explanation why this is an awesome option.z-b, --a-boring-optionz(Explanation why this is a boring option.N)r•rˆr–s rxÚtest_parse_usage_trickyz-HumanFriendlyTestCase.test_parse_usage_tricky÷s†€à $× <Ñ <ð> ó! ш �gð,/°,Ñ>Ð>Ð>ÜÑOÁ,ÓOÔOÐOÐOØ# |Ñ3Ð3Ð3à(¨GÑ3Ð3Ð3Ø;¸wÑFÐFÐFØ&¨'Ñ1Ð1Ð1Ø9¸WÑDÐDÑDrzcó€—|jd«\}}d|vsJ‚d|vsJ‚d|vsJ‚d|vsJ‚d|vsJ‚d|vsJ‚d|vsJ‚y ) zWTest :func:`humanfriendly.usage.parse_usage()` against option labels containing commas.a< Usage: my-fancy-app [OPTIONS] Some introduction goes here. Supported options: -f, --first-option Explanation of first option. -s, --second-option=WITH,COMMA This should be a separate option's description. r’zSome introduction goes here.r“z-f, --first-optionzExplanation of first option.z-s, --second-option=WITH,COMMAz/This should be a separate option's description.Nr”r–s rxÚtest_parse_usage_commasz-HumanFriendlyTestCase.test_parse_usage_commass€€à $× <Ñ <ð> ó! ш �gð /°,Ñ>Ð>Ð>Ø-°Ñ=Ð=Ð=Ø# |Ñ3Ð3Ð3à# wÑ.Ð.Ð.Ø-°Ñ8Ð8Ð8Ø/°7Ñ:Ð:Ð:Ø@ÀGÑKÐKÑKrzcóJ—td„tt|««D««S)z:Ignore leading/trailing whitespace in usage parsing tests.c3óbK—|]"}|D�cgc]}|j«‘Œc}–—Œ$ycc}w­wrŠ)r¦)rÝÚrrôs rxrßz@HumanFriendlyTestCase.preprocess_parse_result..5s+èø€ÐOÑ5N°©Ó+© A�a—g‘g•i¨Õ+Ñ5NùÒ+ùs ‚ /‹*¢ /)ÚtuplerZrSrTs rxr•z-HumanFriendlyTestCase.preprocess_parse_result3s€äÑO´[ÄÈÃÔ5NÓOÓOÐOrzcób—d}t|«}t|«t|«kDsJ‚|jd«sJ‚d}t|«}t|«t|«kDsJ‚||vsJ‚|j|«rJ‚d}t|«}|j«}t|dvsJ‚t|dvsJ‚y)z0Test :func:`humanfriendly.usage.format_usage()`.zJust one --optionz Just one zUsage: humanfriendly [OPTIONS]z^--valid-option=VALID_METAVAR VALID_METAVAR is bogus INVALID_METAVAR should not be highlighted rbrfN)rYrprRr.r.)rvÚ usage_textÚformatted_textÚformatted_liness rxÚtest_format_usagez'HumanFriendlyTestCase.test_format_usage7sЀð)ˆ Ü% jÓ1ˆÜ�>Ó"¤S¨£_Ò4Ð4Ð4Ø×(Ñ(¨Ô5Ð5Ð5à5ˆ Ü% jÓ1ˆÜ�>Ó"¤S¨£_Ò4Ð4Ð4ؘ^Ñ+Ð+Ð+Ø!×,Ñ,¨ZÔ8Ð8Ð8ð :ð ô & jÓ1ˆØ(×3Ñ3Ó5ˆä˜?¨1Ñ-Ñ-Ð-Ð-䘨qÑ1Ñ1Ð1Ñ1rzcóœ—td«dk(sJ‚td«dk(sJ‚dttd««vsJ‚td„dD««sJ‚y ) z0Test :func:`humanfriendly.usage.render_usage()`.zUsage: some-command WITH ARGSz#**Usage:** `some-command WITH ARGS`r“z**Supported options:**z code-blockz_ Here comes a shell command: $ echo test test c3óHK—|]}|ttd««v–—Œy­w)zm Supported options: -n, --dry-run Don't change anything. N)r[rS)rÝÚtokens rxrßz:HumanFriendlyTestCase.test_render_usage..[s4èø€ð4ñ 3�%ð œL¬ð1 ó* óôñ 3ùs‚ ")z`-n`z `--dry-run`N)r[rSrèràs rxÚtest_render_usagez'HumanFriendlyTestCase.test_render_usageQst€äÐ;Ó<Ð@eÒeÐeÐeÜÐ0Ó1Ð5MÒMÐMÐMØœ|¬Fð4 ó- ó ñð ðô ñ4ñ 3ó 4ô4ð 4ñ4rzcó(—tdd«d„«}t«}ttd|«5|dd«dk(sJ‚|j t «5|ddd«ddd«ddd«|j sJ‚y#1swYŒ xYw#1swYŒ$xYw)z.Test the deprecated_args() decorator function.rõr½cóB—|ddk(sJ‚|jd«dvsJ‚y)Nrõr½)Nr½rj)rs)r˜s rxÚ test_functionzAHumanFriendlyTestCase.test_deprecated_args..test_functiones.€à˜5‘> UÒ*Ð *Ð*Ø—;‘;˜uÓ%¨Ñ6Ð 6Ð6ØrzÚwarnrjr¿N)rr\rHÚwarningsrŽÚ TypeErrorr–)rvr®Úfake_fns rxÚtest_deprecated_argsz*HumanFriendlyTestCase.test_deprecated_argscsŒ€ä ˜ Ó &ñ ó 'ð ô“+ˆÜ œh¨°Õ 8Ù  ¨Ó.°"Ò4Ð 4Ð4Ø×"Ñ"¤9Õ-Ù˜e U¨EÔ2÷.÷9ð×!Ò!Ð!Ñ!÷.Ð-ú÷9Ð 8ús#®$BÁ A<ÁBÁ<B ÂBÂBcó —t«}ttd|«5tjt }t d¬«}t||«}|jtk(sJ‚ ddd«|jsJ‚y#1swYŒxYw)ú@Test that the DeprecationProxy class emits deprecation warnings.r¯úhumanfriendly.text.concatenater¹N) r\rHr°r�ÚmodulesrÈrqrrRr–)rvr²ÚmoduleÚaliasesÚproxys rxÚ$test_alias_proxy_deprecation_warningz:HumanFriendlyTestCase.test_alias_proxy_deprecation_warningqsm€ä“+ˆÜ œh¨°Õ 8Ü—[‘[¤Ñ*ˆFÜÐ'GÔHˆGÜ$ V¨WÓ5ˆEØ×$Ñ$¬ Ò3Ð 3Ñ3÷ 9ð ×!Ò!Ð!Ñ!÷ 9Ð 8ús œAA9Á9Bcó—ttjdtjd««5t t d¬«dttjt «vsJ‚dtt «vsJ‚ ddd«y#1swYyxYw)rµÚsphinxr¶r¹rRN) rIr�r·ÚtypesÚ ModuleTyperrÈÚdirrràs rxÚ$test_alias_proxy_sphinx_compensationz:HumanFriendlyTestCase.test_alias_proxy_sphinx_compensation{sd€ä œŸ™ h´×0@Ñ0@ÀÓ0JÕ KÜ œ8Ð1QÕ RØ ¤C¬¯ © ´HÑ(=Ó$>Ñ>Ð >Ð>Ø ¤K´Ó$9Ñ9Ð 9Ñ9÷L× KÑ Kús ¯A BÂB cóê—tjt}ttd¬«|jj «}t ddd|d|¬«dj|«|jk7sJ‚y)z?Test that aliases can be injected into generated documentation.r¶r¹N©ÚappÚwhatr©rwr˜rìrâ)r�r·rÈrÚ__doc__r.r$r³)rvr¸rìs rxÚ#test_alias_proxy_sphinx_integrationz9HumanFriendlyTestCase.test_alias_proxy_sphinx_integration‚s\€ä—‘œXÑ&ˆÜ”xÐ-MÕNØ—‘×)Ñ)Ó+ˆÜ! d°¸DÀfÐVZÐbgÕhà�y‰y˜Ó 6§>¡>Ò1Ð1Ñ1rzcóB—Gd„dt«}|«}t|«t|jdk(sJ‚t|jdk(sJ‚t |j dvsJ‚t|j dvsJ‚t|j dvsJ‚tddd|jdd¬ «d usJ‚tddd|jdd¬ «dusJ‚d d l m }m }|j|«sJ‚|j|«rJ‚|j|j«rJ‚y) z,Test the :mod:`humanfriendly.sphinx` module.có0—eZdZd„Zd„Zd„Zd„Zd„Zd„Zy)úAHumanFriendlyTestCase.test_sphinx_customizations..FakeAppcó —i|_i|_yrŠ)Ú callbacksÚrolesràs rxÚ__init__zJHumanFriendlyTestCase.test_sphinx_customizations..FakeApp.__init__�s€Ø!#�”Ø�• rzcó—y)z%Documented unofficial special method.NrŒràs rxÚ__documented_special_method__z_HumanFriendlyTestCase.test_sphinx_customizations..FakeApp.__documented_special_method__“ó€àrzcó—yrŠrŒràs rxÚ__undocumented_special_method__zaHumanFriendlyTestCase.test_sphinx_customizations..FakeApp.__undocumented_special_method__—rÑrzcó"—||j|<yrŠ)rÍ)rvr©r\s rxÚadd_rolezJHumanFriendlyTestCase.test_sphinx_customizations..FakeApp.add_role›s€Ø#+�— ‘ ˜4Ò rzcóZ—|jj|g«j|«yrŠ)rÌruÚappend)rvÚeventr\s rxÚconnectzIHumanFriendlyTestCase.test_sphinx_customizations..FakeApp.connectžs!€Ø—‘×)Ñ)¨%°Ó4×;Ñ;¸HÕErzcó—y)z.Usage: This is not supposed to be reformatted!NrŒràs rxÚ bogus_usagezMHumanFriendlyTestCase.test_sphinx_customizations..FakeApp.bogus_usage¡rÑrzN) rÈrÉrÊrÎrÐrÓrÕrÙrÛrŒrzrxÚFakeApprÊ�s!„ò ò ò ò ,ò Fó rzrÜÚmanÚpypizautodoc-process-docstringzautodoc-skip-memberNT)rÄrÅr©rwÚskipr˜Fr)Úclir½)rÎr'r%rÍr&r$rÌr(r)rÐrÓÚ humanfriendlyràr½Údocstring_is_reformattedrÛ)rvrÜÚfake_appràr½s rxÚtest_sphinx_customizationsz0HumanFriendlyTestCase.test_sphinx_customizations‹sN€ô ”fô ñ2“9ˆÜ ˆhŒÜ˜8Ÿ>™>¨%Ñ0Ò0Ð0Ð0ܘHŸN™N¨6Ñ2Ò2Ð2Ð2Ü(¨H×,>Ñ,>Ð?ZÑ,[Ñ[Ð[Ð[Ü'¨8×+=Ñ+=Ð>SÑ+TÑTÐTÐTÜ%¨×);Ñ);Ðò8 ò8 `òFò"%òH<ò" ò'3òR9ò> EòG>òR(ò& 0ò?òB òH>òBòlò Xò Uò(&òT-ò"(ò,,ò87ò8ò*EòBLò6Pò2ò44ò$ "ò"ò:ò2ò8Gót$rzr^có4—dtt|«|¬«zS)z· Round timestamps to the given number of digits. This helps to make the test suite less sensitive to timing issues caused by multitasking, processor scheduling, etc. z%.2f)Úndigits)Úroundr,)rrês rxrÊrÊÐs€ð ”Eœ% ›,°Ô8Ñ 8Ð8rz)rb)vrÆr@r>r¯rérr´r�rÅr¾r�r°rárrrrrrr r r r r rrrrrrrrÚhumanfriendly.caserrÚhumanfriendly.clirÚhumanfriendly.compatrÚhumanfriendly.decoratorsrÚhumanfriendly.deprecationrrrrÚhumanfriendly.promptsr r!r"r#Úhumanfriendly.sphinxr$r%r&r'r(r)Úhumanfriendly.tablesr*r+r,r-Úhumanfriendly.terminalr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@Úhumanfriendly.terminal.htmlrBÚhumanfriendly.terminal.spinnersrCrDÚhumanfriendly.testingrErFrGrHrIrJrKrLrMrNrOrÀrPrQrRrSrTrUrVrWÚhumanfriendly.usagerXrYrZr[Úmockr\r^rÊrŒrzrxÚrúsêðñ2óÛ Û Û Û ÛÛ Û Û ÛÛ÷÷÷÷÷ñ÷*GÝ"Ý)Ý+ßdÓd÷ó÷ ÷÷ó÷ ÷÷÷÷ñõ*5ßE÷ ÷ ÷ ñ ÷ ÷ ó ÷óõôL$˜HôL$ô^*9rz