Host and machine ids are equal (fddd8ab551594ba3b63ce34f2e69995f): refusing to link journals :: Synchronizing package databases... staging is up to date community-staging is up to date testing is up to date community-testing is up to date core is up to date extra is up to date community is up to date :: Starting full system upgrade... there is nothing to do ==> Building in chroot for [staging] (x86_64)... ==> Synchronizing chroot copy [/data/archbuild/chroots/staging-x86_64/root] -> [abaumann]...done ==> Making package: proselint 0.10.2-4 (Sat Mar 9 09:00:56 2019) ==> Retrieving sources... -> Downloading proselint-0.10.2.tar.gz... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 98k 100 98k 0 0 125k 0 --:--:-- --:--:-- --:--:-- 125k ==> Validating source files with sha512sums... proselint-0.10.2.tar.gz ... Passed Host and machine ids are equal (fddd8ab551594ba3b63ce34f2e69995f): refusing to link journals ==> Appending keys from archlinux.gpg... gpg: Warning: using insecure memory! ==> Locally signing trusted keys in keyring... -> Locally signing key D8AFDDA07A5B6EDFA7D8CCDAD6D055F927843F1C... -> Locally signing key DDB867B92AA789C165EEFA799B729B06A680C281... -> Locally signing key 684148BB25B49E986A4944C55184252D824B18E8... -> Locally signing key 91FFE0700E80619CEB73235CA88E23E377514E00... -> Locally signing key 0E8B644079F599DFC1DDC3973348882F6AC6A4C2... -> Locally signing key AB19265E5D7D20687D303246BA1DFB64FFF979E7... ==> Importing owner trust values... gpg: Warning: using insecure memory! ==> Disabling revoked keys in keyring... -> Disabling key 8F76BEEA0289F9E1D3E229C05F946DED983D4366... -> Disabling key 63F395DE2D6398BBE458F281F2DBB4931985A992... -> Disabling key 50F33E2E5B0C3D900424ABE89BDCF497A4BBCC7F... -> Disabling key 27FFC4769E19F096D41D9265A04F9397CDFD6BB0... -> Disabling key 39F880E50E49A4D11341E8F939E4F17F295AFBF4... -> Disabling key 8840BD07FC24CB7CE394A07CCF7037A4F27FB7DA... -> Disabling key 5559BC1A32B8F76B3FCCD9555FA5E5544F010D48... -> Disabling key 0B20CA1931F5DA3A70D0F8D2EA6836E1AB441196... -> Disabling key 07DFD3A0BC213FA12EDC217559B3122E2FA915EC... -> Disabling key 4FCF887689C41B09506BE8D5F3E1D5C5D30DB0AD... -> Disabling key 5A2257D19FF7E1E0E415968CE62F853100F0D0F0... -> Disabling key 7FA647CD89891DEDC060287BB9113D1ED21E1A55... -> Disabling key BC1FBE4D2826A0B51E47ED62E2539214C6C11350... -> Disabling key 4A8B17E20B88ACA61860009B5CED81B7C2E5C0D2... -> Disabling key 5696C003B0854206450C8E5BE613C09CB4440678... -> Disabling key 8CF934E339CAD8ABF342E822E711306E3C4F88BC... -> Disabling key F5A361A3A13554B85E57DDDAAF7EF7873CFD4BB6... -> Disabling key 5E7585ADFF106BFFBBA319DC654B877A0864983E... -> Disabling key 65EEFE022108E2B708CBFCF7F9E712E59AF5F22A... -> Disabling key 40440DC037C05620984379A6761FAD69BA06C6A9... -> Disabling key 34C5D94FE7E7913E86DC427E7FB1A3800C84C0A5... -> Disabling key 81D7F8241DB38BC759C80FCE3A726C6170E80477... -> Disabling key E7210A59715F6940CF9A4E36A001876699AD6E84... -> Disabling key 5357F3B111688D88C1D88119FCF2CB179205AC90... -> Disabling key FB871F0131FEA4FB5A9192B4C8880A6406361833... -> Disabling key 66BD74A036D522F51DD70A3C7F2A16726521E06D... -> Disabling key B1F2C889CB2CCB2ADA36D963097D629E437520BD... -> Disabling key 9515D8A8EAB88E49BB65EDBCE6B456CAF15447D5... -> Disabling key 40776A5221EF5AD468A4906D42A1DB15EC133BAD... -> Disabling key D4DE5ABDE2A7287644EAC7E36D1A9E70E19DAA50... -> Disabling key 44D4A033AC140143927397D47EFD567D4C7EA887... ==> Updating trust database... gpg: Warning: using insecure memory! gpg: next trustdb check due at 2019-05-06 ==> Making package: proselint 0.10.2-4 (Sat 09 Mar 2019 09:01:04 AM UTC) ==> Checking runtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Packages (5) libnsl-1.2.0-1 python-3.7.2-3 python-click-7.0-1 python-future-0.17.1-1 python-six-1.12.0-1 Total Installed Size: 150.27 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing libnsl... installing python... Optional dependencies for python python-setuptools python-pip sqlite [installed] mpdecimal: for decimal xz: for lzma [installed] tk: for tkinter installing python-click... installing python-future... Optional dependencies for python-future python-setuptools: futurize and pasteurize scripts installing python-six... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... ==> Checking buildtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Packages (15) python-apipkg-1.5-1 python-appdirs-1.4.3-2 python-atomicwrites-1.3.0-1 python-attrs-19.1.0-1 python-iniconfig-1.0.0-2 python-more-itertools-4.3.0-1 python-packaging-19.0-1 python-pbr-5.1.3-1 python-pluggy-0.9.0-1 python-py-1.8.0-1 python-pyparsing-2.3.1-1 python-mock-2.0.0-4 python-nose-1.3.7-4 python-pytest-4.3.0-1 python-setuptools-1:40.8.0-1 Total Installed Size: 8.55 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing python-appdirs... installing python-pyparsing... installing python-packaging... installing python-setuptools... installing python-pbr... installing python-mock... installing python-nose... installing python-iniconfig... installing python-apipkg... installing python-py... installing python-pluggy... installing python-attrs... installing python-more-itertools... installing python-atomicwrites... installing python-pytest... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... ==> Retrieving sources... -> Found proselint-0.10.2.tar.gz ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources... -> Extracting proselint-0.10.2.tar.gz with bsdtar ==> Starting build()... running build running build_py creating build creating build/lib creating build/lib/proselint copying proselint/__init__.py -> build/lib/proselint copying proselint/tools.py -> build/lib/proselint copying proselint/version.py -> build/lib/proselint copying proselint/score.py -> build/lib/proselint copying proselint/command_line.py -> build/lib/proselint copying proselint/__main__.py -> build/lib/proselint creating build/lib/proselint/checks copying proselint/checks/__init__.py -> build/lib/proselint/checks creating build/lib/proselint/checks/hedging copying proselint/checks/hedging/__init__.py -> build/lib/proselint/checks/hedging copying proselint/checks/hedging/misc.py -> build/lib/proselint/checks/hedging creating build/lib/proselint/checks/sexism copying proselint/checks/sexism/__init__.py -> build/lib/proselint/checks/sexism copying proselint/checks/sexism/misc.py -> build/lib/proselint/checks/sexism creating build/lib/proselint/checks/corporate_speak copying proselint/checks/corporate_speak/__init__.py -> build/lib/proselint/checks/corporate_speak copying proselint/checks/corporate_speak/misc.py -> build/lib/proselint/checks/corporate_speak creating build/lib/proselint/checks/hyperbole copying proselint/checks/hyperbole/__init__.py -> build/lib/proselint/checks/hyperbole copying proselint/checks/hyperbole/misc.py -> build/lib/proselint/checks/hyperbole creating build/lib/proselint/checks/needless_variants copying proselint/checks/needless_variants/__init__.py -> build/lib/proselint/checks/needless_variants copying proselint/checks/needless_variants/misc.py -> build/lib/proselint/checks/needless_variants creating build/lib/proselint/checks/links copying proselint/checks/links/broken.py -> build/lib/proselint/checks/links copying proselint/checks/links/__init__.py -> build/lib/proselint/checks/links creating build/lib/proselint/checks/oxymorons copying proselint/checks/oxymorons/__init__.py -> build/lib/proselint/checks/oxymorons copying proselint/checks/oxymorons/misc.py -> build/lib/proselint/checks/oxymorons creating build/lib/proselint/checks/spelling copying proselint/checks/spelling/athletes.py -> build/lib/proselint/checks/spelling copying proselint/checks/spelling/er_or.py -> build/lib/proselint/checks/spelling copying proselint/checks/spelling/__init__.py -> build/lib/proselint/checks/spelling copying proselint/checks/spelling/em_im_en_in.py -> build/lib/proselint/checks/spelling copying proselint/checks/spelling/able_atable.py -> build/lib/proselint/checks/spelling copying proselint/checks/spelling/misc.py -> build/lib/proselint/checks/spelling copying proselint/checks/spelling/in_un.py -> build/lib/proselint/checks/spelling copying proselint/checks/spelling/able_ible.py -> build/lib/proselint/checks/spelling creating build/lib/proselint/checks/annotations copying proselint/checks/annotations/__init__.py -> build/lib/proselint/checks/annotations copying proselint/checks/annotations/misc.py -> build/lib/proselint/checks/annotations creating build/lib/proselint/checks/misc copying proselint/checks/misc/whence.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/but.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/chatspeak.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/greylist.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/phrasal_adjectives.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/__init__.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/many_a.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/bureaucratese.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/debased.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/pretension.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/capitalization.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/false_plurals.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/narcissism.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/preferred_forms.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/latin.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/apologizing.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/illogic.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/currency.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/scare_quotes.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/back_formations.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/waxed.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/not_guilty.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/composition.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/usage.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/punctuation.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/tense_present.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/metadiscourse.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/institution_name.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/inferior_superior.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/suddenly.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/professions.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/commercialese.py -> build/lib/proselint/checks/misc copying proselint/checks/misc/metaconcepts.py -> build/lib/proselint/checks/misc creating build/lib/proselint/checks/typography copying proselint/checks/typography/exclamation.py -> build/lib/proselint/checks/typography copying proselint/checks/typography/__init__.py -> build/lib/proselint/checks/typography copying proselint/checks/typography/diacritical_marks.py -> build/lib/proselint/checks/typography copying proselint/checks/typography/symbols.py -> build/lib/proselint/checks/typography creating build/lib/proselint/checks/mixed_metaphors copying proselint/checks/mixed_metaphors/__init__.py -> build/lib/proselint/checks/mixed_metaphors copying proselint/checks/mixed_metaphors/misc.py -> build/lib/proselint/checks/mixed_metaphors creating build/lib/proselint/checks/cursing copying proselint/checks/cursing/filth.py -> build/lib/proselint/checks/cursing copying proselint/checks/cursing/__init__.py -> build/lib/proselint/checks/cursing copying proselint/checks/cursing/nword.py -> build/lib/proselint/checks/cursing copying proselint/checks/cursing/nfl.py -> build/lib/proselint/checks/cursing creating build/lib/proselint/checks/terms copying proselint/checks/terms/eponymous_adjectives.py -> build/lib/proselint/checks/terms copying proselint/checks/terms/__init__.py -> build/lib/proselint/checks/terms copying proselint/checks/terms/denizen_labels.py -> build/lib/proselint/checks/terms copying proselint/checks/terms/venery.py -> build/lib/proselint/checks/terms copying proselint/checks/terms/animal_adjectives.py -> build/lib/proselint/checks/terms creating build/lib/proselint/checks/archaism copying proselint/checks/archaism/__init__.py -> build/lib/proselint/checks/archaism copying proselint/checks/archaism/misc.py -> build/lib/proselint/checks/archaism creating build/lib/proselint/checks/weasel_words copying proselint/checks/weasel_words/__init__.py -> build/lib/proselint/checks/weasel_words copying proselint/checks/weasel_words/misc.py -> build/lib/proselint/checks/weasel_words copying proselint/checks/weasel_words/very.py -> build/lib/proselint/checks/weasel_words creating build/lib/proselint/checks/mondegreens copying proselint/checks/mondegreens/__init__.py -> build/lib/proselint/checks/mondegreens copying proselint/checks/mondegreens/misc.py -> build/lib/proselint/checks/mondegreens creating build/lib/proselint/checks/skunked_terms copying proselint/checks/skunked_terms/__init__.py -> build/lib/proselint/checks/skunked_terms copying proselint/checks/skunked_terms/misc.py -> build/lib/proselint/checks/skunked_terms creating build/lib/proselint/checks/redundancy copying proselint/checks/redundancy/__init__.py -> build/lib/proselint/checks/redundancy copying proselint/checks/redundancy/misc.py -> build/lib/proselint/checks/redundancy copying proselint/checks/redundancy/ras_syndrome.py -> build/lib/proselint/checks/redundancy creating build/lib/proselint/checks/security copying proselint/checks/security/credit_card.py -> build/lib/proselint/checks/security copying proselint/checks/security/__init__.py -> build/lib/proselint/checks/security copying proselint/checks/security/password.py -> build/lib/proselint/checks/security creating build/lib/proselint/checks/malapropisms copying proselint/checks/malapropisms/__init__.py -> build/lib/proselint/checks/malapropisms copying proselint/checks/malapropisms/misc.py -> build/lib/proselint/checks/malapropisms creating build/lib/proselint/checks/airlinese copying proselint/checks/airlinese/__init__.py -> build/lib/proselint/checks/airlinese copying proselint/checks/airlinese/misc.py -> build/lib/proselint/checks/airlinese creating build/lib/proselint/checks/jargon copying proselint/checks/jargon/__init__.py -> build/lib/proselint/checks/jargon copying proselint/checks/jargon/misc.py -> build/lib/proselint/checks/jargon creating build/lib/proselint/checks/uncomparables copying proselint/checks/uncomparables/__init__.py -> build/lib/proselint/checks/uncomparables copying proselint/checks/uncomparables/misc.py -> build/lib/proselint/checks/uncomparables creating build/lib/proselint/checks/cliches copying proselint/checks/cliches/__init__.py -> build/lib/proselint/checks/cliches copying proselint/checks/cliches/misc.py -> build/lib/proselint/checks/cliches copying proselint/checks/cliches/hell.py -> build/lib/proselint/checks/cliches creating build/lib/proselint/checks/psychology copying proselint/checks/psychology/__init__.py -> build/lib/proselint/checks/psychology copying proselint/checks/psychology/misc.py -> build/lib/proselint/checks/psychology creating build/lib/proselint/checks/dates_times copying proselint/checks/dates_times/__init__.py -> build/lib/proselint/checks/dates_times copying proselint/checks/dates_times/dates.py -> build/lib/proselint/checks/dates_times copying proselint/checks/dates_times/am_pm.py -> build/lib/proselint/checks/dates_times creating build/lib/proselint/checks/lgbtq copying proselint/checks/lgbtq/__init__.py -> build/lib/proselint/checks/lgbtq copying proselint/checks/lgbtq/offensive_terms.py -> build/lib/proselint/checks/lgbtq copying proselint/checks/lgbtq/terms.py -> build/lib/proselint/checks/lgbtq creating build/lib/proselint/checks/nonwords copying proselint/checks/nonwords/__init__.py -> build/lib/proselint/checks/nonwords copying proselint/checks/nonwords/misc.py -> build/lib/proselint/checks/nonwords creating build/lib/proselint/checks/consistency copying proselint/checks/consistency/__init__.py -> build/lib/proselint/checks/consistency copying proselint/checks/consistency/spelling.py -> build/lib/proselint/checks/consistency copying proselint/checks/consistency/spacing.py -> build/lib/proselint/checks/consistency creating build/lib/proselint/checks/lexical_illusions copying proselint/checks/lexical_illusions/__init__.py -> build/lib/proselint/checks/lexical_illusions copying proselint/checks/lexical_illusions/misc.py -> build/lib/proselint/checks/lexical_illusions copying proselint/demo.md -> build/lib/proselint copying proselint/.proselintrc -> build/lib/proselint ==> Starting check()... ============================= test session starts ============================== platform linux -- Python 3.7.2, pytest-4.3.0, py-1.8.0, pluggy-0.9.0 rootdir: /build/proselint/src/proselint-0.10.2, inifile: collected 145 items / 1 skipped / 144 selected tests/test_annotations.py . [ 0%] tests/test_archaism.py . [ 1%] tests/test_butterick_symbols.py ....... [ 6%] tests/test_clear_cache.py ......... [ 12%] tests/test_cliches.py ... [ 14%] tests/test_consistency_check.py . [ 15%] tests/test_consistency_spacing.py . [ 15%] tests/test_consistency_spelling.py . [ 16%] tests/test_corporate_speak.py . [ 17%] tests/test_cursing_filth.py . [ 17%] tests/test_cursing_nfl.py . [ 18%] tests/test_cursing_nword.py . [ 19%] tests/test_dates_times_am_pm.py .... [ 22%] tests/test_dates_times_dates.py ..... [ 25%] tests/test_dfw_uncomparables.py ... [ 27%] tests/test_existence_check.py ... [ 29%] tests/test_exit_codes.py FF [ 31%] tests/test_garner_dates.py ... [ 33%] tests/test_hedging.py . [ 33%] tests/test_hyperbole.py . [ 34%] tests/test_illegal_chars.py F [ 35%] tests/test_jargon.py . [ 35%] tests/test_leonard.py .. [ 37%] tests/test_lexical_illusions.py . [ 37%] tests/test_lgbtq_offensive_terms.py . [ 38%] tests/test_lgbtq_terms.py ... [ 40%] tests/test_malaproprisms.py . [ 41%] tests/test_misc_apologizing.py . [ 42%] tests/test_misc_back_formations.py . [ 42%] tests/test_misc_bureaucratese.py . [ 43%] tests/test_misc_but.py . [ 44%] tests/test_misc_capitalization.py ... [ 46%] tests/test_misc_chatspeak.py . [ 46%] tests/test_misc_commercialese.py . [ 47%] tests/test_misc_composition.py . [ 48%] tests/test_misc_currency.py . [ 48%] tests/test_misc_debased.py . [ 49%] tests/test_misc_false_plurals.py .. [ 51%] tests/test_misc_greylist.py . [ 51%] tests/test_misc_illogic.py ... [ 53%] tests/test_misc_inferior_superior.py . [ 54%] tests/test_misc_latin.py . [ 55%] tests/test_misc_many_a.py . [ 55%] tests/test_misc_metaconcepts.py . [ 56%] tests/test_misc_metadiscourse.py . [ 57%] tests/test_misc_narcissism.py . [ 57%] tests/test_misc_not_guilty.py . [ 58%] tests/test_misc_phrasal_adjectives.py .. [ 60%] tests/test_misc_preferred_forms.py . [ 60%] tests/test_misc_pretension.py . [ 61%] tests/test_misc_professions.py . [ 62%] tests/test_misc_punctuation.py . [ 62%] tests/test_misc_scare_quotes.py . [ 63%] tests/test_misc_suddenly.py . [ 64%] tests/test_misc_tense_present.py . [ 64%] tests/test_misc_usage.py . [ 65%] tests/test_misc_waxed.py . [ 66%] tests/test_misc_whence.py . [ 66%] tests/test_mixed_metaphors.py .. [ 68%] tests/test_mondegreens.py . [ 68%] tests/test_needless_variants.py . [ 69%] tests/test_nonwords.py . [ 70%] tests/test_oxymorons.py . [ 71%] tests/test_preferred_forms_check.py .. [ 72%] tests/test_psychology.py ... [ 74%] tests/test_redundancy_misc.py .... [ 77%] tests/test_redundancy_ras_syndrome.py . [ 77%] tests/test_security_credit_card.py . [ 78%] tests/test_security_password.py . [ 79%] tests/test_sexism.py . [ 80%] tests/test_skunked_terms.py . [ 80%] tests/test_spelling_able_atable.py . [ 81%] tests/test_spelling_able_ible.py . [ 82%] tests/test_spelling_athletes.py . [ 82%] tests/test_spelling_em_im_en_in.py . [ 83%] tests/test_spelling_er_or.py . [ 84%] tests/test_spelling_in_un.py . [ 84%] tests/test_spelling_misc.py . [ 85%] tests/test_terms_animal_adjectives.py . [ 86%] tests/test_terms_denizen_labels.py . [ 86%] tests/test_terms_eponymous_adjectives.py . [ 87%] tests/test_terms_venery.py . [ 88%] tests/test_tools.py .. [ 89%] tests/test_topic_detector.py . [ 90%] tests/test_typography_diacritical_marks.py . [ 91%] tests/test_typography_exclamation.py .. [ 92%] tests/test_typography_symbols.py ....... [ 97%] tests/test_uncomparables.py . [ 97%] tests/test_weasel_words_very.py . [ 98%] tests/test_gmeu/test_a_A.py x [ 99%] tests/test_gmeu/test_a_B.py x [100%] =================================== FAILURES =================================== _____________________________ test_exit_code_demo ______________________________ def test_exit_code_demo(): """Ensure that linting the demo returns an exit code of 1.""" try: > subprocess.check_output(["proselint", "--demo"]) tests/test_exit_codes.py:9: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.7/subprocess.py:395: in check_output **kwargs).stdout /usr/lib/python3.7/subprocess.py:472: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.7/subprocess.py:775: in __init__ restore_signals, start_new_session) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['proselint', '--demo'], executable = b'proselint', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 8 c2pwrite = 10, errread = -1, errwrite = -1, restore_signals = True start_new_session = False def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _posixsubprocess.fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, preexec_fn) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) # self._devnull is not always defined. devnull_fd = getattr(self, '_devnull', None) if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd: os.close(p2cread) if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd: os.close(c2pwrite) if errwrite != -1 and errread != -1 and errwrite != devnull_fd: os.close(errwrite) if devnull_fd is not None: os.close(devnull_fd) # Prevent a double close of these fds from __init__ on error. self._closed_child_pipe_fds = True # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) child_exec_never_called = (err_msg == "noexec") if child_exec_never_called: err_msg = "" # The error must be from chdir(cwd). err_filename = cwd else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if errno_num == errno.ENOENT: err_msg += ': ' + repr(err_filename) > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'proselint': 'proselint' /usr/lib/python3.7/subprocess.py:1522: FileNotFoundError ____________________________ test_exit_code_version ____________________________ def test_exit_code_version(): """Ensure that getting the version returns an exit code of 0.""" try: > subprocess.check_output(["proselint", "--version"]) tests/test_exit_codes.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.7/subprocess.py:395: in check_output **kwargs).stdout /usr/lib/python3.7/subprocess.py:472: in run with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.7/subprocess.py:775: in __init__ restore_signals, start_new_session) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['proselint', '--version'], executable = b'proselint', preexec_fn = None close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 8 c2pwrite = 10, errread = -1, errwrite = -1, restore_signals = True start_new_session = False def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _posixsubprocess.fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, preexec_fn) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) # self._devnull is not always defined. devnull_fd = getattr(self, '_devnull', None) if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd: os.close(p2cread) if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd: os.close(c2pwrite) if errwrite != -1 and errread != -1 and errwrite != devnull_fd: os.close(errwrite) if devnull_fd is not None: os.close(devnull_fd) # Prevent a double close of these fds from __init__ on error. self._closed_child_pipe_fds = True # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) child_exec_never_called = (err_msg == "noexec") if child_exec_never_called: err_msg = "" # The error must be from chdir(cwd). err_filename = cwd else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if errno_num == errno.ENOENT: err_msg += ': ' + repr(err_filename) > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'proselint': 'proselint' /usr/lib/python3.7/subprocess.py:1522: FileNotFoundError ___________________________ test_invalid_characters ____________________________ def test_invalid_characters(): """Ensure that a file with illegal characters does not break us.""" try: output = "" curr_dir = pth.dirname(pth.abspath(__file__)) test_file = pth.join(curr_dir, "illegal-chars.txt") # We only print out exception text and continue after printing a trace, # so the only way (currently) to test for failure is to look for the # exception text. Refactoring the command line function would let us # write better tests (one day). output = str(subprocess.check_output( ["proselint", test_file], > stderr=subprocess.STDOUT )) tests/test_illegal_chars.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ timeout = None popenargs = (['proselint', '/build/proselint/src/proselint-0.10.2/tests/illegal-chars.txt'],) kwargs = {'stderr': -2} def check_output(*popenargs, timeout=None, **kwargs): r"""Run command with arguments and return its output. If the exit code was non-zero it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute and output in the output attribute. The arguments are the same as for the Popen constructor. Example: >>> check_output(["ls", "-l", "/dev/null"]) b'crw-rw-rw- 1 root root 1, 3 Oct 18 2007 /dev/null\n' The stdout argument is not allowed as it is used internally. To capture standard error in the result, use stderr=STDOUT. >>> check_output(["/bin/sh", "-c", ... "ls -l non_existent_file ; exit 0"], ... stderr=STDOUT) b'ls: non_existent_file: No such file or directory\n' There is an additional optional argument, "input", allowing you to pass a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it too will be used internally. Example: >>> check_output(["sed", "-e", "s/foo/bar/"], ... input=b"when in the course of fooman events\n") b'when in the course of barman events\n' By default, all communication is in bytes, and therefore any "input" should be bytes, and the return value wil be bytes. If in text mode, any "input" should be a string, and the return value will be a string decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. """ if 'stdout' in kwargs: raise ValueError('stdout argument not allowed, it will be overridden.') if 'input' in kwargs and kwargs['input'] is None: # Explicitly passing input=None was previously equivalent to passing an # empty string. That is maintained here for backwards compatibility. kwargs['input'] = '' if kwargs.get('universal_newlines', False) else b'' return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, > **kwargs).stdout /usr/lib/python3.7/subprocess.py:395: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['proselint', '/build/proselint/src/proselint-0.10.2/tests/illegal-chars.txt'],) kwargs = {'stderr': -2, 'stdout': -1} def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if 'stdin' in kwargs: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if ('stdout' in kwargs) or ('stderr' in kwargs): raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE > with Popen(*popenargs, **kwargs) as process: /usr/lib/python3.7/subprocess.py:472: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['proselint', '/build/proselint/src/proselint-0.10.2/tests/illegal-chars.txt'] bufsize = -1, executable = None, stdin = None, stdout = -1, stderr = -2 preexec_fn = None, close_fds = True, shell = False, cwd = None, env = None universal_newlines = None, startupinfo = None, creationflags = 0 restore_signals = True, start_new_session = False, pass_fds = () def __init__(self, args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=None, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, encoding=None, errors=None, text=None): """Create new Popen instance.""" _cleanup() # Held while anything is calling waitpid before returncode has been # updated to prevent clobbering returncode if wait() or poll() are # called from multiple threads at once. After acquiring the lock, # code must re-check self.returncode to see if another thread just # finished a waitpid() call. self._waitpid_lock = threading.Lock() self._input = None self._communication_started = False if bufsize is None: bufsize = -1 # Restore default if not isinstance(bufsize, int): raise TypeError("bufsize must be an integer") if _mswindows: if preexec_fn is not None: raise ValueError("preexec_fn is not supported on Windows " "platforms") else: # POSIX if pass_fds and not close_fds: warnings.warn("pass_fds overriding close_fds.", RuntimeWarning) close_fds = True if startupinfo is not None: raise ValueError("startupinfo is only supported on Windows " "platforms") if creationflags != 0: raise ValueError("creationflags is only supported on Windows " "platforms") self.args = args self.stdin = None self.stdout = None self.stderr = None self.pid = None self.returncode = None self.encoding = encoding self.errors = errors # Validate the combinations of text and universal_newlines if (text is not None and universal_newlines is not None and bool(universal_newlines) != bool(text)): raise SubprocessError('Cannot disambiguate when both text ' 'and universal_newlines are supplied but ' 'different. Pass one or the other.') # Input and output objects. The general principle is like # this: # # Parent Child # ------ ----- # p2cwrite ---stdin---> p2cread # c2pread <--stdout--- c2pwrite # errread <--stderr--- errwrite # # On POSIX, the child objects are file descriptors. On # Windows, these are Windows file handles. The parent objects # are file descriptors on both platforms. The parent objects # are -1 when not using PIPEs. The child objects are -1 # when not redirecting. (p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) = self._get_handles(stdin, stdout, stderr) # We wrap OS handles *before* launching the child, otherwise a # quickly terminating child could make our fds unwrappable # (see #8458). if _mswindows: if p2cwrite != -1: p2cwrite = msvcrt.open_osfhandle(p2cwrite.Detach(), 0) if c2pread != -1: c2pread = msvcrt.open_osfhandle(c2pread.Detach(), 0) if errread != -1: errread = msvcrt.open_osfhandle(errread.Detach(), 0) self.text_mode = encoding or errors or text or universal_newlines # How long to resume waiting on a child after the first ^C. # There is no right value for this. The purpose is to be polite # yet remain good for interactive users trying to exit a tool. self._sigint_wait_secs = 0.25 # 1/xkcd221.getRandomNumber() self._closed_child_pipe_fds = False try: if p2cwrite != -1: self.stdin = io.open(p2cwrite, 'wb', bufsize) if self.text_mode: self.stdin = io.TextIOWrapper(self.stdin, write_through=True, line_buffering=(bufsize == 1), encoding=encoding, errors=errors) if c2pread != -1: self.stdout = io.open(c2pread, 'rb', bufsize) if self.text_mode: self.stdout = io.TextIOWrapper(self.stdout, encoding=encoding, errors=errors) if errread != -1: self.stderr = io.open(errread, 'rb', bufsize) if self.text_mode: self.stderr = io.TextIOWrapper(self.stderr, encoding=encoding, errors=errors) self._execute_child(args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, > restore_signals, start_new_session) /usr/lib/python3.7/subprocess.py:775: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['proselint', '/build/proselint/src/proselint-0.10.2/tests/illegal-chars.txt'] executable = b'proselint', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = 8, c2pwrite = 10, errread = -1 errwrite = 10, restore_signals = True, start_new_session = False def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _posixsubprocess.fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, preexec_fn) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) # self._devnull is not always defined. devnull_fd = getattr(self, '_devnull', None) if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd: os.close(p2cread) if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd: os.close(c2pwrite) if errwrite != -1 and errread != -1 and errwrite != devnull_fd: os.close(errwrite) if devnull_fd is not None: os.close(devnull_fd) # Prevent a double close of these fds from __init__ on error. self._closed_child_pipe_fds = True # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) child_exec_never_called = (err_msg == "noexec") if child_exec_never_called: err_msg = "" # The error must be from chdir(cwd). err_filename = cwd else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if errno_num == errno.ENOENT: err_msg += ': ' + repr(err_filename) > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'proselint': 'proselint' /usr/lib/python3.7/subprocess.py:1522: FileNotFoundError During handling of the above exception, another exception occurred: def test_invalid_characters(): """Ensure that a file with illegal characters does not break us.""" try: output = "" curr_dir = pth.dirname(pth.abspath(__file__)) test_file = pth.join(curr_dir, "illegal-chars.txt") # We only print out exception text and continue after printing a trace, # so the only way (currently) to test for failure is to look for the # exception text. Refactoring the command line function would let us # write better tests (one day). output = str(subprocess.check_output( ["proselint", test_file], stderr=subprocess.STDOUT )) except subprocess.CalledProcessError as e: # Non-zero return codes are OK, but what did we catch? print("Non-zero return value: will proceed. %s" % e) output += str(e.output) except Exception: > assert(not "Unknown Exception Occurred") E AssertionError: assert not 'Unknown Exception Occurred' tests/test_illegal_chars.py:26: AssertionError =============================== warnings summary =============================== /usr/lib/python3.7/site-packages/past/types/oldstr.py:5 /usr/lib/python3.7/site-packages/past/types/oldstr.py:5: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Iterable /usr/lib/python3.7/site-packages/past/builtins/misc.py:4 /usr/lib/python3.7/site-packages/past/builtins/misc.py:4: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Mapping proselint/checks/typography/symbols.py:16 /build/proselint/src/proselint-0.10.2/proselint/checks/typography/symbols.py:16: DeprecationWarning: invalid escape sequence \. regex = "\.\.\." proselint/checks/typography/symbols.py:27 /build/proselint/src/proselint-0.10.2/proselint/checks/typography/symbols.py:27: DeprecationWarning: invalid escape sequence \( regex = "\([cC]\)" proselint/checks/typography/symbols.py:38 /build/proselint/src/proselint-0.10.2/proselint/checks/typography/symbols.py:38: DeprecationWarning: invalid escape sequence \( regex = "\(TM\)" proselint/checks/typography/symbols.py:49 /build/proselint/src/proselint-0.10.2/proselint/checks/typography/symbols.py:49: DeprecationWarning: invalid escape sequence \( regex = "\([rR]\)" proselint/checks/typography/symbols.py:60 /build/proselint/src/proselint-0.10.2/proselint/checks/typography/symbols.py:60: DeprecationWarning: invalid escape sequence \. regex = "\. {3}" proselint/checks/consistency/spacing.py:26 proselint/checks/consistency/spacing.py:26 /build/proselint/src/proselint-0.10.2/proselint/checks/consistency/spacing.py:26: DeprecationWarning: invalid escape sequence \. regex = ["[\.\?!] [A-Z]", "[\.\?!] [A-Z]"] proselint/checks/dates_times/am_pm.py:23 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/am_pm.py:23: DeprecationWarning: invalid escape sequence \d return existence_check(text, ["\d{1,2} ?[ap]m"], err, msg) proselint/checks/dates_times/am_pm.py:32 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/am_pm.py:32: DeprecationWarning: invalid escape sequence \d return existence_check(text, ["\d{1,2}[ap]\.?m\.?"], err, msg) proselint/checks/dates_times/am_pm.py:42 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/am_pm.py:42: DeprecationWarning: invalid escape sequence \. return existence_check(text, ["12 ?[ap]\.?m\.?"], err, msg) proselint/checks/dates_times/am_pm.py:52 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/am_pm.py:52: DeprecationWarning: invalid escape sequence \d "\d{1,2} ?a\.?m\.? in the morning", proselint/checks/dates_times/am_pm.py:53 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/am_pm.py:53: DeprecationWarning: invalid escape sequence \d "\d{1,2} ?p\.?m\.? in the evening", proselint/checks/dates_times/am_pm.py:54 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/am_pm.py:54: DeprecationWarning: invalid escape sequence \d "\d{1,2} ?p\.?m\.? at night", proselint/checks/dates_times/am_pm.py:55 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/am_pm.py:55: DeprecationWarning: invalid escape sequence \d "\d{1,2} ?p\.?m\.? in the afternoon", proselint/checks/dates_times/dates.py:26 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/dates.py:26: DeprecationWarning: invalid escape sequence \d regex = "\d0\'s" proselint/checks/dates_times/dates.py:38 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/dates.py:38: DeprecationWarning: invalid escape sequence \d regex = "\d\d\d0\'s" proselint/checks/dates_times/dates.py:48 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/dates.py:48: DeprecationWarning: invalid escape sequence \d regex = "[fF]rom \d+[^ \t\n\r\f\va-zA-Z0-9_\.]\d+" proselint/checks/dates_times/dates.py:57 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/dates.py:57: DeprecationWarning: invalid escape sequence \d regex = "(?:" + "|".join(calendar.month_name[1:]) + "), \d{3,}" proselint/checks/dates_times/dates.py:67 /build/proselint/src/proselint-0.10.2/proselint/checks/dates_times/dates.py:67: DeprecationWarning: invalid escape sequence \d regex = "(?:" + "|".join(calendar.month_name[1:]) + ") of \d{3,}" proselint/checks/uncomparables/misc.py:117 /build/proselint/src/proselint-0.10.2/proselint/checks/uncomparables/misc.py:117: DeprecationWarning: invalid escape sequence \s all = ["\\b" + i[0] + "\s" + i[1] + "[\W$]" for i in itertools.product( proselint/checks/uncomparables/misc.py:117 /build/proselint/src/proselint-0.10.2/proselint/checks/uncomparables/misc.py:117: DeprecationWarning: invalid escape sequence \W all = ["\\b" + i[0] + "\s" + i[1] + "[\W$]" for i in itertools.product( proselint/checks/hyperbole/misc.py:27 /build/proselint/src/proselint-0.10.2/proselint/checks/hyperbole/misc.py:27: DeprecationWarning: invalid escape sequence \? "[a-z]*\?{2,}" proselint/checks/lexical_illusions/misc.py:26 /build/proselint/src/proselint-0.10.2/proselint/checks/lexical_illusions/misc.py:26: DeprecationWarning: invalid escape sequence \s "the\sthe", proselint/checks/lexical_illusions/misc.py:27 /build/proselint/src/proselint-0.10.2/proselint/checks/lexical_illusions/misc.py:27: DeprecationWarning: invalid escape sequence \s "am\sam", proselint/checks/lexical_illusions/misc.py:28 /build/proselint/src/proselint-0.10.2/proselint/checks/lexical_illusions/misc.py:28: DeprecationWarning: invalid escape sequence \s "has\shas" proselint/checks/misc/but.py:24 /build/proselint/src/proselint-0.10.2/proselint/checks/misc/but.py:24: DeprecationWarning: invalid escape sequence \s regex = "(^|([\n\r]+))(\s*)But" proselint/checks/misc/commercialese.py:33 /build/proselint/src/proselint-0.10.2/proselint/checks/misc/commercialese.py:33: DeprecationWarning: invalid escape sequence \. "inst\.", proselint/checks/misc/commercialese.py:40 /build/proselint/src/proselint-0.10.2/proselint/checks/misc/commercialese.py:40: DeprecationWarning: invalid escape sequence \. "prox\.", proselint/checks/misc/commercialese.py:47 /build/proselint/src/proselint-0.10.2/proselint/checks/misc/commercialese.py:47: DeprecationWarning: invalid escape sequence \. "ult\." proselint/checks/misc/currency.py:26 /build/proselint/src/proselint-0.10.2/proselint/checks/misc/currency.py:26: DeprecationWarning: invalid escape sequence \$ "\$[\d]* ?(?:dollars|usd|us dollars)" proselint/checks/misc/phrasal_adjectives.py:27 /build/proselint/src/proselint-0.10.2/proselint/checks/misc/phrasal_adjectives.py:27: DeprecationWarning: invalid escape sequence \s regex = "\s[^\s-]+ly-" proselint/checks/misc/tense_present.py:27 /build/proselint/src/proselint-0.10.2/proselint/checks/misc/tense_present.py:27: DeprecationWarning: invalid escape sequence \d u"up to \d{1,3}% ?[-\u2014\u2013]{0,3} ?(?:or|and) more\W?", proselint/checks/misc/tense_present.py:42 /build/proselint/src/proselint-0.10.2/proselint/checks/misc/tense_present.py:42: DeprecationWarning: invalid escape sequence \s for m in re.finditer(u"\s{}\s".format(i), text, flags=re.U | re.I): proselint/checks/security/credit_card.py:26 /build/proselint/src/proselint-0.10.2/proselint/checks/security/credit_card.py:26: DeprecationWarning: invalid escape sequence \d "4\d{15}", proselint/checks/security/credit_card.py:27 /build/proselint/src/proselint-0.10.2/proselint/checks/security/credit_card.py:27: DeprecationWarning: invalid escape sequence \d "5[1-5]\d{14}", proselint/checks/security/credit_card.py:28 /build/proselint/src/proselint-0.10.2/proselint/checks/security/credit_card.py:28: DeprecationWarning: invalid escape sequence \d "3[4,7]\d{13}", proselint/checks/security/credit_card.py:29 /build/proselint/src/proselint-0.10.2/proselint/checks/security/credit_card.py:29: DeprecationWarning: invalid escape sequence \d "3[0,6,8]\d{12}", proselint/checks/security/credit_card.py:30 /build/proselint/src/proselint-0.10.2/proselint/checks/security/credit_card.py:30: DeprecationWarning: invalid escape sequence \d "6011\d{12}", proselint/checks/security/password.py:24 /build/proselint/src/proselint-0.10.2/proselint/checks/security/password.py:24: DeprecationWarning: invalid escape sequence \S pwd_regex = "[:]? [\S]{6,30}" tests/test_gmeu/test_a_A.py:10 tests/test_gmeu/test_a_A.py:10: PytestWarning: yield tests were removed in pytest 4.0 - test_a_vs_an will be ignored def test_a_vs_an(): tests/test_gmeu/test_a_B.py:10 tests/test_gmeu/test_a_B.py:10: PytestWarning: yield tests were removed in pytest 4.0 - test_a_distributive will be ignored def test_a_distributive(): -- Docs: https://docs.pytest.org/en/latest/warnings.html === 3 failed, 140 passed, 1 skipped, 2 xfailed, 43 warnings in 12.32 seconds === ==> ERROR: A failure occurred in check(). Aborting... ==> ERROR: Build failed, check /data/archbuild/chroots/staging-x86_64/abaumann/build