pydriverr's Issues
Add Github workflow to test code
include:
- running unit tests (on different OS? and different python versions)
- code coverage
- linters
Publishing those data for every pull request as a comment
Running on every push
Possibly also create release and snapshot versions
https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions
Make print-out of installed-drivers nice
Fix tests so they run on clean env
By default test "test__get_drivers_home_nok" fails if there is DRIVERS_HOME env created
Fix this test, so clean pull passes all tests
Implement handling edge
Design and implement release management process
If we want to release this package to pypi we need to be able to:
- produce changelog on release
- create named tags for release
- have some release branch (is it needed?)
- Put changelog and produced artifact to github page
- put artifact and changelog to pypi
We need to have described release process with steps what should be done.
Some links:
- Manual release from web page on github: https://docs.github.com/en/github/administering-a-repository/managing-releases-in-a-repository
- Creating release via the github API: https://docs.github.com/en/rest/reference/repos#create-a-release
- Python tool to generate changelog from commit messages: https://github.com/vaab/gitchangelog
Dependency Dashboard
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
Other Branches
These updates are pending. To force PRs open, click the checkbox below.
- chore(deps): update dependency pytest-icdiff to v0.9
- fix(deps): update dependency packaging to v24
Open
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
- chore(deps): update dependency describerr to ^0.4.0
- chore(deps): update dependency flake8 to v6.1.0
- fix(deps): update dependency loguru to ^0.7.0
- chore(deps): update dependency flake8 to v7
- chore(deps): update dependency flake8-isort to v6
- chore(deps): update dependency pylint to v3
- fix(deps): update dependency yaspin to v3
- Click on this checkbox to rebase all open PRs at once
Detected dependencies
github-actions
.github/workflows/psv.yaml
actions/checkout v4
actions/setup-python v5
.github/workflows/release.yaml
actions/checkout v4
actions/setup-python v5
softprops/action-gh-release v2
.github/workflows/sv.yaml
actions/checkout v4
actions/setup-python v5
actions/upload-artifact v4
pep621
pyproject.toml
poetry >=0.12
poetry
pyproject.toml
python >=3.8.1, <4.0
packaging ^22.0
humanfriendly ^10.0
requests ^2.28.1
tabulate ^0.9.0
configobj ^5.0.6
click ^8.1.3
loguru ^0.6.0
yaspin ^2.2.0
pylint ^2.15.9
changelog-cli ^0.7.1
isort ^5.11.3
flake8 ^6.0.0
flake8-isort ^5.0.3
pytest ^8.0.0
pytest-mock ^3.10.0
pytest-cov ^5.0.0
requests-mock ^1.10.0
pytest-icdiff ^0.6
pytest-clarity ^1.0.1
flake8-black ^0.3.6
describerr ^0.2.1
- Check this box to trigger a request for Renovate to run again on this repository
Add windows build environment
Add windows as build environment for PSV build
Implement handling phantomjs driver
delete-drivers fails if there is no driver file
Update readme with supported commands and configs
Move config to separate module
replace Fire with proper option handling
Separate api from implementation
Do not check underlying system info when WebDriver class is init
More info added in TODO
in webdriver.py
def system_arch(self, system_arch: str):
# TODO: what about arm arch?
# TODO: this check doesn't make sense at this point. There are 2 scenarios for installation:
# * specify os and arch during install - then we do not care about current system architecture so way
# fail the whole operation? This shouldn`t be run at the init of WebDriver class then
# * do not specify system or arch - then we want to install webdriver for current os and arch. Then we would
# also need to be able to discover ARM arch and system name.
if system_arch in ["x86_64", "AMD64"]:
self._system_arch = "64"
elif system_arch in ["i386", "i586", "32", "x86"]:
self._system_arch = "32"
else:
self.support.exit(f"Unknown architecture: {system_arch}")
logger.debug(f"Current's OS architecture string: {system_arch} -> {self._system_arch} bit")
Add ability to install driver in version matching installed web browser
Wrong file installed (sha512_sum) for operadirver
Steps to reproduce
- install opera driver
➜ pydriver install -d opera
Log file stored in: /tmp/pydriver.log
Requested driver not found in cache
Installed operadriver:
VERSION: 88.0.4324.104
OS: linux
ARCHITECTURE: 64
- Show installed drivers
➜ pydriver show-installed
Log file stored in: /tmp/pydriver.log
DRIVER TYPE VERSION OS ARCHITECTURE FILENAME CHECKSUM
-- ------------- ------------- ----- -------------- ------------ --------------------------------
0 gecko 0.29.0 linux 64 geckodriver dccba99f3e2cbc39db9dd27741c74099
1 chrome 89.0.4389.23 linux 64 chromedriver 68e3e7b54e8adf3f0d505547f74a7b25
2 opera 88.0.4324.104 linux 64 sha512_sum a809b6a4e00a5910a60fc183782d5eef
Zip file for opera contains 2 files: the driver and the checksum.
Add loading bars during files download
refactor common code in drivers
some of the code between drivers can be refactored and common part moved to different file/class
Rename Project to pydriverr
Introduce API for running commands in python scripts
This comes from #42 (comment)
Click always run SystemExit
exception at the end of command execution. This doesn't allow using pydriver in python scripts as it will terminate script. Scipts API would be like:
from pydriver import pydriver
def show_available(driver_type):
try:
pydriver.show_available(["-d", driver_type])
except SystemExit:
call remianing stuff
Update README.md
Refactor tests
Document tests by docstrings
Fix code issues like those mentioned in PR !35
Fix TODO
Implement handling phantomJS
Explore other possibilities to determine architecture
Nowplatform.uname().machine
is used in order to check is it 32 or 64 bits. But this gives following results:
64:
- Linux: x86_64, Mac: x86_64, Windows: AMD64
Linux: , i386, mac: i386, Windows: ?
implement handling opera
When branch is pushed submit verification is run
Implement handling Internet Explorer
InternetExplorer
wdm.internetExplorerDriverUrl=https://selenium-release.storage.googleapis.com/
wdm.internetExplorerDriverExport=webdriver.ie.driver
Add missing docstring in tests
Add option to install version of driver matching installed web browser
Add format and lint
Implement handling gecko driver
Fix double prints when more than 1 drivers is updated
Fix double prints when more than 1 drivers is updated:
➜ pydriver update -d chrome -d gecko
Log file stored in: /tmp/pydriver.log
chromedriver is already in newest version. Local: 89.0.4389.23, remote: 89.0.4389.23
Log file stored in: /tmp/pydriver.log
Log file stored in: /tmp/pydriver.log
geckodriver is already in newest version. Local: 0.29.0, remote: 0.29.0
geckodriver is already in newest version. Local: 0.29.0, remote: 0.29.0
Fix unit tests for opera
Fix creation of arc file to contain sha file for opera driver
Update package changelog-cli to automatically update the version in python files
changelog-cli from https://github.com/mc706/changelog-cli creates own cchangelog.md and updates version only there.
Consider cloning repo and issuing pull request with following functionality:
changelog release
updates version also inpyproject.toml
and/orsetup.py
- ... creates a commit with new version - how this commit should look like
Add more logging (also in debug mode)
As a User I want to be able to enter the product URL into a GUI
Make sure it works on Windows
- follow readme in order to make sure project can be setup on windows
- Run all unit tests to make sure it works on windows
- Fix all errors
Check cache before downloading driver
Add update commands
pydriver update gecko
- update only gecko driver
pydriver update
- updates all installed drivers
Create release 1.0.0-rc1
In order to test release process
Make pydriver.ini file hidden
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.