Skip to main content

Analyses resources identifiers to extract valuable information

Project description

resid

Description

Resid is a python library for analysing resource identifiers for extracting valuable information. This can include guessing content type, encoding, wheather contents are available locally or if it resembles file path, url, etc.

In this library, source is defined as similar to uri but source can be anything including file object. 'source' is defined as anything that can be used to access/locate contents. That can include url, file path, file object and others depending on wheather they can be used to access data or get information about it.

Any object can be used as source but not all of them will be supported. This library helps in extracting information about source such as wheather source is supported or guessing its content type.

Only urls, file-paths, dir-paths, file-like-objects, path-like-objects are currenly supported.

Install

Enter this on your command-line application:

pip install resid

Usage

Importing resid

import resid

resid -> Resource Identifier

Check support of source

View supported source as a valid file path and resembled as file path that may not be valid but looks like file path.

>>> resid.is_supported("https://stackoverflow.com/")
True
>>> resid.is_supported("not_exists.txt")
False
>>> resid.is_resembled("not_exists.txt")
True
>>> resid.is_supported(io.BytesIO())
True
>>> resid.is_resembled(object)
False

Most functions will return None if source is not supported.

Check if source falls in category

>>> resid.is_url("https://example.com/")
True
>>> resid.is_web_url("https://example.com/")
True
>>> resid.is_file_path("https://example.com/")
False
>>> resid.is_file_path("sample.txt")
True
>>> resid.is_file_path(object)
False
>>> resid.is_file_like(io.BytesIO())
True
>>> resid.is_path_like(pathlib.Path("sample.txt"))
True

Guess content type

>>> resid.guess_content_type("sample.txt")
'text/plain'
>>> resid.guess_content_type("https://example.com/")
'text/html'
>>> resid.guess_content_type("https://example.com/files/sample.pdf")
'application/pdf'
>>> resid.guess_content_type(open("sample.txt"))
'text/plain'

Check if contents are hosted locally or remotely

>>> resid.locally_hosted("sample.txt")
True
>>> resid.locally_hosted("https://example.com/")
False
>>> resid.locally_hosted("http://127.0.0.1/")
True
>>> resid.guess_content_type(open("sample.txt"))
True
>>> resid.remotely_hosted("sample.txt")
False
>>> resid.remotely_hosted("https://example.com/")
True
>>> resid.remotely_hosted("file:///home/sample.txt")
False

Guess type of source

>>> resid.guess_type("sample.txt")
'file-path'
>>> resid.guess_type("contents/")
'dir-path'
>>> resid.guess_type("https://example.com/")
'web-url'
>>> resid.guess_type(io.BytesIO())
'file-like-object'
>>> resid.guess_type(pathlib.Path("sample.txt"))
'file-path-like-object'
>>> resid.guess_type("file:///home/sample.txt")
'local-file-url'

Convert source to string

>>> resid.to_string(open("setup.py"))
'setup.py'
>>> resid.to_string(pathlib.Path("sample.txt"))
'sample.txt'
>>> resid.to_string("https://example.com/")
'https://example.com/'

Alternate Usage

File path example

>>> file_res = resid.find_resource("setup.py")
>>> file_res.supported
True
>>> file_res.content_type
'text/plain'
>>> file_res.path
'setup.py'
>>> file_res.size
41
>>> file_res.mod_time
1661489762.1989822

Directory example

>>> dir_res = resid.find_resource("https://example.com/")
>>> list(dir_res.files)
['.venv\\pyvenv.cfg']
>>> list(dir_res.dirs)
['.venv\\Include', '.venv\\Lib', '.venv\\Scripts']
>>> list(dir_res.files_recursive)
...
>>> list(dir_res.dirs_recursive)
...

URL example

>>> url_res = resid.find_resource("https://example.com/")
>>> url_res.content_type
'text/html'
>>> url_res.scheme
'https'
>>> url_res.hostname
'example.com'
>>> list(dir_res.files)
['.venv\\pyvenv.cfg']
>>> list(dir_res.dirs)
['.venv\\Include', '.venv\\Lib', '.venv\\Scripts']
>>> list(dir_res.files_recursive)
...
>>> list(dir_res.dirs_recursive)
...

About

Resid was developed based on navaly library to be used with navaly. It relect a portion of navaly which is split to its own project for reuse. Resid can still be used with other python projects as seen in the examples above.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resid-0.0.3.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

resid-0.0.3-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file resid-0.0.3.tar.gz.

File metadata

  • Download URL: resid-0.0.3.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for resid-0.0.3.tar.gz
Algorithm Hash digest
SHA256 5fdcfd8241e21ddea1fc5f4360feccd795f5ba1226b146d06a7f427661ea15ec
MD5 c75549ba6979e67ddfc60096ed4cc78f
BLAKE2b-256 4f9b7dc5454ea5531de369b2b13aa6051bab951b06669d210e065b22a55d2a91

See more details on using hashes here.

File details

Details for the file resid-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: resid-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for resid-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6be00c7156b1e3e05ffe36a0c0baac35e4f38d0ef461bb16cd0ce77f088bd9c0
MD5 72c1d927c90157e82f95d579f42c4d6f
BLAKE2b-256 c2826b28236eaabb50cf948db850ed074eabe4d60008747ff743a8a0d5af1c7a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page