{"id":34028555,"url":"https://github.com/bradsacks99/pyvalve","last_synced_at":"2026-04-06T02:31:19.766Z","repository":{"id":55676759,"uuid":"521118235","full_name":"bradsacks99/pyvalve","owner":"bradsacks99","description":"Asyncio python clamav client library","archived":false,"fork":false,"pushed_at":"2024-12-13T22:53:35.000Z","size":50,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-13T23:25:04.047Z","etag":null,"topics":["asyncio","clamav","clamd","client","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bradsacks99.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.d/20220901_201509_bradsacks99.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-04T04:08:14.000Z","updated_at":"2024-12-13T22:53:39.000Z","dependencies_parsed_at":"2024-12-04T03:27:49.179Z","dependency_job_id":null,"html_url":"https://github.com/bradsacks99/pyvalve","commit_stats":{"total_commits":12,"total_committers":2,"mean_commits":6.0,"dds":0.25,"last_synced_commit":"dc2ddf28234cbf558ee96cf1dc3f2294444ba080"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/bradsacks99/pyvalve","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsacks99%2Fpyvalve","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsacks99%2Fpyvalve/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsacks99%2Fpyvalve/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsacks99%2Fpyvalve/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradsacks99","download_url":"https://codeload.github.com/bradsacks99/pyvalve/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradsacks99%2Fpyvalve/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31457495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asyncio","clamav","clamd","client","python"],"created_at":"2025-12-13T17:11:56.845Z","updated_at":"2026-04-06T02:31:19.760Z","avatar_url":"https://github.com/bradsacks99.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyvalve\nAsyncio python clamav client library\n\n\n## Usage Examples\n\nPing\n```\npvs = await PyvalveNetwork()\nresponse = await pvs.ping()\n```\nClamAv will respond with \"PONG\"\n\nScanning\n\n```\npvs = await PyvalveNetwork()\nresponse = await pvs.scan(path)\n```\n\nStream Scanning\n```\nfrom io import BytesIO\nfrom aiofile import AIOFile\n\nbuffer = BytesIO()\nasync with AIOFile('some/file', 'r') as file_pointer:\n    line = await file_pointer.read_bytes()\n    buffer.write(line)\n    buffer.seek(0)\nresponse = await pvs.instream(buffer)\n```\n\n## Documentation\n\n### _class_ Pyvalve()\nBases: `object`\n\nPyvalve base class\n\n#### set_persistant_connection(persist)\nSet persistent connection\n\n\n* **Parameters**\n\n    **bool** (*persist*) – persistent connection True/False\n\n\n\n* **Return type**\n\n    `None`\n\n\n\n#### set_stream_buffer(length)\nSet stream buffer\n\n\n* **Parameters**\n\n    **int** (*length*) – Desired stream buffer in bytes\n\n\n\n* **Return type**\n\n    `None`\n\n\n#### _async_ allmatchscan(path)\nSend allmatchscan command\n\n\n* **Parameters**\n\n    **str** (*path*) – Path to file/directory to be scanned\n\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n\n* **Raises**\n\n    **PyvalveScanningError** – If path is not found\n\n\n\n#### _async_ contscan(path)\nSend constscan command\n\n\n* **Parameters**\n\n    **str** (*path*) – Path to file/directory to be scanned\n\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n\n* **Raises**\n\n    **PyvalveScanningError** – If path is not found\n\n\n#### _async_ instream(buffer)\nSend a stream to clamav\n\n\n* **Parameters**\n\n    **buffer** (*BinaryIO*) – a buffer object\n\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n\n* **Raises**\n\n    \n    * **PyvalveConnectionError** – If connection is broken\n\n\n    * **PyvalveStreamMaxLength** – If stream size limit exceeded\n\n\n\n#### _async_ multiscan(path)\nSend multiscan command\n\n\n* **Parameters**\n\n    **str** (*path*) – Path to file/directory to be scanned\n\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n\n* **Raises**\n\n    **PyvalveScanningError** – If path is not found\n\n\n\n#### _async_ ping()\nSend ping command\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n\n#### _async_ reload()\nSend reload command\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n\n#### _async_ scan(path)\nSend scan command\n\n\n* **Parameters**\n\n    **str** (*path*) – Path to file/directory to be scanned\n\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n\n* **Raises**\n\n    **PyvalveScanningError** – If path is not found\n\n\n\n#### _async_ shutdown()\nSend shutdown command\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n#### _async_ stats()\nSend stats command\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n\n#### _async_ version()\nSend version command\n\n\n* **Returns**\n\n    Response from clamav\n\n\n\n* **Return type**\n\n    str\n\n\n### _class_ PyvalveNetwork(host='localhost', port=3310, timeout=None)\nBases: `Pyvalve`\n\nAsyncio Clamd network client\n\n\n#### _async_ \\__init__(host='localhost', port=3310, timeout=None)\nPyvalveNetwork Constructor\n\n\n* **Parameters**\n\n    \n    * **str** (*host*) – host address for clamav\n\n\n    * **int** (*timeout*) – listening port for clamav\n\n\n    * **int** – socket timemout\n\n\n### _class_ PyvalveSocket(socket='/tmp/clamd.socket', timeout=None)\nBases: `Pyvalve`\n\nAsyncio Clamd socket client\n\n\n#### _async_ \\__init__(socket='/tmp/clamd.socket', timeout=None)\nPyvalveSocket Constructor\n\n\n* **Parameters**\n\n    \n    * **str** (*socket*) – Path to socket file\n\n\n    * **int** (*timeout*) – socket timemout\n\n\n\n## Exceptions\n\n### _exception_ PyvalveError()\nBases: `Exception`\n\nPyvalve exception base class\n\n### _exception_ PyvalveConnectionError()\nBases: `PyvalveError`\n\nException communicating with clamd\n\n### _exception_ PyvalveResponseError()\nBases: `PyvalveError`\n\nException processing response\n\n### _exception_ PyvalveScanningError()\nBases: `PyvalveError`\n\nException scanning. Could be path not found.\n\n### _exception_ PyvalveStreamMaxLength()\nBases: `PyvalveResponseError`\n\nException using INSTREAM with a buffer\nlength \u003e StreamMaxLength in /etc/clamav/clamd.conf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradsacks99%2Fpyvalve","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradsacks99%2Fpyvalve","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradsacks99%2Fpyvalve/lists"}