snipepy 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- snipepy-0.1.0/.github/workflows/ci.yaml +86 -0
- snipepy-0.1.0/.github/workflows/pypi-publish.yml +82 -0
- snipepy-0.1.0/.gitignore +118 -0
- snipepy-0.1.0/AGENTS.md +802 -0
- snipepy-0.1.0/ARCHITECTURE.md +354 -0
- snipepy-0.1.0/CHANGELOG.md +73 -0
- snipepy-0.1.0/CONTRIBUTING.md +1351 -0
- snipepy-0.1.0/LICENSE +73 -0
- snipepy-0.1.0/LLMs.md +320 -0
- snipepy-0.1.0/PKG-INFO +138 -0
- snipepy-0.1.0/README.md +91 -0
- snipepy-0.1.0/SECURITY.md +55 -0
- snipepy-0.1.0/docs/README.md +56 -0
- snipepy-0.1.0/docs/adr/0001-http-429-retry-with-retry-after.md +120 -0
- snipepy-0.1.0/docs/adr/0002-setuptools-scm-version-management.md +98 -0
- snipepy-0.1.0/docs/adr/README.md +20 -0
- snipepy-0.1.0/docs/examples/US01-find-hardware-by-asset-tag.py +46 -0
- snipepy-0.1.0/docs/examples/US02-get-record-by-id.py +61 -0
- snipepy-0.1.0/docs/examples/US03-list-assets-assigned-to-user.py +58 -0
- snipepy-0.1.0/docs/examples/US04-list-hardware-by-status.py +42 -0
- snipepy-0.1.0/docs/examples/US05-list-hardware-by-location.py +54 -0
- snipepy-0.1.0/docs/examples/US06-list-hardware-by-category.py +51 -0
- snipepy-0.1.0/docs/examples/US07-process-large-list-with-pagination.py +51 -0
- snipepy-0.1.0/docs/examples/US08-combine-multiple-filters.py +58 -0
- snipepy-0.1.0/docs/examples/US09-create-new-hardware.py +60 -0
- snipepy-0.1.0/docs/examples/US10-assign-custom-field-value.py +63 -0
- snipepy-0.1.0/docs/examples/US11-create-prerequisites-for-hardware.py +104 -0
- snipepy-0.1.0/docs/examples/US12-bulk-import-assets-from-csv.py +116 -0
- snipepy-0.1.0/docs/examples/US13-update-single-field.py +43 -0
- snipepy-0.1.0/docs/examples/US14-bulk-status-update.py +67 -0
- snipepy-0.1.0/docs/examples/US15-full-record-replacement.py +59 -0
- snipepy-0.1.0/docs/examples/US16-assign-hardware-to-user.py +59 -0
- snipepy-0.1.0/docs/examples/US17-return-hardware.py +61 -0
- snipepy-0.1.0/docs/examples/US18-find-and-assign-deployable-hardware.py +64 -0
- snipepy-0.1.0/docs/examples/US19-assign-and-release-license-seat.py +65 -0
- snipepy-0.1.0/docs/examples/US20-record-deletion-soft-delete.py +46 -0
- snipepy-0.1.0/docs/examples/US21-restore-soft-deleted-record.py +57 -0
- snipepy-0.1.0/docs/examples/US22-find-expiring-licenses.py +65 -0
- snipepy-0.1.0/docs/examples/US23-find-assets-with-overdue-audits.py +49 -0
- snipepy-0.1.0/docs/examples/US24-fetch-list-sources-for-dropdowns.py +49 -0
- snipepy-0.1.0/docs/examples/US25-query-activity-log.py +67 -0
- snipepy-0.1.0/docs/examples/US26-assign-and-release-accessory.py +54 -0
- snipepy-0.1.0/docs/examples/US27-component-checkout-and-checkin.py +57 -0
- snipepy-0.1.0/docs/examples/US28-consumable-checkout.py +49 -0
- snipepy-0.1.0/docs/examples/US29-create-new-user.py +61 -0
- snipepy-0.1.0/docs/examples/US30-update-user-information.py +53 -0
- snipepy-0.1.0/docs/examples/US31-department-based-inventory-report.py +63 -0
- snipepy-0.1.0/docs/examples/US32-upload-file-to-asset.py +55 -0
- snipepy-0.1.0/docs/examples/US33-download-and-delete-asset-files.py +49 -0
- snipepy-0.1.0/docs/examples/US34-create-maintenance-record.py +51 -0
- snipepy-0.1.0/docs/examples/US35-asset-maintenance-history.py +67 -0
- snipepy-0.1.0/docs/examples/US36-hardware-refresh.py +81 -0
- snipepy-0.1.0/docs/examples/US37-staff-transfer.py +63 -0
- snipepy-0.1.0/docs/examples/US38-prepare-asset-inventory-form.py +80 -0
- snipepy-0.1.0/docs/examples/US39-handle-auth-errors.py +62 -0
- snipepy-0.1.0/docs/examples/US40-connection-error-handling-and-retry.py +62 -0
- snipepy-0.1.0/docs/examples/US41-partial-error-handling-in-bulk-ops.py +79 -0
- snipepy-0.1.0/docs/examples/US42-missing-data-detection.py +66 -0
- snipepy-0.1.0/docs/examples/US43-detect-duplicate-serial-numbers.py +58 -0
- snipepy-0.1.0/docs/examples/US44-detect-orphaned-deployments.py +53 -0
- snipepy-0.1.0/docs/examples/US45-inventory-reconciliation.py +72 -0
- snipepy-0.1.0/docs/examples/US46-inventory-report-by-manufacturer.py +52 -0
- snipepy-0.1.0/docs/examples/US47-asset-age-distribution.py +83 -0
- snipepy-0.1.0/docs/examples/US48-track-expiring-warranties.py +68 -0
- snipepy-0.1.0/docs/examples/US49-free-text-search.py +44 -0
- snipepy-0.1.0/docs/examples/US50-search-by-model-number.py +45 -0
- snipepy-0.1.0/docs/examples/US51-search-by-custom-field-value.py +54 -0
- snipepy-0.1.0/docs/examples/US52-search-by-order-number-and-supplier.py +48 -0
- snipepy-0.1.0/docs/examples/US53-multi-source-search.py +66 -0
- snipepy-0.1.0/docs/examples/US54-user-search.py +54 -0
- snipepy-0.1.0/docs/examples/US55-date-range-search.py +63 -0
- snipepy-0.1.0/docs/examples/US56-supplier-records-and-assets.py +57 -0
- snipepy-0.1.0/docs/examples/US57-fix-mislocated-devices.py +66 -0
- snipepy-0.1.0/docs/examples/US58-multi-dimensional-query.py +67 -0
- snipepy-0.1.0/docs/examples/US59-inventory-gap-analysis.py +64 -0
- snipepy-0.1.0/docs/examples/US61-depreciation-report.py +64 -0
- snipepy-0.1.0/docs/examples/US64-cleanup-after-device-replacement.py +73 -0
- snipepy-0.1.0/docs/examples/US65-barcode-and-label-generation.py +49 -0
- snipepy-0.1.0/docs/examples/US66-custom-field-and-fieldset-management.py +88 -0
- snipepy-0.1.0/docs/examples/US67-hardware-model-management.py +61 -0
- snipepy-0.1.0/docs/examples/US68-status-label-management.py +68 -0
- snipepy-0.1.0/docs/examples/US69-category-management.py +60 -0
- snipepy-0.1.0/docs/examples/US70-location-management.py +59 -0
- snipepy-0.1.0/docs/examples/US71-company-management.py +48 -0
- snipepy-0.1.0/docs/examples/US72-manufacturer-management.py +51 -0
- snipepy-0.1.0/docs/examples/US73-department-management.py +64 -0
- snipepy-0.1.0/docs/examples/US74-audit-queue-management.py +46 -0
- snipepy-0.1.0/docs/examples/US74-high-level-checkout-methods.py +90 -0
- snipepy-0.1.0/docs/examples/US75-audit-trend-analysis.py +54 -0
- snipepy-0.1.0/docs/examples/US76-bulk-delete-assets.py +46 -0
- snipepy-0.1.0/docs/examples/US77-bulk-checkout-to-user.py +130 -0
- snipepy-0.1.0/docs/examples/US78-bulk-checkout-to-location.py +112 -0
- snipepy-0.1.0/docs/examples/US79-bulk-checkout-and-checkin-lifecycle.py +120 -0
- snipepy-0.1.0/docs/examples/US80-clone-hardware.py +109 -0
- snipepy-0.1.0/docs/examples/bulk_import.py +47 -0
- snipepy-0.1.0/docs/examples/department_inventory.py +48 -0
- snipepy-0.1.0/docs/examples/duplicate_serials.py +50 -0
- snipepy-0.1.0/docs/examples/expiring_licenses.py +55 -0
- snipepy-0.1.0/docs/examples/hardware_refresh.py +64 -0
- snipepy-0.1.0/docs/examples/mcp_server.py +68 -0
- snipepy-0.1.0/docs/fixes/0001-asset-assigned-to-accepts-integer.md +86 -0
- snipepy-0.1.0/docs/fixes/0002-asset-maintenance-create-sends-title-not-name.md +61 -0
- snipepy-0.1.0/docs/fixes/0003-accessories-checkout-wrong-field-name.md +52 -0
- snipepy-0.1.0/docs/fixes/0004-restore-returns-string-not-model.md +61 -0
- snipepy-0.1.0/docs/fixes/0005-assets-checkout-returns-partial-response.md +54 -0
- snipepy-0.1.0/docs/fixes/0006-component-consumable-checkout-returns-none.md +56 -0
- snipepy-0.1.0/docs/fixes/0007-get-by-serial-list-envelope.md +56 -0
- snipepy-0.1.0/docs/fixes/0008-components-list-assets-pivot-fields.md +68 -0
- snipepy-0.1.0/docs/fixes/0009-fieldset-delete-fails-field-in-use.md +50 -0
- snipepy-0.1.0/docs/fixes/0010-list-audit-due-wrong-endpoint.md +49 -0
- snipepy-0.1.0/docs/fixes/0011-delete-file-missing-delete-suffix.md +52 -0
- snipepy-0.1.0/docs/fixes/0012-accessories-clone-endpoint-removed.md +39 -0
- snipepy-0.1.0/docs/fixes/0013-asset-models-restore-endpoint-removed.md +39 -0
- snipepy-0.1.0/docs/fixes/0014-locations-list-users-endpoint-removed.md +41 -0
- snipepy-0.1.0/docs/fixes/0015-custom-fields-create-sends-invalid-field-type.md +49 -0
- snipepy-0.1.0/docs/fixes/0016-maintenance-update-partial-test-uses-title.md +54 -0
- snipepy-0.1.0/docs/fixes/0017-users-list-missing-filter-params.md +42 -0
- snipepy-0.1.0/docs/fixes/0018-licenses-list-missing-filter-params.md +47 -0
- snipepy-0.1.0/docs/fixes/0019-html-entities-not-decoded-in-api-responses.md +72 -0
- snipepy-0.1.0/docs/fixes/0020-checkout-returns-500-when-mail-is-misconfigured.md +85 -0
- snipepy-0.1.0/docs/fixes/0022-asset-maintenance-create-requires-maintenance-type-id.md +71 -0
- snipepy-0.1.0/docs/fixes/0023-license-seat-assigned-to-field.md +62 -0
- snipepy-0.1.0/docs/fixes/0024-asset-create-omits-name-field.md +72 -0
- snipepy-0.1.0/docs/fixes/0025-clone-purchase-cost-float-type.md +67 -0
- snipepy-0.1.0/docs/fixes/NNNN-format-lint-errors.md +44 -0
- snipepy-0.1.0/docs/fixes/README.md +107 -0
- snipepy-0.1.0/docs/smoke-test-limitations.md +136 -0
- snipepy-0.1.0/docs/snipeit-api/README.md +274 -0
- snipepy-0.1.0/docs/snipeit-api/accessories.md +135 -0
- snipepy-0.1.0/docs/snipeit-api/api-table.md +173 -0
- snipepy-0.1.0/docs/snipeit-api/assets.md +444 -0
- snipepy-0.1.0/docs/snipeit-api/categories.md +90 -0
- snipepy-0.1.0/docs/snipeit-api/companies.md +84 -0
- snipepy-0.1.0/docs/snipeit-api/components.md +134 -0
- snipepy-0.1.0/docs/snipeit-api/consumables.md +131 -0
- snipepy-0.1.0/docs/snipeit-api/custom-fields.md +81 -0
- snipepy-0.1.0/docs/snipeit-api/departments.md +91 -0
- snipepy-0.1.0/docs/snipeit-api/fieldsets.md +101 -0
- snipepy-0.1.0/docs/snipeit-api/file-uploads.md +53 -0
- snipepy-0.1.0/docs/snipeit-api/groups.md +79 -0
- snipepy-0.1.0/docs/snipeit-api/licenses.md +203 -0
- snipepy-0.1.0/docs/snipeit-api/locations.md +121 -0
- snipepy-0.1.0/docs/snipeit-api/maintenances.md +131 -0
- snipepy-0.1.0/docs/snipeit-api/manufacturers.md +101 -0
- snipepy-0.1.0/docs/snipeit-api/models.md +130 -0
- snipepy-0.1.0/docs/snipeit-api/reports.md +54 -0
- snipepy-0.1.0/docs/snipeit-api/settings.md +72 -0
- snipepy-0.1.0/docs/snipeit-api/status-labels.md +114 -0
- snipepy-0.1.0/docs/snipeit-api/suppliers.md +68 -0
- snipepy-0.1.0/docs/snipeit-api/users.md +219 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessories-1.md +148 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessories-checkin.md +96 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessories-checkout.md +138 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessories.md +345 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessoriesid-1.md +159 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessoriesid-2.md +154 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessoriesid-3.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessoriesid.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/accessories/accessoriesidcheckedout.md +109 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/api-web-doc-index.md +301 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/api-web-sources.md +185 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/asset_maintenances/maintenances-1.md +140 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/asset_maintenances/maintenances-copy-1.md +136 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/asset_maintenances/maintenances-copy.md +140 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/asset_maintenances/maintenances.md +305 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/asset_maintenances/maintenancesid.md +264 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-audit-by-id.md +89 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-by-asset-tag.md +412 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-by-id.md +468 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-by-serial.md +412 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-checkin.md +149 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-checkout.md +184 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-create.md +365 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-delete.md +109 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-files-delete.md +103 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-list-files.md +106 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-list.md +576 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-partial-update.md +257 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-update.md +222 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardware-upload-files.md +129 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardwareaudit.md +219 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardwareauditdue.md +392 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardwareauditoverdue.md +392 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardwareidfilesfile_id.md +116 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardwareidlicenses.md +323 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardwareidrestore.md +103 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/hardwarelabels.md +99 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/updating-custom-fields.md +9 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/assets/uploading-files.md +39 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/categories/categories-1.md +182 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/categories/categories-2.md +198 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/categories/categoriesid-1.md +203 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/categories/categoriesid-2.md +166 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/categories/categoriesid-3.md +167 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/categories/categoriesid.md +210 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/companies/companies-1.md +167 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/companies/companies.md +223 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/companies/companiesid-1.md +184 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/companies/companiesid-2.md +195 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/companies/companiesid-3.md +158 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/companies/companiesid.md +237 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/components-1.md +138 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/components.md +351 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/componentsid-1.md +146 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/componentsid-2.md +146 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/componentsid-3.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/componentsid.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/componentsidassets.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/componentsidcheckin.md +115 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/components/componentsidcheckout.md +121 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/consumables/consumables-1.md +139 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/consumables/consumables-2.md +150 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/consumables/consumables.md +384 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/consumables/consumablesid-1.md +150 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/consumables/consumablesid-2.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/consumables/consumablesid.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/consumables/consumablesidcheckout.md +115 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fields-1.md +152 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fields-2.md +166 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fields.md +257 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsets.md +134 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsetsid-1.md +204 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsetsid-2.md +160 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsetsid.md +237 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsetsidfields.md +219 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsid-1.md +160 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsid-2.md +167 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsid.md +142 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsidassociate.md +160 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsiddisassociate.md +160 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/custom_fields__fieldsets/update-fields.md +171 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/departments/departments-1.md +137 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/departments/departments-edit.md +157 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/departments/departments.md +184 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/departments/departmentsid-1.md +157 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/departments/departmentsid-2.md +184 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/departments/departmentsid.md +165 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/groups/groups-1.md +89 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/groups/groupsid-1.md +103 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/groups/groupsid-2.md +115 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/groups/groupsid-3.md +94 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/groups/groupsid-4.md +115 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/groups/groupsid.md +94 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/license-seats-checkin-checkout-patch.md +15 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/license-seats-checkin-checkout-put.md +179 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/licenses.md +407 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/licensesid-1.md +197 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/licensesid-2.md +187 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/licensesid-3.md +110 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/licensesid.md +246 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/licensesidseats.md +205 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/licensesidseatsseat_id-2.md +179 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/licensesidseatsseat_id.md +198 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/licenses/testinput.md +224 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/locations/locations-1.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/locations/locations-2.md +136 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/locations/locations-3.md +147 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/locations/locations.md +171 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/locations/locationsid-2.md +87 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/locations/locationsid.md +144 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/manufacturers/manufacturers-1.md +100 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/manufacturers/manufacturers.md +215 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/manufacturers/manufacturersid-1.md +167 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/manufacturers/manufacturersid-2.md +167 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/manufacturers/manufacturersid-3.md +185 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/manufacturers/manufacturersid.md +185 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/misc/version.md +78 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/models/models-1.md +196 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/models/models.md +192 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/models/modelsid-1.md +218 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/models/modelsid-2.md +206 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/models/modelsid-3.md +167 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/models/modelsid.md +167 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/models/uploading-model-files.md +39 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/reports/reportsactivity.md +203 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/settings/backups-1.md +82 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/settings/backupsdownloadfile.md +97 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/status_labels/statuslabels-1.md +173 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/status_labels/statuslabels.md +233 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/status_labels/statuslabelsid-1.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/status_labels/statuslabelsid-2.md +184 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/status_labels/statuslabelsid-3.md +183 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/status_labels/statuslabelsid.md +163 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/status_labels/statuslabelsidassetlist.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/suppliers/suppliers.md +152 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/suppliers/suppliersid.md +91 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/users-2.md +194 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/users-3.md +184 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/users-restore.md +102 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/users.md +323 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/usersid-1.md +94 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/usersid-2.md +181 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/usersid.md +94 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/usersidaccessories.md +257 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/usersidassets.md +111 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/usersideulas.md +93 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/usersidlicenses.md +290 -0
- snipepy-0.1.0/docs/snipeit-api-web-docs/users/usersme.md +128 -0
- snipepy-0.1.0/pyproject.toml +389 -0
- snipepy-0.1.0/requirements-dev.txt +10 -0
- snipepy-0.1.0/requirements.txt +3 -0
- snipepy-0.1.0/scripts/dev/copy_test_token.sh +42 -0
- snipepy-0.1.0/scripts/dev/down_all_instances.sh +58 -0
- snipepy-0.1.0/scripts/dev/down_demo_instance.sh +13 -0
- snipepy-0.1.0/scripts/dev/up_all_instances.sh +59 -0
- snipepy-0.1.0/scripts/dev/up_demo_instance.sh +32 -0
- snipepy-0.1.0/setup.cfg +4 -0
- snipepy-0.1.0/skills/snipepy-onboarding/SKILL.md +303 -0
- snipepy-0.1.0/src/snipepy/__init__.py +73 -0
- snipepy-0.1.0/src/snipepy/_config.py +45 -0
- snipepy-0.1.0/src/snipepy/_constants.py +15 -0
- snipepy-0.1.0/src/snipepy/_http_client.py +382 -0
- snipepy-0.1.0/src/snipepy/_whitelist.py +70 -0
- snipepy-0.1.0/src/snipepy/models/__init__.py +111 -0
- snipepy-0.1.0/src/snipepy/models/_shared.py +125 -0
- snipepy-0.1.0/src/snipepy/models/accessories.py +59 -0
- snipepy-0.1.0/src/snipepy/models/asset_maintenances.py +55 -0
- snipepy-0.1.0/src/snipepy/models/asset_models.py +47 -0
- snipepy-0.1.0/src/snipepy/models/assets.py +170 -0
- snipepy-0.1.0/src/snipepy/models/categories.py +39 -0
- snipepy-0.1.0/src/snipepy/models/companies.py +35 -0
- snipepy-0.1.0/src/snipepy/models/components.py +79 -0
- snipepy-0.1.0/src/snipepy/models/consumables.py +43 -0
- snipepy-0.1.0/src/snipepy/models/custom_fields.py +67 -0
- snipepy-0.1.0/src/snipepy/models/departments.py +33 -0
- snipepy-0.1.0/src/snipepy/models/groups.py +30 -0
- snipepy-0.1.0/src/snipepy/models/licenses.py +99 -0
- snipepy-0.1.0/src/snipepy/models/locations.py +41 -0
- snipepy-0.1.0/src/snipepy/models/manufacturers.py +39 -0
- snipepy-0.1.0/src/snipepy/models/reports.py +68 -0
- snipepy-0.1.0/src/snipepy/models/settings.py +25 -0
- snipepy-0.1.0/src/snipepy/models/status_labels.py +34 -0
- snipepy-0.1.0/src/snipepy/models/suppliers.py +45 -0
- snipepy-0.1.0/src/snipepy/models/users.py +60 -0
- snipepy-0.1.0/src/snipepy/py.typed +0 -0
- snipepy-0.1.0/src/snipepy/services/__init__.py +43 -0
- snipepy-0.1.0/src/snipepy/services/_pagination.py +28 -0
- snipepy-0.1.0/src/snipepy/services/accessories.py +126 -0
- snipepy-0.1.0/src/snipepy/services/asset_maintenances.py +109 -0
- snipepy-0.1.0/src/snipepy/services/asset_models.py +97 -0
- snipepy-0.1.0/src/snipepy/services/assets.py +517 -0
- snipepy-0.1.0/src/snipepy/services/categories.py +80 -0
- snipepy-0.1.0/src/snipepy/services/companies.py +68 -0
- snipepy-0.1.0/src/snipepy/services/components.py +123 -0
- snipepy-0.1.0/src/snipepy/services/consumables.py +106 -0
- snipepy-0.1.0/src/snipepy/services/custom_fields.py +118 -0
- snipepy-0.1.0/src/snipepy/services/departments.py +91 -0
- snipepy-0.1.0/src/snipepy/services/groups.py +66 -0
- snipepy-0.1.0/src/snipepy/services/licenses.py +146 -0
- snipepy-0.1.0/src/snipepy/services/locations.py +113 -0
- snipepy-0.1.0/src/snipepy/services/manufacturers.py +78 -0
- snipepy-0.1.0/src/snipepy/services/reports.py +64 -0
- snipepy-0.1.0/src/snipepy/services/settings.py +53 -0
- snipepy-0.1.0/src/snipepy/services/status_labels.py +110 -0
- snipepy-0.1.0/src/snipepy/services/suppliers.py +93 -0
- snipepy-0.1.0/src/snipepy/services/users.py +180 -0
- snipepy-0.1.0/src/snipepy/snipepy.py +144 -0
- snipepy-0.1.0/src/snipepy.egg-info/PKG-INFO +138 -0
- snipepy-0.1.0/src/snipepy.egg-info/SOURCES.txt +470 -0
- snipepy-0.1.0/src/snipepy.egg-info/dependency_links.txt +1 -0
- snipepy-0.1.0/src/snipepy.egg-info/requires.txt +17 -0
- snipepy-0.1.0/src/snipepy.egg-info/scm_file_list.json +467 -0
- snipepy-0.1.0/src/snipepy.egg-info/scm_version.json +8 -0
- snipepy-0.1.0/src/snipepy.egg-info/top_level.txt +1 -0
- snipepy-0.1.0/tests/__init__.py +0 -0
- snipepy-0.1.0/tests/conftest.py +40 -0
- snipepy-0.1.0/tests/docker/test/latest/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/latest/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/readme.md +134 -0
- snipepy-0.1.0/tests/docker/test/v4.8.0/docker-compose.yaml +45 -0
- snipepy-0.1.0/tests/docker/test/v4.8.0/setup.sh +29 -0
- snipepy-0.1.0/tests/docker/test/v8.0.0/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.0.0/setup.sh +40 -0
- snipepy-0.1.0/tests/docker/test/v8.1.4/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.1.4/setup.sh +40 -0
- snipepy-0.1.0/tests/docker/test/v8.2.0/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.2.0/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.2.1/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.2.1/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.3.0/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.3.0/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.3.5/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.3.5/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.3.6/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.3.6/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.3.7/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.3.7/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.4.0/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.4.0/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.4.1/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.4.1/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.5.0/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.5.0/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.6.0/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.6.0/setup.sh +26 -0
- snipepy-0.1.0/tests/docker/test/v8.6.1/docker-compose.yaml +43 -0
- snipepy-0.1.0/tests/docker/test/v8.6.1/setup.sh +26 -0
- snipepy-0.1.0/tests/smoke/__init__.py +3 -0
- snipepy-0.1.0/tests/smoke/conftest.py +408 -0
- snipepy-0.1.0/tests/smoke/test_accessories.py +89 -0
- snipepy-0.1.0/tests/smoke/test_asset_maintenances.py +73 -0
- snipepy-0.1.0/tests/smoke/test_asset_models.py +78 -0
- snipepy-0.1.0/tests/smoke/test_assets.py +496 -0
- snipepy-0.1.0/tests/smoke/test_categories.py +68 -0
- snipepy-0.1.0/tests/smoke/test_companies.py +55 -0
- snipepy-0.1.0/tests/smoke/test_components.py +91 -0
- snipepy-0.1.0/tests/smoke/test_consumables.py +76 -0
- snipepy-0.1.0/tests/smoke/test_custom_fields.py +141 -0
- snipepy-0.1.0/tests/smoke/test_departments.py +55 -0
- snipepy-0.1.0/tests/smoke/test_groups.py +51 -0
- snipepy-0.1.0/tests/smoke/test_licenses.py +122 -0
- snipepy-0.1.0/tests/smoke/test_locations.py +80 -0
- snipepy-0.1.0/tests/smoke/test_manufacturers.py +63 -0
- snipepy-0.1.0/tests/smoke/test_model_fieldset_defaults.py +321 -0
- snipepy-0.1.0/tests/smoke/test_reports.py +38 -0
- snipepy-0.1.0/tests/smoke/test_settings.py +23 -0
- snipepy-0.1.0/tests/smoke/test_status_labels.py +85 -0
- snipepy-0.1.0/tests/smoke/test_suppliers.py +55 -0
- snipepy-0.1.0/tests/smoke/test_us_detection.py +201 -0
- snipepy-0.1.0/tests/smoke/test_us_error_handling.py +142 -0
- snipepy-0.1.0/tests/smoke/test_us_files.py +81 -0
- snipepy-0.1.0/tests/smoke/test_us_hardware_lifecycle.py +168 -0
- snipepy-0.1.0/tests/smoke/test_us_hardware_read.py +161 -0
- snipepy-0.1.0/tests/smoke/test_us_hardware_write.py +303 -0
- snipepy-0.1.0/tests/smoke/test_us_license_scenarios.py +112 -0
- snipepy-0.1.0/tests/smoke/test_us_maintenance_scenarios.py +160 -0
- snipepy-0.1.0/tests/smoke/test_us_management.py +381 -0
- snipepy-0.1.0/tests/smoke/test_us_peripherals.py +134 -0
- snipepy-0.1.0/tests/smoke/test_us_report_scenarios.py +150 -0
- snipepy-0.1.0/tests/smoke/test_us_search.py +168 -0
- snipepy-0.1.0/tests/smoke/test_us_user_scenarios.py +173 -0
- snipepy-0.1.0/tests/smoke/test_users.py +160 -0
- snipepy-0.1.0/tests/unit/__init__.py +0 -0
- snipepy-0.1.0/tests/unit/config/test_config.py +209 -0
- snipepy-0.1.0/tests/unit/http_client/conftest.py +163 -0
- snipepy-0.1.0/tests/unit/http_client/test_http_client_init.py +27 -0
- snipepy-0.1.0/tests/unit/http_client/test_http_client_public_api.py +182 -0
- snipepy-0.1.0/tests/unit/http_client/test_http_client_rate_limit.py +115 -0
- snipepy-0.1.0/tests/unit/http_client/test_http_client_request.py +711 -0
- snipepy-0.1.0/tests/unit/http_client/test_http_unescape.py +187 -0
- snipepy-0.1.0/tests/unit/models/__init__.py +1 -0
- snipepy-0.1.0/tests/unit/models/test_asset_models.py +149 -0
- snipepy-0.1.0/tests/unit/models/test_assets.py +121 -0
- snipepy-0.1.0/tests/unit/models/test_custom_fields.py +122 -0
- snipepy-0.1.0/tests/unit/models/test_remaining_models.py +900 -0
- snipepy-0.1.0/tests/unit/models/test_reports.py +64 -0
- snipepy-0.1.0/tests/unit/models/test_shared.py +121 -0
- snipepy-0.1.0/tests/unit/services/__init__.py +0 -0
- snipepy-0.1.0/tests/unit/services/conftest.py +152 -0
- snipepy-0.1.0/tests/unit/services/test_accessories_service.py +145 -0
- snipepy-0.1.0/tests/unit/services/test_asset_maintenances_service.py +156 -0
- snipepy-0.1.0/tests/unit/services/test_asset_models_service.py +188 -0
- snipepy-0.1.0/tests/unit/services/test_assets_service.py +789 -0
- snipepy-0.1.0/tests/unit/services/test_categories_service.py +139 -0
- snipepy-0.1.0/tests/unit/services/test_companies_service.py +116 -0
- snipepy-0.1.0/tests/unit/services/test_components_service.py +143 -0
- snipepy-0.1.0/tests/unit/services/test_consumables_service.py +140 -0
- snipepy-0.1.0/tests/unit/services/test_custom_fields_service.py +246 -0
- snipepy-0.1.0/tests/unit/services/test_departments_service.py +150 -0
- snipepy-0.1.0/tests/unit/services/test_groups_service.py +127 -0
- snipepy-0.1.0/tests/unit/services/test_licenses_service.py +239 -0
- snipepy-0.1.0/tests/unit/services/test_locations_service.py +171 -0
- snipepy-0.1.0/tests/unit/services/test_manufacturers_service.py +126 -0
- snipepy-0.1.0/tests/unit/services/test_pagination.py +60 -0
- snipepy-0.1.0/tests/unit/services/test_reports_service.py +159 -0
- snipepy-0.1.0/tests/unit/services/test_settings_service.py +105 -0
- snipepy-0.1.0/tests/unit/services/test_status_labels_service.py +201 -0
- snipepy-0.1.0/tests/unit/services/test_suppliers_service.py +166 -0
- snipepy-0.1.0/tests/unit/services/test_users_service.py +362 -0
- snipepy-0.1.0/tests/unit/test_exceptions.py +54 -0
- snipepy-0.1.0/tests/unit/test_public_api.py +53 -0
- snipepy-0.1.0/tests/unit/test_snipepy.py +101 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: Snipepy CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
static-analysis:
|
|
13
|
+
name: Static Analysis
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout repository
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up Python
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.10"
|
|
23
|
+
cache: "pip"
|
|
24
|
+
cache-dependency-path: pyproject.toml
|
|
25
|
+
|
|
26
|
+
- name: Install project with dev dependencies
|
|
27
|
+
run: |
|
|
28
|
+
python -m pip install --upgrade pip
|
|
29
|
+
pip install -e .[dev]
|
|
30
|
+
pip install tox
|
|
31
|
+
|
|
32
|
+
- name: Check code formatting
|
|
33
|
+
run: tox -e format
|
|
34
|
+
|
|
35
|
+
- name: Run linter
|
|
36
|
+
run: tox -e lint
|
|
37
|
+
|
|
38
|
+
- name: Run type checker
|
|
39
|
+
run: tox -e typecheck
|
|
40
|
+
|
|
41
|
+
- name: Detect unused code
|
|
42
|
+
run: tox -e deadcode
|
|
43
|
+
|
|
44
|
+
- name: Run security checks
|
|
45
|
+
run: tox -e sec
|
|
46
|
+
|
|
47
|
+
test-matrix:
|
|
48
|
+
name: Tests (Python ${{ matrix.python-version }})
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
needs: static-analysis
|
|
51
|
+
timeout-minutes: 15
|
|
52
|
+
strategy:
|
|
53
|
+
fail-fast: false
|
|
54
|
+
matrix:
|
|
55
|
+
python-version:
|
|
56
|
+
- "3.10"
|
|
57
|
+
- "3.11"
|
|
58
|
+
- "3.12"
|
|
59
|
+
- "3.13"
|
|
60
|
+
include:
|
|
61
|
+
- python-version: "3.14"
|
|
62
|
+
allow-prereleases: true
|
|
63
|
+
steps:
|
|
64
|
+
- name: Checkout repository
|
|
65
|
+
uses: actions/checkout@v4
|
|
66
|
+
|
|
67
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
68
|
+
uses: actions/setup-python@v5
|
|
69
|
+
with:
|
|
70
|
+
python-version: ${{ matrix.python-version }}
|
|
71
|
+
allow-prereleases: ${{ matrix.allow-prereleases || false }}
|
|
72
|
+
cache: "pip"
|
|
73
|
+
cache-dependency-path: pyproject.toml
|
|
74
|
+
|
|
75
|
+
- name: Install project with dev dependencies
|
|
76
|
+
run: |
|
|
77
|
+
python -m pip install --upgrade pip
|
|
78
|
+
pip install -e .[dev]
|
|
79
|
+
pip install tox
|
|
80
|
+
|
|
81
|
+
- name: Run tests
|
|
82
|
+
env:
|
|
83
|
+
PYTHON_VERSION: ${{ matrix.python-version }}
|
|
84
|
+
run: |
|
|
85
|
+
TOX_ENV_NAME="py$(echo $PYTHON_VERSION | tr -d '.')"
|
|
86
|
+
tox -e $TOX_ENV_NAME
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
name: Build distribution
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
with:
|
|
17
|
+
fetch-depth: 0
|
|
18
|
+
|
|
19
|
+
- name: Set up Python
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.x"
|
|
23
|
+
|
|
24
|
+
- name: Install build tool
|
|
25
|
+
run: python -m pip install --upgrade build setuptools_scm
|
|
26
|
+
|
|
27
|
+
- name: Build sdist and wheel
|
|
28
|
+
run: python -m build
|
|
29
|
+
|
|
30
|
+
- name: Upload build artifacts
|
|
31
|
+
uses: actions/upload-artifact@v4
|
|
32
|
+
with:
|
|
33
|
+
name: dist
|
|
34
|
+
path: dist/
|
|
35
|
+
|
|
36
|
+
publish-pypi:
|
|
37
|
+
name: Publish to PyPI
|
|
38
|
+
needs: build
|
|
39
|
+
if: >-
|
|
40
|
+
github.event_name == 'release' &&
|
|
41
|
+
github.event.action == 'published' &&
|
|
42
|
+
!github.event.release.prerelease
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
environment:
|
|
45
|
+
name: pypi_env
|
|
46
|
+
url: https://pypi.org/project/snipepy/
|
|
47
|
+
permissions:
|
|
48
|
+
id-token: write
|
|
49
|
+
steps:
|
|
50
|
+
- name: Download build artifacts
|
|
51
|
+
uses: actions/download-artifact@v4
|
|
52
|
+
with:
|
|
53
|
+
name: dist
|
|
54
|
+
path: dist/
|
|
55
|
+
|
|
56
|
+
- name: Publish to PyPI
|
|
57
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
58
|
+
|
|
59
|
+
publish-testpypi:
|
|
60
|
+
name: Publish to TestPyPI
|
|
61
|
+
needs: build
|
|
62
|
+
if: >-
|
|
63
|
+
github.event_name == 'release' &&
|
|
64
|
+
github.event.action == 'published' &&
|
|
65
|
+
github.event.release.prerelease
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
environment:
|
|
68
|
+
name: testpypi_env
|
|
69
|
+
url: https://test.pypi.org/project/snipepy/
|
|
70
|
+
permissions:
|
|
71
|
+
id-token: write
|
|
72
|
+
steps:
|
|
73
|
+
- name: Download build artifacts
|
|
74
|
+
uses: actions/download-artifact@v4
|
|
75
|
+
with:
|
|
76
|
+
name: dist
|
|
77
|
+
path: dist/
|
|
78
|
+
|
|
79
|
+
- name: Publish to TestPyPI
|
|
80
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
81
|
+
with:
|
|
82
|
+
repository-url: https://test.pypi.org/legacy/
|
snipepy-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
.zed
|
|
3
|
+
*.py[codz]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
develop-eggs/
|
|
9
|
+
dist/
|
|
10
|
+
results
|
|
11
|
+
downloads/
|
|
12
|
+
eggs/
|
|
13
|
+
.eggs/
|
|
14
|
+
lib/
|
|
15
|
+
lib64/
|
|
16
|
+
parts/
|
|
17
|
+
sdist/
|
|
18
|
+
var/
|
|
19
|
+
wheels/
|
|
20
|
+
share/python-wheels/
|
|
21
|
+
*.egg-info/
|
|
22
|
+
.installed.cfg
|
|
23
|
+
*.egg
|
|
24
|
+
MANIFEST
|
|
25
|
+
*.manifest
|
|
26
|
+
*.spec
|
|
27
|
+
pip-log.txt
|
|
28
|
+
pip-delete-this-directory.txt
|
|
29
|
+
htmlcov/
|
|
30
|
+
.tox/
|
|
31
|
+
.nox/
|
|
32
|
+
.coverage
|
|
33
|
+
.coverage.*
|
|
34
|
+
.cache
|
|
35
|
+
nosetests.xml
|
|
36
|
+
coverage.xml
|
|
37
|
+
*.cover
|
|
38
|
+
*.py.cover
|
|
39
|
+
.hypothesis/
|
|
40
|
+
.pytest_cache/
|
|
41
|
+
cover/
|
|
42
|
+
*.mo
|
|
43
|
+
*.pot
|
|
44
|
+
*.log
|
|
45
|
+
local_settings.py
|
|
46
|
+
db.sqlite3
|
|
47
|
+
db.sqlite3-journal
|
|
48
|
+
instance/
|
|
49
|
+
.webassets-cache
|
|
50
|
+
.scrapy
|
|
51
|
+
docs/_build/
|
|
52
|
+
.pybuilder/
|
|
53
|
+
target/
|
|
54
|
+
.ipynb_checkpoints
|
|
55
|
+
profile_default/
|
|
56
|
+
ipython_config.py
|
|
57
|
+
.python-version
|
|
58
|
+
Pipfile.lock
|
|
59
|
+
uv.lock
|
|
60
|
+
poetry.lock
|
|
61
|
+
poetry.toml
|
|
62
|
+
pdm.lock
|
|
63
|
+
pdm.toml
|
|
64
|
+
.pdm-python
|
|
65
|
+
.pdm-build/
|
|
66
|
+
pixi.lock
|
|
67
|
+
.pixi
|
|
68
|
+
__pypackages__/
|
|
69
|
+
celerybeat-schedule
|
|
70
|
+
celerybeat.pid
|
|
71
|
+
*.rdb
|
|
72
|
+
*.aof
|
|
73
|
+
*.pid
|
|
74
|
+
mnesia/
|
|
75
|
+
rabbitmq/
|
|
76
|
+
rabbitmq-data/
|
|
77
|
+
activemq-data/
|
|
78
|
+
*.sage.py
|
|
79
|
+
.env
|
|
80
|
+
.envrc
|
|
81
|
+
.venv
|
|
82
|
+
.test.env*
|
|
83
|
+
env/
|
|
84
|
+
venv/
|
|
85
|
+
ENV/
|
|
86
|
+
.env
|
|
87
|
+
env.bak/
|
|
88
|
+
venv.bak/
|
|
89
|
+
.spyderproject
|
|
90
|
+
.spyproject
|
|
91
|
+
.ropeproject
|
|
92
|
+
/site
|
|
93
|
+
.mypy_cache/
|
|
94
|
+
.dmypy.json
|
|
95
|
+
dmypy.json
|
|
96
|
+
.pyre/
|
|
97
|
+
.pytype/
|
|
98
|
+
cython_debug/
|
|
99
|
+
.idea/
|
|
100
|
+
.abstra/
|
|
101
|
+
.vscode/
|
|
102
|
+
.ruff_cache/
|
|
103
|
+
.pypirc
|
|
104
|
+
marimo/_static/
|
|
105
|
+
marimo/_lsp/
|
|
106
|
+
__marimo__/
|
|
107
|
+
.streamlit/secrets.toml
|
|
108
|
+
docs/scenarios/
|
|
109
|
+
.DS_Store
|
|
110
|
+
.TODO*
|
|
111
|
+
.test.api.token
|
|
112
|
+
.claude*
|
|
113
|
+
.agents*
|
|
114
|
+
coverage
|
|
115
|
+
|
|
116
|
+
# Local issue tracker (private, not pushed to remote)
|
|
117
|
+
.issues/
|
|
118
|
+
.test_pypi_publish.sh
|