{
  "_id": "6ad9ae41021a938ed758e442",
  "Package": "raddr",
  "Type": "Package",
  "Title": "Show What an IP Address Literal Means Under Every Standard",
  "Version": "0.1.2",
  "Language": "en-US",
  "Authors@R": "c(\nperson(\"Bart\", \"Turczynski\", email = \"bartek@turczynski.pl\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-8788-7980\")),\nperson(\"web-platform-tests contributors\", role = \"cph\",\ncomment = \"bundled URL test corpus, BSD-3-Clause; see inst/COPYRIGHTS\"))",
  "Description": "Standards and implementations disagree about what an IP\naddress literal means: the string \"0177.0.0.1\" is rejected by\nthe dotted-quad grammar, read as 127.0.0.1 by browsers, and\nread as 177.0.0.1 by some 'inet_pton' implementations. Most\nlibraries pick one reading and discard the rest. This package\nreports them all, alongside the reason codes that explain each\none, and classifies parsed values against the IANA\nspecial-purpose address registries. It is pure R, performs no\nnetwork access, and returns facts rather than allow or deny\nverdicts.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "URL": "https://gitlab.com/bart-turczynski/raddr",
  "BugReports": "https://gitlab.com/bart-turczynski/raddr/-/issues",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Config/roxygen2/version": "8.0.0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-22 06:29:54 UTC",
    "User": "root"
  },
  "Author": "Bart Turczynski [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-8788-7980>), web-platform-tests\ncontributors [cph] (bundled URL test corpus, BSD-3-Clause; see\ninst/COPYRIGHTS)",
  "Maintainer": "Bart Turczynski <bartek@turczynski.pl>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-09-21 23:23:57 UTC",
  "RemoteUrl": "https://github.com/cran/raddr",
  "RemoteRef": "HEAD",
  "RemoteSha": "9dce714868e760d047da8172a1e5aa41017ae3e9",
  "_user": "cran",
  "_type": "src",
  "_file": "raddr_0.1.2.tar.gz",
  "_fileid": "https://r2.ropensci.org/93268846a60b0aae6b3db32d5bc0c73d6b69d074c26c2fb0f9a7d78dd5c1f9ca",
  "_filesize": 572980,
  "_sha256": "93268846a60b0aae6b3db32d5bc0c73d6b69d074c26c2fb0f9a7d78dd5c1f9ca",
  "_expires": "2027-01-30T06:33:36.000Z",
  "_created": "2026-10-22T06:29:54.000Z",
  "_published": "2026-10-22T06:33:37.831Z",
  "_upstream": "https://github.com/cran/raddr",
  "_status": "success",
  "_maintainer": {
    "name": "Bart Turczynski",
    "email": "bartek@turczynski.pl",
    "login": "bart-turczynski",
    "linkedin": "in/bart-turczynski",
    "orcid": "0000-0002-8788-7980",
    "twitter": "@bart_turczynski",
    "description": "",
    "uuid": 142225707
  },
  "_jobs": [
    {
      "job": 119676443979,
      "time": 175,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12406706998"
    },
    {
      "job": 119676444032,
      "time": 151,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12406865200"
    },
    {
      "job": 119675105229,
      "time": 239,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12406456960"
    },
    {
      "job": 119676443994,
      "time": 119,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12406194723"
    },
    {
      "job": 119676443973,
      "time": 94,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12406716709"
    },
    {
      "job": 119676444082,
      "time": 137,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12405869795"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/39733885705",
  "_commit": {
    "id": "9dce714868e760d047da8172a1e5aa41017ae3e9",
    "author": "Bart Turczynski <bartek@turczynski.pl>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.1.2\n",
    "time": 1790033037
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.0.0",
      "role": "Depends"
    },
    {
      "package": "rlang",
      "version": ">= 1.1.7",
      "role": "Imports"
    },
    {
      "package": "vctrs",
      "version": ">= 0.7.0",
      "role": "Imports"
    },
    {
      "package": "bignum",
      "role": "Suggests"
    },
    {
      "package": "bit64",
      "role": "Suggests"
    },
    {
      "package": "digest",
      "role": "Suggests"
    },
    {
      "package": "hedgehog",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 6,
  "_updates": [
    {
      "week": "2026-39",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.1.2",
      "date": "2026-09-21"
    }
  ],
  "_topics": [
    "ip-address",
    "ipv4",
    "ipv6",
    "ip-parser",
    "inet-pton",
    "inet-aton",
    "whatwg-url",
    "cidr",
    "iana",
    "special-purpose-registry",
    "nat64",
    "teredo",
    "6to4"
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "bart-turczynski",
      "count": 1,
      "uuid": 142225707
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 634,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 999,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/raddr"
  },
  "_devurl": "https://gitlab.com/bart-turczynski/raddr",
  "_searchresults": 9,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/raddr.html",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://gitlab.com/bart-turczynski/raddr",
  "_realowner": "bart-turczynski",
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.1.2",
      "date": "2026-09-22"
    }
  ],
  "_exports": [
    "addr_address_space",
    "addr_address_space_version",
    "addr_aton",
    "addr_category",
    "addr_category_map",
    "addr_category_version",
    "addr_classify",
    "addr_codes",
    "addr_codes_registry",
    "addr_curl",
    "addr_embedded_kind",
    "addr_embeddings",
    "addr_expand",
    "addr_family",
    "addr_format",
    "addr_getaddrinfo",
    "addr_global_reachability",
    "addr_input",
    "addr_is_divergent",
    "addr_nat64_embeddings",
    "addr_outcome",
    "addr_parse",
    "addr_pton",
    "addr_reading",
    "addr_registry",
    "addr_registry_outdated",
    "addr_registry_snapshot",
    "addr_registry_version",
    "addr_reverse_pointer",
    "addr_status",
    "addr_strict",
    "addr_to_binary",
    "addr_to_bytes",
    "addr_to_hex",
    "addr_to_integer",
    "addr_transition_registry",
    "addr_transition_version",
    "addr_whatwg",
    "addr_within",
    "addr_within_any",
    "addr_zone",
    "binary_to_addr",
    "bytes_to_addr",
    "hex_to_addr",
    "integer_to_addr",
    "is_raddr_address",
    "is_raddr_class",
    "is_raddr_embedding",
    "is_raddr_parse",
    "raddr_address"
  ],
  "_help": [
    {
      "page": "addr_address_space",
      "title": "The bundled IANA address-space registries",
      "topics": [
        "addr_address_space"
      ]
    },
    {
      "page": "addr_address_space_version",
      "title": "Provenance of the bundled address-space snapshot",
      "topics": [
        "addr_address_space_version"
      ]
    },
    {
      "page": "addr_category",
      "title": "Read single fields of a classification",
      "topics": [
        "addr_category",
        "addr_embedded_kind",
        "addr_embeddings"
      ]
    },
    {
      "page": "addr_category_map",
      "title": "raddr's block to category map",
      "topics": [
        "addr_category_map"
      ]
    },
    {
      "page": "addr_category_version",
      "title": "Provenance of raddr's category map",
      "topics": [
        "addr_category_version"
      ]
    },
    {
      "page": "addr_classify",
      "title": "Classify addresses against the IANA registries",
      "topics": [
        "addr_classify"
      ]
    },
    {
      "page": "addr_codes_registry",
      "title": "The reason-code registry",
      "topics": [
        "addr_codes_registry"
      ]
    },
    {
      "page": "addr_family",
      "title": "Read the family of an address",
      "topics": [
        "addr_family"
      ]
    },
    {
      "page": "addr_format",
      "title": "Render addresses as text",
      "topics": [
        "addr_expand",
        "addr_format"
      ]
    },
    {
      "page": "addr_global_reachability",
      "title": "Whether an address is in globally reachable space",
      "topics": [
        "addr_global_reachability"
      ]
    },
    {
      "page": "addr_nat64_embeddings",
      "title": "Read the IPv4 address a caller-supplied NAT64 prefix embeds",
      "topics": [
        "addr_nat64_embeddings"
      ]
    },
    {
      "page": "addr_parse",
      "title": "Read an address literal under every dialect at once",
      "topics": [
        "addr_parse"
      ]
    },
    {
      "page": "addr_registry",
      "title": "The bundled IANA special-purpose address registries",
      "topics": [
        "addr_registry"
      ]
    },
    {
      "page": "addr_registry_snapshot",
      "title": "Content-addressed identity of the bundled registry snapshot",
      "topics": [
        "addr_registry_snapshot"
      ]
    },
    {
      "page": "addr_registry_version",
      "title": "Provenance of the bundled special-purpose registry snapshot",
      "topics": [
        "addr_registry_outdated",
        "addr_registry_version"
      ]
    },
    {
      "page": "addr_reverse_pointer",
      "title": "Reverse DNS pointer name",
      "topics": [
        "addr_reverse_pointer"
      ]
    },
    {
      "page": "addr_to_bytes",
      "title": "Encode and decode addresses as bytes, hex or binary",
      "topics": [
        "addr_to_binary",
        "addr_to_bytes",
        "addr_to_hex",
        "binary_to_addr",
        "bytes_to_addr",
        "hex_to_addr"
      ]
    },
    {
      "page": "addr_to_integer",
      "title": "Encode and decode addresses as unsigned integers",
      "topics": [
        "addr_to_integer",
        "integer_to_addr"
      ]
    },
    {
      "page": "addr_transition_registry",
      "title": "The transition-prefix overlay",
      "topics": [
        "addr_transition_registry",
        "addr_transition_version"
      ]
    },
    {
      "page": "addr_within_any",
      "title": "Is an address inside a block?",
      "topics": [
        "addr_within",
        "addr_within_any"
      ]
    },
    {
      "page": "addr_zone",
      "title": "Read the zone ID of an address",
      "topics": [
        "addr_zone"
      ]
    },
    {
      "page": "dialects",
      "title": "Read an address literal under one dialect",
      "topics": [
        "addr_aton",
        "addr_curl",
        "addr_getaddrinfo",
        "addr_pton",
        "addr_strict",
        "addr_whatwg",
        "dialects"
      ]
    },
    {
      "page": "is_raddr_address",
      "title": "Test whether an object is a 'raddr_address'",
      "topics": [
        "is_raddr_address"
      ]
    },
    {
      "page": "is_raddr_class",
      "title": "Test whether an object is a 'raddr_class'",
      "topics": [
        "is_raddr_class"
      ]
    },
    {
      "page": "is_raddr_embedding",
      "title": "Test whether an object is a 'raddr_embedding'",
      "topics": [
        "is_raddr_embedding"
      ]
    },
    {
      "page": "is_raddr_parse",
      "title": "Test whether an object is a 'raddr_parse'",
      "topics": [
        "is_raddr_parse"
      ]
    },
    {
      "page": "parse-accessors",
      "title": "Pull one dialect's reading, outcome or reason codes back out",
      "topics": [
        "addr_codes",
        "addr_input",
        "addr_is_divergent",
        "addr_outcome",
        "addr_reading",
        "addr_status",
        "parse-accessors"
      ]
    },
    {
      "page": "raddr_address",
      "title": "An IP address vector",
      "topics": [
        "raddr_address"
      ]
    }
  ],
  "_readme": "https://github.com/cran/raddr/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "glue",
    "lifecycle",
    "rlang",
    "vctrs"
  ],
  "_vignettes": [
    {
      "source": "edge-cases.Rmd",
      "filename": "edge-cases.html",
      "title": "Edge cases",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Reading a literal",
        "The leading zero",
        "Short forms and the whole-host number",
        "The trailing dot, and the WHATWG asymmetry",
        "IPv6: where the disagreement moves",
        "The zone travels beside the bits",
        "What raddr models, and what it does not",
        "Classification",
        "Longest prefix match, and why a parent block is not the answer",
        "0.0.0.0 is two rows, not one",
        "\"Not globally reachable\" is not \"not forwardable\"",
        "The N/A rows, and two different reasons for one NA",
        "Reason codes at the classify layer",
        "RFC 6890 is a stale snapshot",
        "Provenance",
        "What none of this decides"
      ],
      "created": "2026-09-21 23:23:57",
      "modified": "2026-09-21 23:23:57",
      "commits": 1
    },
    {
      "source": "introduction.Rmd",
      "filename": "introduction.html",
      "title": "Introduction to raddr",
      "engine": "knitr::rmarkdown",
      "headings": [
        "One string, three hosts",
        "Paper and reality",
        "addr_parse() takes no mode argument",
        "Rejection is not missingness",
        "Why addr_curl() exists alongside the standards",
        "The reality dialects model a measured platform",
        "Classification takes addresses, not strings",
        "Facts, not verdicts",
        "Where to go next"
      ],
      "created": "2026-09-21 23:23:57",
      "modified": "2026-09-21 23:23:57",
      "commits": 1
    },
    {
      "source": "reason-codes.Rmd",
      "filename": "reason-codes.html",
      "title": "Reason codes",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Two layers, and they are not the same kind of statement",
        "A helper for the examples below",
        "The parse layer",
        "not_a_number",
        "leading_zero",
        "empty_part",
        "empty_hex",
        "out_of_range",
        "wrong_part_count",
        "trailing_dot",
        "zone_not_permitted",
        "multiple_zones",
        "bad_hextet",
        "empty_group",
        "bad_elision",
        "wrong_group_count",
        "bad_embedded_ipv4",
        "whitespace",
        "The classify layer",
        "nat64_wk_embedded_not_global — must",
        "sixtofour_embedded_not_global — must",
        "teredo_client_not_global — must",
        "link_local_outside_fe80_64 — must",
        "link_local_reserved_range — must",
        "ipv4_compatible_low_tail — may",
        "nat64_local_layout_unspecified — unspecified",
        "ula_l_bit_unset — unspecified",
        "What a code does not prove"
      ],
      "created": "2026-09-21 23:23:57",
      "modified": "2026-09-21 23:23:57",
      "commits": 1
    }
  ],
  "_score": 4.431363764158987,
  "_indexed": false,
  "_nocasepkg": "raddr",
  "_universes": [
    "cran"
  ],
  "_indexurl": "https://bart-turczynski.r-universe.dev/raddr",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.2",
      "date": "2026-10-22T06:32:35.000Z",
      "distro": "resolute",
      "commit": "9dce714868e760d047da8172a1e5aa41017ae3e9",
      "fileid": "https://r2.ropensci.org/b46b368505490ba95852a2c74d933f92ad6a11612abf4a73a17b30f1a502fd0b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39733885705"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.1.2",
      "date": "2026-10-22T06:32:05.000Z",
      "distro": "resolute",
      "commit": "9dce714868e760d047da8172a1e5aa41017ae3e9",
      "fileid": "https://r2.ropensci.org/bfbf2dab197110b0b1935fcb84d295b90f99c71eb24f5243843e01bde784bd43",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39733885705"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.2",
      "date": "2026-10-22T06:32:15.000Z",
      "commit": "9dce714868e760d047da8172a1e5aa41017ae3e9",
      "fileid": "https://r2.ropensci.org/be30d4df39c4845b29e5b1681741380403c2f863c238d4e8d032e133c900e2ef",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39733885705"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.2",
      "date": "2026-10-22T06:31:12.000Z",
      "commit": "9dce714868e760d047da8172a1e5aa41017ae3e9",
      "fileid": "https://r2.ropensci.org/c9aba26ec43dc489f8ba177f25a2ff47ad45ff326a10ddbb46eec03b866f3de3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39733885705"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.1.2",
      "date": "2026-10-22T06:31:26.000Z",
      "commit": "9dce714868e760d047da8172a1e5aa41017ae3e9",
      "fileid": "https://r2.ropensci.org/73ba34fd313e3e9235baf5225125aa33d8188deb989c16e9af0588623d93774c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/39733885705"
    }
  ]
}