log

age author description
Thu, 14 Feb 2019 10:41:47 -0500 Jordi Gutiérrez Hermoso crecord: remove obsolete version check
Wed, 13 Feb 2019 16:02:44 -0500 Jordi Gutiérrez Hermoso histedit: remove "chistedit" mention from interface
Wed, 13 Feb 2019 18:17:42 +0530 Navaneeth Suresh revset: improve documentation on expectsize()
Wed, 13 Feb 2019 12:09:36 -0800 Martin von Zweigbergk scmutil: fix a comment that doesn't match the code
Thu, 14 Feb 2019 13:16:36 -0800 Gregory Szorc remotefilelog: remove strkwargs()
Wed, 13 Feb 2019 16:31:20 -0800 Gregory Szorc remotefilelog: use raw strings when looking for variable names
Thu, 10 Jan 2019 18:25:18 +0100 Georges Racinet rust-cpython: binding for headrevs()
Wed, 16 Jan 2019 16:05:27 +0100 Georges Racinet rust-cpython: moved py_set() utility to conversion module
Sun, 02 Dec 2018 16:19:22 +0100 Georges Racinet rust: translated random test of missingancestors
Tue, 12 Feb 2019 13:46:38 -0800 Martin von Zweigbergk debugpathcopies: fix typo in synopsis
Tue, 12 Feb 2019 13:42:42 -0800 Martin von Zweigbergk debugrename: don't require at least one path
Tue, 12 Feb 2019 11:27:27 -0800 Gregory Szorc revlog: use iterbytestr()
Sun, 10 Feb 2019 22:41:51 -0800 Martin von Zweigbergk commit: respect ui.relative-paths
Sun, 10 Feb 2019 22:21:45 -0800 Martin von Zweigbergk resolve: slightly simplify join expression by joining with empty strings
Sun, 10 Feb 2019 22:18:19 -0800 Martin von Zweigbergk resolve: respect ui.relative-paths also for warning messages
Mon, 11 Feb 2019 09:40:24 -0800 Martin von Zweigbergk addremove: respect ui.relative-paths
Mon, 11 Feb 2019 09:12:23 -0800 Martin von Zweigbergk windows: use util.localpath for repo-relative paths in getuipathfn()
Tue, 12 Feb 2019 17:10:31 -0500 Jordi Gutiérrez Hermoso walkchangerevs: obey allfiles parameter when taking the slow path
Fri, 08 Feb 2019 18:26:35 +0100 Boris Feld test: stabilize test-wireproto-exchangev2.t flaky output
Mon, 04 Feb 2019 14:29:03 -0800 Kyle Lippincott zsh: fix `hg resolve` completion when in a subdirectory (issue6067)
Sun, 03 Feb 2019 19:10:39 +0530 Navaneeth Suresh revset: add expectsize to check the size of a set
Mon, 11 Feb 2019 11:18:37 -0500 Augie Fackler merge with stable
Mon, 11 Feb 2019 15:41:08 +0300 Pulkit Goyal branchmap: decode a label only once
Mon, 11 Feb 2019 15:34:35 +0300 Pulkit Goyal branchmap: move __init__ up in branchcache class
Sat, 09 Feb 2019 22:50:53 -0800 Martin von Zweigbergk match: delete unused root and cwd arguments from {always,never,exact}() (API)
Sun, 10 Feb 2019 14:35:36 -0800 Martin von Zweigbergk match: delete unused root and cwd arguments to constructors (API)
Sun, 10 Feb 2019 21:33:21 -0800 Martin von Zweigbergk dirstate: call and cache os.getcwd() in constructor
Sun, 10 Feb 2019 14:16:37 -0800 Martin von Zweigbergk cleanup: prefer matchmod.{always,never}() over accessing matchers directly
Sun, 10 Feb 2019 14:16:33 -0800 Martin von Zweigbergk match: allow passing in badfn to always() and never()
Sun, 10 Feb 2019 14:04:08 -0800 Gregory Szorc py3: use raw strings and %d for formatting
Thu, 31 Jan 2019 15:35:51 -0800 Martin von Zweigbergk diff: make --stat respect ui.relative-paths
Sat, 09 Feb 2019 23:48:19 -0800 Martin von Zweigbergk match: delete unused argument "listsubrepos" from _buildmatch()
Sat, 09 Feb 2019 16:46:11 -0800 Martin von Zweigbergk match: delete unused rel() (API)
Sat, 09 Feb 2019 16:43:20 -0800 Martin von Zweigbergk largefiles: get cwd and relative paths from repo instead of matcher
Sat, 09 Feb 2019 14:37:58 -0800 Martin von Zweigbergk scmutil: remove special handling of pats==("",) in matchandpats() (API)
Fri, 08 Feb 2019 13:33:40 -0800 Martin von Zweigbergk scmutil: respect ui.relative-paths in default match.badfn
Fri, 08 Feb 2019 13:00:28 -0800 Martin von Zweigbergk cmdutil: migrate previously missed instances to uipathfn
Fri, 08 Feb 2019 13:54:20 -0800 Martin von Zweigbergk cat: respect ui.relative-paths for "skipping missing subrepository"
Fri, 08 Feb 2019 13:51:29 -0800 Martin von Zweigbergk addremove: use uipathfn instead of m.rel() for recorded similatity message
Thu, 07 Feb 2019 14:22:11 -0800 Martin von Zweigbergk forget: use relative paths for --interactive
Fri, 08 Feb 2019 13:20:46 -0800 Martin von Zweigbergk automv: respect ui.relative-paths
Fri, 08 Feb 2019 13:27:54 -0800 Martin von Zweigbergk debugwalk: avoid match.rel() and use repo.pathto() instead
Fri, 08 Feb 2019 13:27:26 -0800 Martin von Zweigbergk match: delete unused abs() (API)
Fri, 08 Feb 2019 13:00:05 -0800 Martin von Zweigbergk copy: respect ui.relative-paths in copy/rename
Fri, 08 Feb 2019 12:00:44 -0800 Martin von Zweigbergk match: delete unused uipath() and _uipathrelative (API)
Fri, 08 Feb 2019 11:56:39 -0800 Martin von Zweigbergk diff: respect ui.relative-paths for warning about path outside --root
Thu, 07 Feb 2019 23:29:14 -0800 Martin von Zweigbergk largefiles: use uipathfn instead of match.{rel,uipath}() (API)
Fri, 08 Feb 2019 13:08:01 -0800 Martin von Zweigbergk forget: pass around uipathfn and use instead of m.rel() (API)
Thu, 07 Feb 2019 23:25:39 -0800 Martin von Zweigbergk addremove: pass around uipathfn and use instead of m.uipath() (API)
Thu, 07 Feb 2019 23:19:33 -0800 Martin von Zweigbergk remove: pass around uipathfn and use instead of m.rel() (API)
Thu, 07 Feb 2019 11:15:30 -0800 Martin von Zweigbergk add: pass around uipathfn and use instead of m.rel() (API)
Fri, 08 Feb 2019 10:32:48 -0800 Martin von Zweigbergk subrepo: (mostly) use relative path in "skipping missing subrepository"
Fri, 08 Feb 2019 10:19:30 -0800 Martin von Zweigbergk subrepo: use relative path for "already tracked" message
Wed, 06 Feb 2019 23:56:59 -0800 Martin von Zweigbergk diff: make `hg diff --root=subrepo` work
Wed, 06 Feb 2019 23:12:56 -0800 Martin von Zweigbergk patch: replace "prefix" and "relroot" arguments by "pathfn" (API)
Sat, 09 Feb 2019 01:24:32 +0100 Boris Feld test: use `printenv.py --line` in `test-static-http.t`
Sat, 09 Feb 2019 01:24:19 +0100 Boris Feld test: use `printenv.py --line` in `test-ssh.t`
Sat, 09 Feb 2019 01:23:49 +0100 Boris Feld test: use `printenv.py --line` in `test-ssh-bundle1.t`
Sat, 09 Feb 2019 01:23:29 +0100 Boris Feld test: use `printenv.py --line` in `test-push-http.t`
Sat, 09 Feb 2019 01:22:20 +0100 Boris Feld test: use `printenv.py --line` in `test-https.t`
Sat, 09 Feb 2019 01:20:35 +0100 Boris Feld test: use `printenv.py --line` in `test-http-bundle1.t`
Sat, 09 Feb 2019 01:20:03 +0100 Boris Feld test: use `printenv.py --line` in `test-hook.t`
Sat, 09 Feb 2019 01:19:43 +0100 Boris Feld test: use `printenv.py --line` in `test-bundle2-multiple-changegroups.t`
Sat, 09 Feb 2019 01:19:15 +0100 Boris Feld test: use `printenv.py --line` in `test-bundle.t`
Thu, 07 Feb 2019 23:41:44 -0800 Martin von Zweigbergk debugignore: respect ui.relative-paths
Fri, 08 Feb 2019 13:31:26 -0800 Martin von Zweigbergk annotate: respect ui.relative-paths for "binary file" message
Fri, 08 Feb 2019 23:29:07 -0800 Martin von Zweigbergk remotefilelog: replace matchandpats() by match()
Thu, 31 Jan 2019 12:49:22 -0800 Kyle Lippincott blackbox: test that track=* works to log everything
Thu, 31 Jan 2019 11:55:02 -0800 Kyle Lippincott blackbox: test that unsetting track disables blackbox logging
Thu, 07 Feb 2019 10:20:57 -0800 Martin von Zweigbergk subrepo: adjust subrepo prefix before calling subrepo.archive() (API)
Thu, 07 Feb 2019 09:52:36 -0800 Martin von Zweigbergk subrepo: adjust subrepo prefix before calling subrepo.diff() (API)
Thu, 07 Feb 2019 10:01:55 -0800 Martin von Zweigbergk subrepo: adjust subrepo prefix before calling subrepo.addremove() (API)
Thu, 07 Feb 2019 09:59:27 -0800 Martin von Zweigbergk subrepo: adjust subrepo prefix before calling subrepo.add() (API)
Thu, 07 Feb 2019 09:52:22 -0800 Martin von Zweigbergk subrepo: adjust subrepo prefix before calling subrepo.forget() (API)
Thu, 07 Feb 2019 09:40:37 -0800 Martin von Zweigbergk subrepo: adjust subrepo prefix before calling subrepo.removefiles() (API)
Thu, 07 Feb 2019 09:46:36 -0800 Martin von Zweigbergk subrepo: avoid calculating subrepo prefix twice for cat() (API)
Thu, 07 Feb 2019 16:43:42 +0300 Pulkit Goyal py3: make sure __repr__ returns str
Thu, 07 Feb 2019 16:44:43 +0300 Pulkit Goyal py3: use bytes.startswith() instead of comparing with bytes[0]
Fri, 08 Feb 2019 22:57:26 -0800 Martin von Zweigbergk match: remove unused "exact" argument (API)
Fri, 08 Feb 2019 23:03:42 -0800 Martin von Zweigbergk tests: replace match.match(exact=True) by match.exact()
Wed, 06 Feb 2019 22:52:49 -0800 Martin von Zweigbergk patch: accept second matcher that applies only to copy sources (API)
Wed, 06 Feb 2019 17:46:20 -0800 Martin von Zweigbergk patch: let caller pass in root-filtering matcher (API)
Wed, 06 Feb 2019 17:27:43 -0800 Martin von Zweigbergk patch: pass in context objects into diffhunks() (API)
Thu, 07 Feb 2019 21:48:50 +0300 Nikita Slyusarev convert: handle exec bit removal while converting to svn
Thu, 07 Feb 2019 18:57:54 +0300 Nikita Slyusarev convert: handle empty intial commits while converting to svn
Mon, 21 Jan 2019 17:37:33 +0000 Martijn Pieters branchmap: encapsulate cache updating in the map itself
Thu, 07 Feb 2019 21:16:25 -0800 Martin von Zweigbergk context: replace repeated "self._repo.dirstate" by "ds" variable
Thu, 07 Feb 2019 21:48:24 -0800 Martin von Zweigbergk context: delete unused undelete()
Wed, 06 Feb 2019 22:32:50 -0800 Martin von Zweigbergk diffordiffstat: avoid looking up contexts twice
Thu, 07 Feb 2019 17:04:15 +0100 Boris Feld fsmonitor: rename new verbose config knob
Wed, 06 Feb 2019 23:41:36 -0500 Matt Harbison tests: stabilize test-extdiff.t on Windows
Wed, 06 Feb 2019 22:30:49 -0500 Matt Harbison lfs: disable all authentication except Basic for HTTP(S) connections
Wed, 30 Jan 2019 16:21:30 -0800 Martin von Zweigbergk locate: respect ui.relative-paths
Tue, 05 Feb 2019 10:30:05 -0800 Martin von Zweigbergk revert: respect ui.relative-paths
Tue, 05 Feb 2019 09:44:22 -0800 Martin von Zweigbergk scmutil: delete now-unused origpath() (API)
Tue, 05 Feb 2019 09:43:34 -0800 Martin von Zweigbergk subrepo: migrate to scmutil.backuppath()
Mon, 04 Feb 2019 21:31:18 -0800 Martin von Zweigbergk resolve: migrate to scmutil.backuppath()
Mon, 04 Feb 2019 21:19:05 -0800 Martin von Zweigbergk merge: migrate to scmutil.backuppath()
Mon, 04 Feb 2019 21:14:37 -0800 Martin von Zweigbergk filemerge: migrate to scmutil.backuppath()
Mon, 04 Feb 2019 21:10:17 -0800 Martin von Zweigbergk mq: migrate to scmutil.backuppath()
Mon, 04 Feb 2019 21:00:58 -0800 Martin von Zweigbergk largefiles: migrate to scmutil.backuppath()
Tue, 05 Feb 2019 11:14:07 -0800 Martin von Zweigbergk revert: migrate to scmutil.backuppath()
Mon, 04 Feb 2019 20:49:45 -0800 Martin von Zweigbergk shelve: fix broken backup of conflicting untracked file
Mon, 04 Feb 2019 20:46:33 -0800 Martin von Zweigbergk scmutil: introduce a new backuppath() to replace origpath()
Mon, 04 Feb 2019 09:21:40 -0800 Martin von Zweigbergk tests: demonstrate broken unshelve when backing up untracked file
Wed, 06 Feb 2019 15:35:25 -0800 Martin von Zweigbergk subrepo: always show relative path to .orig backup
Wed, 06 Feb 2019 15:26:53 -0800 Martin von Zweigbergk mq: always show relative path to .orig backup
Wed, 06 Feb 2019 14:57:08 -0800 Martin von Zweigbergk revert: always show relative path to .orig backup
Tue, 05 Feb 2019 17:02:40 -0500 Matt Harbison py3: ensure the HTTP password manager returns strings, not bytes
Tue, 05 Feb 2019 16:47:19 -0500 Matt Harbison tests: enable HTTP digest testing
Tue, 05 Feb 2019 16:16:14 -0500 Matt Harbison wsgiheaders: make sure __repr__() returns a string
Tue, 05 Feb 2019 13:32:39 -0500 Matt Harbison tests: add code to handle HTTP digests on the server side
Tue, 05 Feb 2019 13:30:48 -0500 Matt Harbison run-tests: allow spaces in the --view tool
Tue, 05 Feb 2019 09:37:23 -0500 Matt Harbison tests: extract the http server authentication extension to a single module
Sat, 02 Feb 2019 21:58:49 -0800 Ludovic Chabant extdiff: support tools that can be run simultaneously
Tue, 05 Feb 2019 11:17:11 -0800 Martin von Zweigbergk largefiles: use wrappedfunction() in overriderevert()
Tue, 05 Feb 2019 14:25:11 -0800 Martin von Zweigbergk largefiles: use wrappedfunction() for "normal files match" in overridecopy()
Tue, 05 Feb 2019 14:42:13 -0800 Martin von Zweigbergk largefiles: use wrappedfunction() for match() override in overridecopy()
Tue, 05 Feb 2019 14:29:37 -0800 Martin von Zweigbergk largefiles: use wrappedfunction() for util.copyfile() override
Tue, 05 Feb 2019 14:15:34 -0800 Martin von Zweigbergk largefiles: use wrappedfunction() for matchandpats() override in overridelog()
Fri, 01 Feb 2019 22:52:09 -0800 Martin von Zweigbergk status: if ui.relative-paths=no, don't use relative paths even with patterns
Tue, 29 Jan 2019 15:49:20 -0800 Martin von Zweigbergk files: respect ui.relative-paths
Fri, 01 Feb 2019 22:28:55 -0800 Martin von Zweigbergk config: introduce a new value for ui.relative-paths getting old behavior
Tue, 05 Feb 2019 21:31:33 +0300 Pulkit Goyal py3: use pycompat.bytestr() on extra values because it can be int
Tue, 05 Feb 2019 21:30:30 +0300 Pulkit Goyal py3: add some b'' prefixes in hgext/convert/monotone.py
Tue, 05 Feb 2019 21:29:55 +0300 Pulkit Goyal py3: use '%d' for integers instead of '%s'
Tue, 05 Feb 2019 21:17:46 +0300 Pulkit Goyal py3: add 1 new passing test found by buildbot
Mon, 04 Feb 2019 21:23:44 -0800 Martin von Zweigbergk merge: don't unnecessarily calculate absolute path
Mon, 04 Feb 2019 21:21:55 -0800 Martin von Zweigbergk merge: don't unnecessarily calculate backup path
Sun, 03 Feb 2019 22:49:28 -0800 Martin von Zweigbergk largefiles: drop "rel" prefix from filename variables
Mon, 21 Jan 2019 17:41:59 +0000 Martijn Pieters branchmap: add some clarifications and clean up flow
Mon, 21 Jan 2019 16:37:23 +0000 Martijn Pieters branchmap: updating triggers a write
Mon, 21 Jan 2019 16:04:48 +0000 Martijn Pieters branchmap: make branchcache responsible for reading
Mon, 04 Feb 2019 09:10:07 -0800 Gregory Szorc attr: make some docstrings raw strings
Sun, 27 Jan 2019 13:37:37 +0900 Yuya Nishihara revset: leverage getintrange() helper in relation-subscript operation (API)
Sun, 27 Jan 2019 13:28:45 +0900 Yuya Nishihara revset: allow to parse single integer as a range
Sun, 27 Jan 2019 13:18:53 +0900 Yuya Nishihara revset: extract a helper to parse integer range
Thu, 31 Jan 2019 14:47:34 -0800 Kyle Lippincott commit: if interactive, look elsewhere for whitespace settings (BC)
Thu, 31 Jan 2019 14:29:24 -0800 Kyle Lippincott diff: when looking for diff configs, support a configurable prefix
Thu, 31 Jan 2019 14:27:25 -0800 Kyle Lippincott config: extract diff-related coreconfigitem()s to a helper method
Mon, 28 Jan 2019 18:05:05 -0800 Kyle Lippincott commit: ignore diff whitespace settings when doing `commit -i` (issue5839)
Mon, 04 Feb 2019 14:43:26 -0800 Gregory Szorc tests: add syntax warnings on Python 3.8 in python-zstandard
Mon, 04 Feb 2019 14:38:23 -0800 Gregory Szorc check-py3-compat: manually format and print warnings
Mon, 04 Feb 2019 14:25:00 -0800 Gregory Szorc check-py3-compat: provide filename to ast.parse()
Mon, 04 Feb 2019 14:22:50 -0800 Gregory Szorc doc: escape backslash
Mon, 04 Feb 2019 14:16:52 -0800 Gregory Szorc testparseutil: escape backslash in docstring
Mon, 04 Feb 2019 14:14:25 -0800 Gregory Szorc tests: use raw strings in test-help.t
Mon, 04 Feb 2019 14:10:10 -0800 Gregory Szorc tests: escape backslash in makepatch.py inline file
Mon, 04 Feb 2019 14:05:26 -0800 Gregory Szorc tests: use raw strings in test-cbor.py
Mon, 04 Feb 2019 14:03:15 -0800 Gregory Szorc showstack: use raw docstring
Mon, 04 Feb 2019 14:00:57 -0800 Gregory Szorc tests: use raw string in test-check-code.t
Mon, 04 Feb 2019 09:47:13 -0800 Gregory Szorc run-tests: set attributes in sorted order
Mon, 04 Feb 2019 09:41:10 -0800 Gregory Szorc revetbenchmarks: use raw string for regular expression with escapes
Mon, 04 Feb 2019 09:38:33 -0800 Gregory Szorc check-code: use raw string
Mon, 04 Feb 2019 09:37:09 -0800 Gregory Szorc tests: use raw strings for regular expressions with escapes
Mon, 04 Feb 2019 09:35:55 -0800 Gregory Szorc drawdag: use raw strings for docstrings
Mon, 04 Feb 2019 09:34:11 -0800 Gregory Szorc check-config: use raw strings for regular expressions
Mon, 04 Feb 2019 09:32:30 -0800 Gregory Szorc run-tests: use raw strings for regular expressions
Mon, 04 Feb 2019 09:31:19 -0800 Gregory Szorc check-commit: use raw string for regular expression
Mon, 04 Feb 2019 09:13:05 -0800 Gregory Szorc configitems: use raw strings for hidden-{command,topic} items
Mon, 04 Feb 2019 09:03:10 -0800 Gregory Szorc convert: use raw string for regular expressions
Mon, 04 Feb 2019 09:01:49 -0800 Gregory Szorc graphmod: use raw string
Mon, 04 Feb 2019 09:00:52 -0800 Gregory Szorc crecord: use raw string for regular expression
Mon, 04 Feb 2019 08:59:11 -0800 Gregory Szorc patch: properly escape \ in string literals
Mon, 04 Feb 2019 09:07:00 -0800 Gregory Szorc global: make some docstrings raw strings
Mon, 04 Feb 2019 08:54:30 -0800 Gregory Szorc global: use raw strings for regular expressions with escapes
Mon, 04 Feb 2019 09:29:25 -0800 Gregory Szorc tests: add optional Python 2.7 deprecation output
Mon, 04 Feb 2019 17:06:22 -0500 Augie Fackler tests: fix test-match.py on Python3
Mon, 04 Feb 2019 20:35:21 +0300 Pulkit Goyal merge with stable
Mon, 04 Feb 2019 18:14:03 +0300 Pulkit Goyal match: teach diffmatcher.visitdir() to return 'all' if possible
Sun, 03 Feb 2019 10:01:43 +0100 Boris Feld py3: use integer division instead of `int(...)` call
Sun, 03 Feb 2019 17:15:11 +0530 Pulkit Goyal py3: add some b'' prefixes in test-notify.t
Sun, 03 Feb 2019 17:05:47 +0530 Pulkit Goyal py3: use pycompat.long in hgext/convert/monotone.py
Sun, 03 Feb 2019 16:59:46 +0530 Pulkit Goyal py3: add three new passing tests found by buildbot
Sun, 03 Feb 2019 16:38:47 +0530 Pulkit Goyal py3: do a fsdecode(), fsencode() dance in posix.py
Sun, 03 Feb 2019 01:02:24 +0530 Taapas Agrawal revert: add prompt before undeleting a file in -i (issue6008)
Sat, 02 Feb 2019 13:16:46 -0800 Gregory Szorc py3: add alternate output on Python 3
Sat, 02 Feb 2019 13:13:22 -0800 Gregory Szorc py3: add Python 3 output for test-flagprocessor.t
Sat, 02 Feb 2019 11:49:26 -0800 Gregory Szorc zeroconf: Python 3 porting of vendored library
Tue, 22 Jan 2019 14:22:25 +0800 Anton Shestakov relnotes: more improvements
Sat, 02 Feb 2019 15:26:51 +0900 Yuya Nishihara py3: don't use universal_newlines in svnsubrepo
Sat, 02 Feb 2019 15:21:35 +0900 Yuya Nishihara py3: remove unneeded fsencode() from gitsubrepo
Fri, 25 Jan 2019 14:41:53 -0800 Martin von Zweigbergk debugcommands: add a debugpathcopies command
Fri, 01 Feb 2019 20:21:04 -0500 Augie Fackler py3: record several more passes from the buildbot ratchet
Wed, 30 Jan 2019 17:05:09 -0800 Martin von Zweigbergk grep: respect ui.relative-paths
Wed, 30 Jan 2019 16:59:31 -0800 Martin von Zweigbergk grep: move writing of path outside of column loop
Tue, 29 Jan 2019 12:01:13 -0800 Martin von Zweigbergk resolve: respect ui.relative-paths
Wed, 30 Jan 2019 12:05:43 -0800 Martin von Zweigbergk merge: respect ui.relative-paths
Tue, 29 Jan 2019 18:46:11 -0500 Augie Fackler histedit: add templating support to histedit's rule file generation
Fri, 01 Feb 2019 17:03:51 -0800 Gregory Szorc py3: account for demand import difference between Python versions
Fri, 01 Feb 2019 13:20:13 -0800 Gregory Szorc tests: use unimported modules in test-demandimport.py
Fri, 01 Feb 2019 16:47:29 -0800 Gregory Szorc py3: conditionalize test-demandimport.py for Python 3