whl2conda.api.stdrename
Support for standard pypi to conda renames drawn from conda-forge.
There are files generated automatically by conda-forge bots that include information about pypi/conda package names. These are available from:
https://github.com/regro/cf-graph-countyfair/blob/master/mappings/pypi
This package provides utility functions for downlaading mappings from that site and extracting a standard pypi to conda name mapping dictionary.
NOTE: this module should not be considered stable! The API may change incompatibly in a future release.
Attributes
DEFAULT_MIN_EXPIRATION
module-attribute
DEFAULT_MIN_EXPIRATION = 300
Default minimum expiration in seconds for cached renames
NAME_MAPPINGS_DOWNLOAD_URL
module-attribute
NAME_MAPPINGS_DOWNLOAD_URL = (
f"{RAW_MAPPINGS_URL}/{NAME_MAPPINGS_FILENAME}"
)
URL from which automatically generated pypi to conda name mappings are downloaded.
Classes
DownloadedMappings
Bases: NamedTuple
Holds downloaded mapping table from github with HTTP headers.
Source code in src/whl2conda/api/stdrename.py
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
|
Attributes
date
property
date: Optional[datetime]
Date from header
datestr
property
datestr: str
Date string from header
etag
property
etag: str
ETag string from header
expires
property
expires: Optional[datetime]
Expires date string frome header
NameMapping
Bases: TypedDict
Expected format of github name_mapping.json table
Source code in src/whl2conda/api/stdrename.py
147 148 149 150 151 152 |
|
NotModified
Bases: HTTPError
Indicates content was not modified
Source code in src/whl2conda/api/stdrename.py
287 288 |
|
Functions
download_mappings
download_mappings(
url: str = NAME_MAPPINGS_DOWNLOAD_URL,
*,
etag: str = "",
timeout: float = 20.0
) -> DownloadedMappings
Download pypi to conda name mappings from github
PARAMETER | DESCRIPTION |
---|---|
url |
download url of mappings file on github
TYPE:
|
etag |
ETag from previous download
TYPE:
|
timeout |
max seconds to wait for connection
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
DownloadedMappings
|
Mapping table and HTTP headers. |
RAISES | DESCRIPTION |
---|---|
NotModified
|
if etag was specified and content has not changed |
HttpError
|
other HTTP errors (e.g. 404 etc) |
URLError
|
connection errors |
Source code in src/whl2conda/api/stdrename.py
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 |
|
load_std_renames
load_std_renames(*, update: bool = False) -> dict[str, str]
Load standard pypi to conda package rename table.
A copy of this table is kept in a local a cache file (see user_stdrenames_path) The table will be read from that file, it it exists, otherwise the table included in this package will be copied to the user cache file.
PARAMETER | DESCRIPTION |
---|---|
update |
if true, this will update the table from online list generated from conda-forge and saves it as the new cached copy.
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
dict[str, str]
|
Dictionary of pypi to conda package name mappings. The |
dict[str, str]
|
returned dictionary will also contain the entries "$etag", |
dict[str, str]
|
"$date" and "$source" taken from the downloaded web file |
dict[str, str]
|
from which it was computed. |
Source code in src/whl2conda/api/stdrename.py
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
|
parse_datetime
parse_datetime(s: str) -> Optional[datetime.datetime]
Parse datetime string from HTTP header
Returns None if string is empty or time is malformed.
Source code in src/whl2conda/api/stdrename.py
77 78 79 80 81 82 83 84 85 |
|
process_name_mapping_dict
process_name_mapping_dict(
mappings: DownloadedMappings,
) -> dict[str, str]
Convert name mapping table from github to simple rename table.
This only returns mappings where the name is different.
PARAMETER | DESCRIPTION |
---|---|
mappings |
downlaoded mappings
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
dict[str, str]
|
dictionary mapping pypi to conda package names |
Source code in src/whl2conda/api/stdrename.py
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
|
update_renames_file
update_renames_file(
renames_file: Union[Path, str],
*,
url: str = NAME_MAPPINGS_DOWNLOAD_URL,
min_expiration: int = DEFAULT_MIN_EXPIRATION,
dry_run: bool = False
) -> bool
Update standard renames file from github if changed
This will only download new data if the existing data has passed its expiration.
PARAMETER | DESCRIPTION |
---|---|
renames_file |
path to renames file, which does not have to exist initially |
url |
url of name mapping file to download. This file is expected to contain a JSON array of dictionary containing "pypi_name" and "conda_name" entries.
TYPE:
|
min_expiration |
minimum seconds before existing data expires. Default is 5 minutes.
TYPE:
|
dry_run |
does not update the file, but still does download and returns True if file would change
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
bool
|
True if file was updated. False if file has not expired yet |
bool
|
or upstream data has not changed. |
Source code in src/whl2conda/api/stdrename.py
226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 |
|
user_stdrenames_path
user_stdrenames_path() -> Path
Path to user's cached copy of standard pypi to conda renames file
The location of this file depends on the operating system:
- Linux: ~/.cache/whl2conda/stdrename.json
- MacOS: ~/Library/Caches/whl2conda/stdrename.json
- Windows: ~\AppData\Local\whl2conda\Cache\stdrename.json
Source code in src/whl2conda/api/stdrename.py
88 89 90 91 92 93 94 95 96 97 |
|