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.2.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: resid-0.0.2.tar.gz
  • Upload date:
  • Size: 14.7 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.2.tar.gz
Algorithm Hash digest
SHA256 be8a02bbbb8afe1d202c05c5e06ee09dfad1282eb8ff947f2ea2e44557390ce2
MD5 869229ee465c073fdf8d567d70311dfd
BLAKE2b-256 70d6bfe24c682d048507c0bdafe9537ae568136f71b0fb7105076a3b09330d72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: resid-0.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f3f283b08b9aca3ff45aea04215278175991c0f5b006c4ee749762b24f92968d
MD5 fd53aca1dfd28feb7c2792823f5d2fe6
BLAKE2b-256 c1b799d97b146c2bca6ff19461fe95f3f5d8f3bbb8f3919c4a47ea107f195e8b

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