Skip to main content

os-netloc-rule

Build Status codecov PyPI - Python Version PyPI

A library for matching netloc.

Netloc is a concept to describe the location of a URL, it can be treated as 3-tuple (host, port, scheme)

Netloc match is a very common and useful operation on processing URL. For example, netloc blacklist is a series rules of netloc with ALLOWED or DISALLOWED:

abc.example.com|80|http ALLOWED
.example.com|| DISALLOWED

You can skip processing http://www.example.com/001.html becase it match .example.com|| DISALLOWED.

Install

pip install os-netloc-rule

APIs

  • load netloc and rule

    from os_netloc_rule import Matcher
    
    netloc_rules = [
        ('www.example.com||', 1),
        ('abc.example.com||', 2),
        ('abc.example.com|8080|', 3),
    ]
    
    matcher = Matcher()
    for netloc_string, rule in rules:
        matcher.load_from_string(netloc_string, rule)
    
  • match netloc

    matcher.match('www.example.com')
    matcher.match('abc.example.com', '8080', 'http')
    
  • if there are same netloc with different rule, the latter covers the former by default. But you can custom your own cmp function when loading rules

    def cmp(former, latter):
        return -1 if former > latter else 1
        
    matcher.load(host, port, scheme, rule, cmp=cmp)
    
  • iter netloc

    for netloc, rule in matcher.iter():
        pass
    

Unit Tests

tox

License

MIT licensed.

Metadata

Release files for os-netloc-rule 0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for os-netloc-rule 0.3
File Size Uploaded
os-netloc-rule-0.3.tar.gz 5.9 kB Details

Release files / os-netloc-rule-0.3.tar.gz

Download URL os-netloc-rule-0.3.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a076f12f5d1a2f63e0c55d86c45358e5d3e23d6f62e58a03e35636b9bbfd88f9
BLAKE2b-256 checksum
How to use checksums
2297a160cd64aeaf0882e37c0f0190eacd794ed4ac817234b5541e9a92a6c663
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.1.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/2.7.15

Release history Release notifications | RSS feed

This release

0.3 This release

1 release file

0.2

1 release file

0.1

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page