Merging PR_218 openai_rev package with new streamlit chat app

This commit is contained in:
noptuno
2023-04-27 20:29:30 -04:00
parent 479b8d6d10
commit 355dee533b
8378 changed files with 2931636 additions and 3 deletions

View File

@@ -0,0 +1,16 @@
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

View File

@@ -0,0 +1,66 @@
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.options import ArgOptions
class Options(ArgOptions):
KEY = "wpe:browserOptions"
def __init__(self) -> None:
super().__init__()
self._binary_location = ""
self._caps = DesiredCapabilities.WPEWEBKIT.copy()
@property
def capabilities(self):
return self._caps
def set_capability(self, name, value) -> None:
"""Sets a capability."""
self._caps[name] = value
@property
def binary_location(self) -> str:
"""Returns the location of the browser binary otherwise an empty
string."""
return self._binary_location
@binary_location.setter
def binary_location(self, value) -> None:
"""Allows you to set the browser binary to launch.
:Args:
- value : path to the browser binary
"""
self._binary_location = value
def to_capabilities(self):
"""Creates a capabilities with all the options that have been set and
returns a dictionary with everything."""
caps = self._caps
browser_options = {}
if self.binary_location:
browser_options["binary"] = self.binary_location
if self.arguments:
browser_options["args"] = self.arguments
caps[Options.KEY] = browser_options
return caps

View File

@@ -0,0 +1,55 @@
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import typing
from selenium.webdriver.common import service
DEFAULT_EXECUTABLE_PATH = "WPEWebDriver"
class Service(service.Service):
"""A Service class that is responsible for the starting and stopping of
`WPEWebDriver`.
:param executable_path: install path of the WPEWebDriver executable, defaults to `WPEWebDriver`.
:param port: Port for the service to run on, defaults to 0 where the operating system will decide.
:param service_args: (Optional) List of args to be passed to the subprocess when launching the executable.
:param log_path: (Optional) File path for the file to be opened and passed as the subprocess stdout/stderr handler.
:param env: (Optional) Mapping of environment variables for the new process, defaults to `os.environ`.
"""
def __init__(
self,
executable_path: str = DEFAULT_EXECUTABLE_PATH,
port: int = 0,
log_path: typing.Optional[str] = None,
service_args: typing.Optional[typing.List[str]] = None,
env: typing.Optional[typing.Mapping[str, str]] = None,
**kwargs,
):
self.service_args = service_args or []
log_file = open(log_path, "wb") if log_path else None
super().__init__(
executable=executable_path,
port=port,
log_file=log_file,
env=env,
**kwargs,
) # type: ignore
def command_line_args(self) -> typing.List[str]:
return ["-p", f"{self.port}"] + self.service_args

View File

@@ -0,0 +1,73 @@
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import http.client as http_client
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.driver_finder import DriverFinder
from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver
from .options import Options
from .service import DEFAULT_EXECUTABLE_PATH
from .service import Service
class WebDriver(RemoteWebDriver):
"""Controls the WPEWebKitDriver and allows you to drive the browser."""
def __init__(
self,
executable_path=DEFAULT_EXECUTABLE_PATH,
port=0,
options=None,
desired_capabilities=DesiredCapabilities.WPEWEBKIT,
service_log_path=None,
):
"""Creates a new instance of the WPEWebKit driver.
Starts the service and then creates new instance of WPEWebKit Driver.
:Args:
- executable_path : path to the executable. If the default is used it assumes the executable is in the $PATH.
- port : port you would like the service to run, if left as 0, a free port will be found.
- options : an instance of WPEWebKitOptions
- desired_capabilities : Dictionary object with desired capabilities
- service_log_path : Path to write service stdout and stderr output.
"""
if options:
capabilities = options.to_capabilities()
capabilities.update(desired_capabilities)
desired_capabilities = capabilities
else:
options = Options()
self.service = Service(executable_path, port=port, log_path=service_log_path)
self.service.path = DriverFinder.get_path(self.service, options)
self.service.start()
super().__init__(command_executor=self.service.service_url, desired_capabilities=desired_capabilities)
self._is_remote = False
def quit(self):
"""Closes the browser and shuts down the WPEWebKitDriver executable
that is started when starting the WPEWebKitDriver."""
try:
super().quit()
except http_client.BadStatusLine:
pass
finally:
self.service.stop()