{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":25437858,"defaultBranch":"3.x","name":"pyinfra","ownerLogin":"pyinfra-dev","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-10-19T19:37:45.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/146648081?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714850896.0","currentOid":""},"activityList":{"items":[{"before":"eebdf96b41dfe2b6b1085a365480e8788f5fc4f6","after":"9b31e0550c6525881adaf5318e034d34db874783","ref":"refs/heads/3.x","pushedAt":"2024-05-26T08:14:34.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Ignore type errors from importlib.metadata backport","shortMessageHtmlLink":"Ignore type errors from importlib.metadata backport"}},{"before":"57a9a4017a722f2901c3408b103df95802cf714b","after":"eebdf96b41dfe2b6b1085a365480e8788f5fc4f6","ref":"refs/heads/3.x","pushedAt":"2024-05-25T12:33:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"PyinfraOperation: Put *args first so that mypy correctly handles inner operation args\n\nThis is not a mypy issue - unnamed arguments are passed in order so if\nPyinfraOperation were a real class instead of a protocol then\nPyinfraOperation.__call__(\"a\", \"b\") would pass \"a\" and \"b\" to _sudo and\n_sudo_user.\n\nThis is the minimum fix to avoid errors like these:\n\npyinfra_deploy.py:6: error: Too few arguments for \"__call__\" of \"PyinfraOperation\" [call-arg]\npyinfra_deploy.py:7: error: Argument 1 to \"__call__\" of \"PyinfraOperation\" has incompatible type \"str\"; expected \"bool\" [arg-type]","shortMessageHtmlLink":"PyinfraOperation: Put *args first so that mypy correctly handles inne…"}},{"before":"6114428b7f6b1a62368326ed610ff2c68bb7c452","after":"57a9a4017a722f2901c3408b103df95802cf714b","ref":"refs/heads/3.x","pushedAt":"2024-05-25T12:26:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Update minimum python version to 3.8","shortMessageHtmlLink":"Update minimum python version to 3.8"}},{"before":"81a1c27e613d17dfe080433802ef1e8c7d59c0d9","after":"6114428b7f6b1a62368326ed610ff2c68bb7c452","ref":"refs/heads/3.x","pushedAt":"2024-05-25T12:23:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Allow single function _if\n\nAlways requiring _if to be a list requires a lot of unnecessary syntax in the common\nspecial case of exactly one condition, so this commit allows to specify a single condition\ndirectly.","shortMessageHtmlLink":"Allow single function _if"}},{"before":"62135137f0fbcaf63a397f772473abc24eb79bbf","after":"81a1c27e613d17dfe080433802ef1e8c7d59c0d9","ref":"refs/heads/3.x","pushedAt":"2024-05-25T12:22:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Do not mistake inventory files for python modules\n\nCheck for inventory files first, so that they are never mistaken for python modules or\nhostnames and avoid unnecessary warnings. Also, support IPv6-only hosts.\n\nFixes #1069.","shortMessageHtmlLink":"Do not mistake inventory files for python modules"}},{"before":"c89e21142523b540ba8cf18dc8d54daf5113773c","after":"62135137f0fbcaf63a397f772473abc24eb79bbf","ref":"refs/heads/3.x","pushedAt":"2024-05-25T12:11:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Update readme","shortMessageHtmlLink":"Update readme"}},{"before":"80aca6e3ea9e2c1e423505abf1f5ef9c2c4affdc","after":"c89e21142523b540ba8cf18dc8d54daf5113773c","ref":"refs/heads/3.x","pushedAt":"2024-05-25T12:03:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Refactor fact argument handling\n\nLong overdue cleanup of global argument handling in the facts API.","shortMessageHtmlLink":"Refactor fact argument handling"}},{"before":"9c4b7722a11671bcac5dc344f4281ea73990b823","after":"80aca6e3ea9e2c1e423505abf1f5ef9c2c4affdc","ref":"refs/heads/3.x","pushedAt":"2024-05-13T10:22:27.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Replace calls to deprecated distutils.spawn\n\nThis commit replaces distutils.spawn.find_executable() with\nshutil.which() from the standard library. distutils is deprecated and\nhas been removed from Python 3.12+, causing import errors when pyinfra\nis run on that version.","shortMessageHtmlLink":"Replace calls to deprecated distutils.spawn"}},{"before":"105a29ba5ef407a959039955b83cbcad9e63dfb1","after":"9c4b7722a11671bcac5dc344f4281ea73990b823","ref":"refs/heads/3.x","pushedAt":"2024-05-12T20:46:24.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Add `OperationMeta.will_change` attribute","shortMessageHtmlLink":"Add OperationMeta.will_change attribute"}},{"before":"42a3e4e3700973fd732104c5d683237d2225d85e","after":"105a29ba5ef407a959039955b83cbcad9e63dfb1","ref":"refs/heads/3.x","pushedAt":"2024-05-12T20:42:29.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"facts/NetworkDevices: Add additional test cases\n\nBased on an Arch Linux machine.\n\nKnown issue: the current state parsing behavior is rather imprecise\nand is not consistent between `ip a` and `ifconfig -a`.\nFor example, the `wlp6s0` interface in the `linux_ifconfig_multiple`\ntest case should have a state of `DOWN`, not `UNKNOWN`.","shortMessageHtmlLink":"facts/NetworkDevices: Add additional test cases"}},{"before":"9d67e9bba622d4e451b3e1f31becca24973c72fc","after":"42a3e4e3700973fd732104c5d683237d2225d85e","ref":"refs/heads/3.x","pushedAt":"2024-05-12T08:05:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Fixup SSH connector tests for Python 3.12","shortMessageHtmlLink":"Fixup SSH connector tests for Python 3.12"}},{"before":"5643c01bf9709266578e8d3c0fceb3d05c660ec6","after":"9d67e9bba622d4e451b3e1f31becca24973c72fc","ref":"refs/heads/3.x","pushedAt":"2024-05-12T08:02:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Cast Vagrant SSH data to the correct types","shortMessageHtmlLink":"Cast Vagrant SSH data to the correct types"}},{"before":"30e360958d58cd896bbbffae3ba8ba06938fb45a","after":"5643c01bf9709266578e8d3c0fceb3d05c660ec6","ref":"refs/heads/3.x","pushedAt":"2024-05-11T19:47:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Fix docker.get_file for binary files\n\nThe file to get is copied to a temp file, and then opened to read into\nmemory. This would open the file in text mode (the default), which would\nfail on binary files that could not be decoded as utf8.\n\nThis changes the file opening to use binary mode. It also simplifies the\nrest of the code, which would try to handle both strings and bytes, but\nthis is likely a remnant of py2 code (or the maybe copied from files.put\nwhere the passed file could possibly be a stream in text mode).","shortMessageHtmlLink":"Fix docker.get_file for binary files"}},{"before":"1c5ceca09e23400f99fa14a9f2664a235ce20f8c","after":"30e360958d58cd896bbbffae3ba8ba06938fb45a","ref":"refs/heads/3.x","pushedAt":"2024-05-11T19:45:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Add a missing ,\n\notherwise the example is not working.","shortMessageHtmlLink":"Add a missing ,"}},{"before":"9b6c214effb75b4c485b3766a135bae26029edbd","after":"1c5ceca09e23400f99fa14a9f2664a235ce20f8c","ref":"refs/heads/3.x","pushedAt":"2024-05-11T19:14:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Fix typos","shortMessageHtmlLink":"Fix typos"}},{"before":"b475d0118f0262ab154ead9ab1a433a22f197d6a","after":"9b6c214effb75b4c485b3766a135bae26029edbd","ref":"refs/heads/3.x","pushedAt":"2024-05-11T19:13:41.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"fix: use shelex.quote to quote sudo passwords\n\nNeed to use shelex.quote (rather than just single quoting) to handle\npasswords that contain quotes.","shortMessageHtmlLink":"fix: use shelex.quote to quote sudo passwords"}},{"before":"d309ba4bd3368082dac7abaf3f8f8443d46d325d","after":"b475d0118f0262ab154ead9ab1a433a22f197d6a","ref":"refs/heads/3.x","pushedAt":"2024-05-11T18:04:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"docs: Various grammar / syntax improvements","shortMessageHtmlLink":"docs: Various grammar / syntax improvements"}},{"before":"c0be23b338475cd13209f945bb63d9c77e65a9c0","after":"d309ba4bd3368082dac7abaf3f8f8443d46d325d","ref":"refs/heads/3.x","pushedAt":"2024-05-11T17:58:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Start testing against Python 3.12","shortMessageHtmlLink":"Start testing against Python 3.12"}},{"before":"53e8207bf900e3d2021e9c7ae425585d52731d7c","after":"c0be23b338475cd13209f945bb63d9c77e65a9c0","ref":"refs/heads/3.x","pushedAt":"2024-05-11T12:37:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"fix sphinx syntax","shortMessageHtmlLink":"fix sphinx syntax"}},{"before":"fd966e72c152433667bb83a447e943317cb54750","after":null,"ref":"refs/tags/v3.0b1","pushedAt":"2024-05-04T19:28:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"}},{"before":"eeae5ca0d8d524f30fc88125acf02b5dfe7835e1","after":"53e8207bf900e3d2021e9c7ae425585d52731d7c","ref":"refs/heads/3.x","pushedAt":"2024-05-04T19:21:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Release v3.0.beta1","shortMessageHtmlLink":"Release v3.0.beta1"}},{"before":"bae35c7586bd161788d930a05de05d41d1cb6f40","after":"eeae5ca0d8d524f30fc88125acf02b5dfe7835e1","ref":"refs/heads/3.x","pushedAt":"2024-05-04T18:41:19.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Update readme, new blurb","shortMessageHtmlLink":"Update readme, new blurb"}},{"before":"ff45f9e35e2571d3d02f6b0671399e17a5d188c6","after":"bae35c7586bd161788d930a05de05d41d1cb6f40","ref":"refs/heads/3.x","pushedAt":"2024-05-04T18:34:04.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Store and use (re)deploy data for all operation command generation\n\nAttaching the deploy data *at operation call time* allows us to reuse it\nwhen/if the operation is re-evaluated during execution.","shortMessageHtmlLink":"Store and use (re)deploy data for all operation command generation"}},{"before":"ed67e7482808d1fc40291307e62faf558db9c8a3","after":"ff45f9e35e2571d3d02f6b0671399e17a5d188c6","ref":"refs/heads/3.x","pushedAt":"2024-04-13T11:15:55.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Add test case for deeply nested directories on Windows for files.sync","shortMessageHtmlLink":"Add test case for deeply nested directories on Windows for files.sync"}},{"before":"d6223a1c2578dd4b583e6fcb78e3e1fd952d285d","after":"ed67e7482808d1fc40291307e62faf558db9c8a3","ref":"refs/heads/3.x","pushedAt":"2024-03-09T11:54:29.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Fix remaining type issues with arguments dicts","shortMessageHtmlLink":"Fix remaining type issues with arguments dicts"}},{"before":"52931bd1ee3a542b93aae71fecef060f3de9992b","after":"d6223a1c2578dd4b583e6fcb78e3e1fd952d285d","ref":"refs/heads/3.x","pushedAt":"2024-03-09T11:44:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Fix remaining type issues with arguments dicts","shortMessageHtmlLink":"Fix remaining type issues with arguments dicts"}},{"before":"34ac5d2b4d4771f2f0614450d3f9e181105cfcdd","after":"52931bd1ee3a542b93aae71fecef060f3de9992b","ref":"refs/heads/3.x","pushedAt":"2024-03-09T11:42:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Fix remaining type issues with arguments dicts","shortMessageHtmlLink":"Fix remaining type issues with arguments dicts"}},{"before":"cf3830b43593c43171281e5034bee59df3fb20a1","after":"34ac5d2b4d4771f2f0614450d3f9e181105cfcdd","ref":"refs/heads/3.x","pushedAt":"2024-03-09T11:32:54.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Display \"conditional change\" column in pre-execution host meta","shortMessageHtmlLink":"Display \"conditional change\" column in pre-execution host meta"}},{"before":"e8530f9260a1f609ca42e4d2f98bae2d1e17c1a4","after":"cf3830b43593c43171281e5034bee59df3fb20a1","ref":"refs/heads/3.x","pushedAt":"2024-03-02T12:40:44.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Fetch tags after clone to fix build public docs script","shortMessageHtmlLink":"Fetch tags after clone to fix build public docs script"}},{"before":"3ebd9fae17d1eea567eaacf6d1193fad7ef29f1d","after":"e8530f9260a1f609ca42e4d2f98bae2d1e17c1a4","ref":"refs/heads/3.x","pushedAt":"2024-02-29T11:44:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Fizzadar","name":"Nick Mills-Barrett","path":"/Fizzadar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1026154?s=80&v=4"},"commit":{"message":"Allow tab aligned dpkg output","shortMessageHtmlLink":"Allow tab aligned dpkg output"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEVAzulgA","startCursor":null,"endCursor":null}},"title":"Activity · pyinfra-dev/pyinfra"}