From b41ca46102fc0b545c588160484d2cc6242e98d0 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Wed, 12 Apr 2023 06:03:28 +0000 Subject: automatic import of python-1password --- python-1password.spec | 612 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 612 insertions(+) create mode 100644 python-1password.spec (limited to 'python-1password.spec') diff --git a/python-1password.spec b/python-1password.spec new file mode 100644 index 0000000..ae210b4 --- /dev/null +++ b/python-1password.spec @@ -0,0 +1,612 @@ +%global _empty_manifest_terminate_build 0 +Name: python-1password +Version: 0.6.2 +Release: 1 +Summary: A Python client and wrapper around the 1Password CLI. +License: MIT +URL: https://github.com/wandera/1password-client +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/8b/d6/10af687db9822c600c29bdafb4aff308728bff15a89b08ed1ad446b25964/1password-0.6.2.tar.gz +BuildArch: noarch + + +%description +# OnePassword python client +[![PyPi release](https://github.com/wandera/1password-client/actions/workflows/publish-to-pypi.yml/badge.svg?branch=main&event=push)](https://github.com/wandera/1password-client/actions/workflows/publish-to-pypi.yml) +[![CodeQL](https://github.com/wandera/1password-client/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/wandera/1password-client/actions/workflows/codeql-analysis.yml) + +Python client around the 1Password password manager cli for usage within python code and +Jupyter Notebooks. Developed by Data Scientists from Jamf. + +Warning: this client is for use with 1Password 7 and earlier. For 1Password 8 there is a different CLI2, which we have +not yet fully tested within this client. Feel free to attempt to use a higher version of the cli or this client with +1Password 8 and submit PRs to fix issues. + + +## Installation +```bash +pip install 1password +``` + +If you have issues with PyYaml or other distutils installed packages then use: +```bash +pip install --ignore-installed 1password +``` + +You are welcome to install and manage `op` yourself by visiting +[the CLI1 downloads page](https://app-updates.agilebits.com/product_history/CLI ) to download the version you require +and follow instructions for your platform. + +The above commands will check `op` is present already and if not will install the best `op` cli it can work out plus +the python client itself. +This is currently fixed at `op` version 1.12.5 to ensure compatibility. If you wish to use a higher version of `op` you +can by following [this guide](https://developer.1password.com/docs/cli/upgrade), +however note that we cannot ensure it will work with our client yet. + +MacOS users will be prompted with a separate installation window to ensure you have a signed version of `op` - make +sure to check other desktops that the installer might pop up on. + +### Optional pre-requisites +#### base32 +This utility is used to create a unique guid for your device but this isn't a hard requirement from AgileBits +and so if you see `base32: command not found` an empty string will be used instead, +and the client will still work fully. + +If you really want to, you can make sure you have this installed by installing coreutils. Details per platform can +be found here: https://command-not-found.com/base32 + +## Basic Usage +Currently tested on MacOS and Linux. + +On first usage users will be asked for both the enrolled email, secret key and password. +There is also verification of your account domain and name. + +For all following usages you will only be asked for a password. + +You will be given 3 attempts and then pointed to reset password documentation or alternatively you can +restart your kernel. + +No passwords are stored in memory without encryption. + +If you have 2FA turned on for your 1Password account the client will ask for your six digit authenticator code. + +```python +from onepassword import OnePassword +import json + +op = OnePassword() + +# List all vaults +json.loads(op.list_vaults()) + +# List all items in a vault, default is Private +op.list_items() + +# Get all fields, one field or more fields for an item with uuid="example" +op.get_item(uuid="example") +op.get_item(uuid="example", fields="username") +op.get_item(uuid="example", fields=["username", "password"]) + +``` + +### Input formats +To be sure what you are using is of the right format + +- Enrolled email: standard email format e.g. user@example.com +- Secret key: provided by 1Password e.g. ##-######-######-#####-#####-#####-##### +- Account domain: domain that you would login to 1Password via browser e.g. example.1password.com +- Account name: subdomain or account name that cli can use for multiple account holders e.g. example + +## Contributing +The GitHub action will run a full build, test and release on any push. +If this is to the main branch then this will release to public PyPi and bump the patch version. + +For a major or minor branch update your new branch should include this new version and this should be verified by the +code owners. + +In general, this means when contributing you should create a feature branch off of the main branch and without +manually bumping the version you can focus on development. + +## CLI coverage +Full op documentation can be found here: https://support.1password.com/command-line-reference/ + +The below is correct as of version 0.3.0. +### Commands +This is the set of commands the current python SDK covers: +- create: Create an object + - document +- delete: Remove an object + - item: we use this method to remove documents but now there is a new delete document method +- get: Get details about an object + - document + - item +- list: List objects and events + - items + - vaults +- signin: Sign in to a 1Password account +- signout: Sign out of a 1Password account + + +This is what still needs developing due to new functionality being released: +- add: Grant access to groups or vaults + - group + - user +- completion: Generate shell completion information +- confirm: Confirm a user +- create: Create an object + - group + - user + - item + - vault +- delete: Remove an object + - document + - user + - vault + - group + - trash +- edit: Edit an object + - document + - group + - item + - user + - vault +- encode: Encode the JSON needed to create an item +- forget: Remove a 1Password account from this device +- get: Get details about an object + - account + - group + - template + - totp + - user + - vault +- list: List objects and events + - documents + - events + - groups + - templates + - users +- reactivate: Reactivate a suspended user +- remove: Revoke access to groups or vaults +- suspend: Suspend a user +- update: Check for and download updates + +## Roadmap +- Add Windows functionality +- Add clean uninstall of client and op +- Remove subprocess usage everywhere -> use pexpect +- Add test docker image +- Get full UT coverage +- Align response types into JSON / lists instead of JSON strings +- Ensure full and matching functionality of CLI in python + - add + - confirm + - create + - delete + - edit + - encode + - forget + - get + - list + - reactivate + - remove + - suspend +- Use the new CLI update method + + +%package -n python3-1password +Summary: A Python client and wrapper around the 1Password CLI. +Provides: python-1password +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-1password +# OnePassword python client +[![PyPi release](https://github.com/wandera/1password-client/actions/workflows/publish-to-pypi.yml/badge.svg?branch=main&event=push)](https://github.com/wandera/1password-client/actions/workflows/publish-to-pypi.yml) +[![CodeQL](https://github.com/wandera/1password-client/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/wandera/1password-client/actions/workflows/codeql-analysis.yml) + +Python client around the 1Password password manager cli for usage within python code and +Jupyter Notebooks. Developed by Data Scientists from Jamf. + +Warning: this client is for use with 1Password 7 and earlier. For 1Password 8 there is a different CLI2, which we have +not yet fully tested within this client. Feel free to attempt to use a higher version of the cli or this client with +1Password 8 and submit PRs to fix issues. + + +## Installation +```bash +pip install 1password +``` + +If you have issues with PyYaml or other distutils installed packages then use: +```bash +pip install --ignore-installed 1password +``` + +You are welcome to install and manage `op` yourself by visiting +[the CLI1 downloads page](https://app-updates.agilebits.com/product_history/CLI ) to download the version you require +and follow instructions for your platform. + +The above commands will check `op` is present already and if not will install the best `op` cli it can work out plus +the python client itself. +This is currently fixed at `op` version 1.12.5 to ensure compatibility. If you wish to use a higher version of `op` you +can by following [this guide](https://developer.1password.com/docs/cli/upgrade), +however note that we cannot ensure it will work with our client yet. + +MacOS users will be prompted with a separate installation window to ensure you have a signed version of `op` - make +sure to check other desktops that the installer might pop up on. + +### Optional pre-requisites +#### base32 +This utility is used to create a unique guid for your device but this isn't a hard requirement from AgileBits +and so if you see `base32: command not found` an empty string will be used instead, +and the client will still work fully. + +If you really want to, you can make sure you have this installed by installing coreutils. Details per platform can +be found here: https://command-not-found.com/base32 + +## Basic Usage +Currently tested on MacOS and Linux. + +On first usage users will be asked for both the enrolled email, secret key and password. +There is also verification of your account domain and name. + +For all following usages you will only be asked for a password. + +You will be given 3 attempts and then pointed to reset password documentation or alternatively you can +restart your kernel. + +No passwords are stored in memory without encryption. + +If you have 2FA turned on for your 1Password account the client will ask for your six digit authenticator code. + +```python +from onepassword import OnePassword +import json + +op = OnePassword() + +# List all vaults +json.loads(op.list_vaults()) + +# List all items in a vault, default is Private +op.list_items() + +# Get all fields, one field or more fields for an item with uuid="example" +op.get_item(uuid="example") +op.get_item(uuid="example", fields="username") +op.get_item(uuid="example", fields=["username", "password"]) + +``` + +### Input formats +To be sure what you are using is of the right format + +- Enrolled email: standard email format e.g. user@example.com +- Secret key: provided by 1Password e.g. ##-######-######-#####-#####-#####-##### +- Account domain: domain that you would login to 1Password via browser e.g. example.1password.com +- Account name: subdomain or account name that cli can use for multiple account holders e.g. example + +## Contributing +The GitHub action will run a full build, test and release on any push. +If this is to the main branch then this will release to public PyPi and bump the patch version. + +For a major or minor branch update your new branch should include this new version and this should be verified by the +code owners. + +In general, this means when contributing you should create a feature branch off of the main branch and without +manually bumping the version you can focus on development. + +## CLI coverage +Full op documentation can be found here: https://support.1password.com/command-line-reference/ + +The below is correct as of version 0.3.0. +### Commands +This is the set of commands the current python SDK covers: +- create: Create an object + - document +- delete: Remove an object + - item: we use this method to remove documents but now there is a new delete document method +- get: Get details about an object + - document + - item +- list: List objects and events + - items + - vaults +- signin: Sign in to a 1Password account +- signout: Sign out of a 1Password account + + +This is what still needs developing due to new functionality being released: +- add: Grant access to groups or vaults + - group + - user +- completion: Generate shell completion information +- confirm: Confirm a user +- create: Create an object + - group + - user + - item + - vault +- delete: Remove an object + - document + - user + - vault + - group + - trash +- edit: Edit an object + - document + - group + - item + - user + - vault +- encode: Encode the JSON needed to create an item +- forget: Remove a 1Password account from this device +- get: Get details about an object + - account + - group + - template + - totp + - user + - vault +- list: List objects and events + - documents + - events + - groups + - templates + - users +- reactivate: Reactivate a suspended user +- remove: Revoke access to groups or vaults +- suspend: Suspend a user +- update: Check for and download updates + +## Roadmap +- Add Windows functionality +- Add clean uninstall of client and op +- Remove subprocess usage everywhere -> use pexpect +- Add test docker image +- Get full UT coverage +- Align response types into JSON / lists instead of JSON strings +- Ensure full and matching functionality of CLI in python + - add + - confirm + - create + - delete + - edit + - encode + - forget + - get + - list + - reactivate + - remove + - suspend +- Use the new CLI update method + + +%package help +Summary: Development documents and examples for 1password +Provides: python3-1password-doc +%description help +# OnePassword python client +[![PyPi release](https://github.com/wandera/1password-client/actions/workflows/publish-to-pypi.yml/badge.svg?branch=main&event=push)](https://github.com/wandera/1password-client/actions/workflows/publish-to-pypi.yml) +[![CodeQL](https://github.com/wandera/1password-client/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/wandera/1password-client/actions/workflows/codeql-analysis.yml) + +Python client around the 1Password password manager cli for usage within python code and +Jupyter Notebooks. Developed by Data Scientists from Jamf. + +Warning: this client is for use with 1Password 7 and earlier. For 1Password 8 there is a different CLI2, which we have +not yet fully tested within this client. Feel free to attempt to use a higher version of the cli or this client with +1Password 8 and submit PRs to fix issues. + + +## Installation +```bash +pip install 1password +``` + +If you have issues with PyYaml or other distutils installed packages then use: +```bash +pip install --ignore-installed 1password +``` + +You are welcome to install and manage `op` yourself by visiting +[the CLI1 downloads page](https://app-updates.agilebits.com/product_history/CLI ) to download the version you require +and follow instructions for your platform. + +The above commands will check `op` is present already and if not will install the best `op` cli it can work out plus +the python client itself. +This is currently fixed at `op` version 1.12.5 to ensure compatibility. If you wish to use a higher version of `op` you +can by following [this guide](https://developer.1password.com/docs/cli/upgrade), +however note that we cannot ensure it will work with our client yet. + +MacOS users will be prompted with a separate installation window to ensure you have a signed version of `op` - make +sure to check other desktops that the installer might pop up on. + +### Optional pre-requisites +#### base32 +This utility is used to create a unique guid for your device but this isn't a hard requirement from AgileBits +and so if you see `base32: command not found` an empty string will be used instead, +and the client will still work fully. + +If you really want to, you can make sure you have this installed by installing coreutils. Details per platform can +be found here: https://command-not-found.com/base32 + +## Basic Usage +Currently tested on MacOS and Linux. + +On first usage users will be asked for both the enrolled email, secret key and password. +There is also verification of your account domain and name. + +For all following usages you will only be asked for a password. + +You will be given 3 attempts and then pointed to reset password documentation or alternatively you can +restart your kernel. + +No passwords are stored in memory without encryption. + +If you have 2FA turned on for your 1Password account the client will ask for your six digit authenticator code. + +```python +from onepassword import OnePassword +import json + +op = OnePassword() + +# List all vaults +json.loads(op.list_vaults()) + +# List all items in a vault, default is Private +op.list_items() + +# Get all fields, one field or more fields for an item with uuid="example" +op.get_item(uuid="example") +op.get_item(uuid="example", fields="username") +op.get_item(uuid="example", fields=["username", "password"]) + +``` + +### Input formats +To be sure what you are using is of the right format + +- Enrolled email: standard email format e.g. user@example.com +- Secret key: provided by 1Password e.g. ##-######-######-#####-#####-#####-##### +- Account domain: domain that you would login to 1Password via browser e.g. example.1password.com +- Account name: subdomain or account name that cli can use for multiple account holders e.g. example + +## Contributing +The GitHub action will run a full build, test and release on any push. +If this is to the main branch then this will release to public PyPi and bump the patch version. + +For a major or minor branch update your new branch should include this new version and this should be verified by the +code owners. + +In general, this means when contributing you should create a feature branch off of the main branch and without +manually bumping the version you can focus on development. + +## CLI coverage +Full op documentation can be found here: https://support.1password.com/command-line-reference/ + +The below is correct as of version 0.3.0. +### Commands +This is the set of commands the current python SDK covers: +- create: Create an object + - document +- delete: Remove an object + - item: we use this method to remove documents but now there is a new delete document method +- get: Get details about an object + - document + - item +- list: List objects and events + - items + - vaults +- signin: Sign in to a 1Password account +- signout: Sign out of a 1Password account + + +This is what still needs developing due to new functionality being released: +- add: Grant access to groups or vaults + - group + - user +- completion: Generate shell completion information +- confirm: Confirm a user +- create: Create an object + - group + - user + - item + - vault +- delete: Remove an object + - document + - user + - vault + - group + - trash +- edit: Edit an object + - document + - group + - item + - user + - vault +- encode: Encode the JSON needed to create an item +- forget: Remove a 1Password account from this device +- get: Get details about an object + - account + - group + - template + - totp + - user + - vault +- list: List objects and events + - documents + - events + - groups + - templates + - users +- reactivate: Reactivate a suspended user +- remove: Revoke access to groups or vaults +- suspend: Suspend a user +- update: Check for and download updates + +## Roadmap +- Add Windows functionality +- Add clean uninstall of client and op +- Remove subprocess usage everywhere -> use pexpect +- Add test docker image +- Get full UT coverage +- Align response types into JSON / lists instead of JSON strings +- Ensure full and matching functionality of CLI in python + - add + - confirm + - create + - delete + - edit + - encode + - forget + - get + - list + - reactivate + - remove + - suspend +- Use the new CLI update method + + +%prep +%autosetup -n 1password-0.6.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-1password -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed Apr 12 2023 Python_Bot - 0.6.2-1 +- Package Spec generated -- cgit v1.2.3