(silent: bool = False)
| 74 | |
| 75 | |
| 76 | def get_model_pkgs(silent: bool = False) -> Tuple[dict, dict]: |
| 77 | msg = Printer(no_print=silent, pretty=not silent) |
| 78 | with msg.loading("Loading compatibility table..."): |
| 79 | r = requests.get(about.__compatibility__) |
| 80 | if r.status_code != 200: |
| 81 | msg.fail( |
| 82 | f"Server error ({r.status_code})", |
| 83 | "Couldn't fetch compatibility table.", |
| 84 | exits=1, |
| 85 | ) |
| 86 | msg.good("Loaded compatibility table") |
| 87 | compat = r.json()["spacy"] |
| 88 | all_models = set() |
| 89 | with warnings.catch_warnings(): |
| 90 | warnings.filterwarnings("ignore", message="\\[W09[45]") |
| 91 | installed_models = get_installed_models() |
| 92 | for spacy_v, models in dict(compat).items(): |
| 93 | all_models.update(models.keys()) |
| 94 | for model, model_vs in models.items(): |
| 95 | compat[spacy_v][model] = [reformat_version(v) for v in model_vs] |
| 96 | pkgs = {} |
| 97 | for pkg_name in installed_models: |
| 98 | package = pkg_name.replace("-", "_") |
| 99 | version = get_package_version(pkg_name) |
| 100 | if package in compat: |
| 101 | is_compat = version in compat[package] |
| 102 | spacy_version = about.__version__ |
| 103 | else: |
| 104 | model_path = get_package_path(package) |
| 105 | with warnings.catch_warnings(): |
| 106 | warnings.filterwarnings("ignore", message="\\[W09[45]") |
| 107 | model_meta = get_model_meta(model_path) |
| 108 | spacy_version = model_meta.get("spacy_version", "n/a") |
| 109 | is_compat = is_compatible_version(about.__version__, spacy_version) # type: ignore[assignment] |
| 110 | pkgs[pkg_name] = { |
| 111 | "name": package, |
| 112 | "version": version, |
| 113 | "spacy": spacy_version, |
| 114 | "compat": is_compat, |
| 115 | } |
| 116 | return pkgs, compat |
| 117 | |
| 118 | |
| 119 | def reformat_version(version: str) -> str: |
searching dependent graphs…