def no_annex(ds): ds = require_dataset( ds, check_installed=True, purpose='configuration') if isinstance(ds.repo, AnnexRepo): repo = ds.repo # TODO: if procedures can have options -- add --force handling/passing # # annex uninit unlocks files for which there is content (nice) but just proceeds # and leaves broken symlinks for files without content. For the current purpose # of this procedure we just prevent "uninit" of any annex with some files already # annexed. if any(repo.call_annex_items_(['whereis', '--all'])): raise RuntimeError("Annex has some annexed files, unsafe") # remove annex repo.call_annex(['uninit']) noannex_file = ds.pathobj / ".noannex" if not noannex_file.exists(): lgr.info("Creating and committing a .noannex file") noannex_file.touch() ds.save(noannex_file, message="Added .noannex to prevent accidental initialization of git-annex")
def _describe_system(): import platform as pl from datalad import get_encoding_info if hasattr(pl, 'dist'): dist = pl.dist() else: # Python 3.8 removed .dist but recommended "distro" is slow, so we # try it only if needed try: import distro dist = distro.linux_distribution(full_distribution_name=False) except ImportError: lgr.info( "Please install 'distro' package to obtain distribution information" ) dist = tuple() except Exception as exc: lgr.warning( "No distribution information will be provided since 'distro' " "fails to import/run: %s", exc_str(exc) ) dist = tuple() return { 'type': os.name, 'name': pl.system(), 'release': pl.release(), 'version': pl.version(), 'distribution': ' '.join([_t2s(dist), _t2s(pl.mac_ver()), _t2s(pl.win32_ver())]).rstrip(), 'max_path_length': get_max_path_length(getpwd()), 'encoding': get_encoding_info(), }
def _describe_system(): import platform as pl from datalad import get_encoding_info if hasattr(pl, 'dist'): dist = pl.dist() else: # Python 3.8 removed .dist but recommended "distro" is slow, so we # try it only if needed try: import distro dist = distro.linux_distribution(full_distribution_name=False) except ImportError: lgr.info( "Please install 'distro' package to obtain distribution information" ) dist = tuple() except Exception as exc: lgr.warning( "No distribution information will be provided since 'distro' " "fails to import/run: %s", exc_str(exc)) dist = tuple() return { 'type': os.name, 'name': pl.system(), 'release': pl.release(), 'version': pl.version(), 'distribution': ' '.join([_t2s(dist), _t2s(pl.mac_ver()), _t2s(pl.win32_ver())]).rstrip(), 'max_path_length': get_max_path_length(getpwd()), 'encoding': get_encoding_info(), }
for k, v in rec.items(): if v.get('description', '') in [remote, '[%s]' % remote]: return v.get('urls', []) return [] if __name__ == '__main__': annex = AnnexRepo('.', create=False, init=False) # enable datalad special remote urls_to_register = defaultdict(list) # key: urls try: annex.call_annex(["enableremote", "datalad"]) # go through each and see where urls aren't yet under web # seems might have also --in=datalad to restrict w = annex.whereis([], options=['--all'], output='full') lgr.info("Got %d entries", len(w)) for k, rec in tqdm(w.items()): datalad_urls = get_remote_urls(rec, 'datalad') web_urls = set(get_remote_urls(rec, 'web')) for url in datalad_urls: if url not in web_urls: if 'openneuro.s3' in url or 'openfmri.s3' in url: urls_to_register[k].append(url) else: lgr.warning("Found unexpected url %s" % url) finally: # disable datalad special remote annex.remove_remote("datalad") # need to disable it first lgr.info("Got %d entries which could get new urls", len(urls_to_register)) for k, urls in tqdm(urls_to_register.items()):
def get_remote_urls(rec, remote): for k, v in rec.items(): if v.get('description', '') in [remote, '[%s]' % remote]: return v.get('urls', []) return [] if __name__ == '__main__': annex = AnnexRepo('.', create=False, init=False) # enable datalad special remote urls_to_register = defaultdict(list) # key: urls try: annex._annex_custom_command([], ["git", "annex", "enableremote", "datalad"]) # go through each and see where urls aren't yet under web # seems might have also --in=datalad to restrict w = annex.whereis([], options=['--all'], output='full') lgr.info("Got %d entries", len(w)) for k, rec in tqdm(w.items()): datalad_urls = get_remote_urls(rec, 'datalad') web_urls = set(get_remote_urls(rec, 'web')) for url in datalad_urls: if url not in web_urls: if 'openneuro.s3' in url or 'openfmri.s3' in url: urls_to_register[k].append(url) else: lgr.warning("Found unexpected url %s" % url) finally: # disable datalad special remote annex.remove_remote("datalad") # need to disable it first lgr.info( "Got %d entries which could get new urls",