Saravanan666/pypi-org huggingface dataset:
Package: serverchecks
serverchecksPython 3 module for fast, parallel execution of health checks on a broad range
of popular Internet infrastructure protocols with multi-protocol alerting capabilities.
Implemented in pure Python (no shell commands called) usingasynciolibrary.InstallThe module comes in a number of flavours that provide additional features using
third-party Python libraries.FlavorFeaturesInstallCoreChecks: TCP, DNS (basic), TLS, URL, POP3, SMTP, IMAP. Alerts: console ,SMTPpip3 install serverchecksDNSChecks: DNS (full)pip3 install serverchecks[dns]DNSSECChecks: DNSSEC, DNS (full)pip3 install serverchecks[dnssec]XMPPAlerts: XMPPpip3 install serverchecks[xmpp]TelegramAlerts: Telegrampip3 install serverchecks[telegram]MatrixAlerts: Matrixpip3 install serverchecks[matrix]Shortcut to install all flavors:pip3 install serverchecks[dnssec,xmpp,telegram,matrix]UsageCreate a basic configuration filechecks.yaml:verbose:yesalert_mode:alwaysalerts:console:-dummy:checks:basicdns:-fqdn:webcookies.org-fqdn:ipsec.plRun:python -m serverchecks.main test.yamlSample output:$ python -m serverchecks.main test.yaml

Initialized alert class <Console>
2 tests completed in 0.03 seconds, 2 successful, 0 failed
✓ webcookies.org 94.130.162.156
✓ ipsec.pl 98.143.148.71
Package: server-connector
server_connectorA simple tool for developers to perform operations on server with just a few line of codes.installpip i server_connectorUsageBefore you perform operations on server, you need to initialize aServerConnector object:fromserver_connectorimportserverserver_info={"ip":"your server ip","username":"xxx","password":"xxx"}sc=server.ServerConnector(server_info)File operationsuploadFile(localPath, remotePath)Upload a file from client to server.sc.uploadFile("./xxx.txt","/<directory>/xxx.txt")Directory will be created recursively if it does not exist on server.downloadFile(remotePath, localPath)Download a file from server to client.sc.downloadFile("/<directory>/xxx.txt","./xxx.txt")deleteFile(remotePath)Delete a file from server.sc.downloadFile("/path/to/your/file")Directory operationsuploadDir(localPath, remotePath)Upload a directory from client to server.sc.uploadDir("./xxx","/<directory>")The xxx directory will be uploaded to/<directory>/xxxon server.downloadDir(remotePath, localPath)Download a directory from server to client.sc.downloadDir("/<directory>/xxx","./")deleteDir(remotePath)Delete a directory from server.sc.deleteDir("/path/to/your/directory")
Package: servercraft
#ServerCraftFeng Zhang (jumphone@163.com)python2.7 and django1.8.7Github:https://github.com/jumphone/servercraft###Preparations:pip install servercraft###Step1: Write a python file: demo.py.from servercraft import *server_dir = “./”server_name = “server_center”app_name = ‘app1’build_server(server_dir, server_name)add_app(server_dir ,app_name, server_name)###Step2: Type commands.python demo.pycd ./server_centersh run_server.sh###Step3: Check it!http://127.0.0.1:8000/app1/
Package: server-discovery
server-discoveryPython library for automatically finding your server(s) by port on the local networkInstallJust dopip install server-discoveryUsageOn the server side start the response mainloop with your chosen ports:importserver_discoveryserver_discovery.server_responseloop(7491,7492)The clients can then search for servers using those same ports, and devices will be returned in a generator as they are found:importserver_discoveryforserverinserver_discovery.search_for_servers(7491,7492):print(server)The server calls out on all available interfaces and the client gets the relevant address, so this still works when using multiple (virtual) networks (like when in a Docker container).What's returned?Servers are returned as ServerInfo objects (usesPydanticmodels) that include the ip address and persistent device id of the server, so the same server can be found even if the device's ip address changes.You can also pass a device name or the service version as optional info to be sent from the server.classServerInfo:ip_address:strdevice_id:intdevice_name:Optional[str]service_version:Optional[str]
Package: server-expects
Server-Expects is aServerpec-like matchers library for theExpectsassertion library. It provides matchers for testing server infrastructure.InstallationYou can install the last stable release from PyPI usingpiporeasy_install.$pipinstallserver-expectsAlso you can install the latest sources fromGithub.$pipinstall-egit+git://github.com/jaimegildesagredo/server-expects.git#egg=server-expectsUsageJust import theexpectcallable and the Server-Expects matchers and start writing assertions.fromexpectsimportexpectfromserver_expectsimport*expect('python').to(be_installed)MatchersTODOSpecsTo run the specs you should install the testing requirements and then runmamba.$pythonsetup.pydevelop$pipinstall-rtest-requirements.txt$mambaLicenseThe Server-Expects is released under theApache2 license.
Package: server-functions
abstract ServerTable of ContentsIntroductionInstallationGetting StartedDocumentationContactLicenseIntroductionInstallation ofabstract-serverTo installabstract_server, you can either use pip or manually set it up by cloning the repository:Using pip:pipinstallabstract-serverNote:abstract_serverrequires Python 3.6 or later. Ensure you meet this requirement before proceeding with the installation.Getting StartedHere is a basic example of usingabstract_server:Documentationabstract_serverconsists of the following Python files and their corresponding functionalities:1.response_handling.py:2.api_call.py:Sure, here's an exhaustivereadme.mdfor theapi_calls.pycomponent of theabstract_aimodule:api_calls.py- Abstract AI Moduleapi_calls.pyis a component of the Abstract AI module, designed to facilitate API calls to OpenAI's GPT-3 model. This module is intended to simplify the interaction with the GPT-3 API and handle responses in a structured manner.Table of ContentsOverviewInstallationUsageClasses and FunctionsPromptManagerhard_requestquick_requestExamplesContributingLicenseOverviewapi_calls.pyserves as a bridge between your application and the OpenAI GPT-3 API. It provides a convenient interface to send requests, manage responses, and control the behavior of the API calls. This module is highly customizable, allowing you to define prompts, instructions, and response handling logic.InstallationInstall the required Python packages:pipinstallopenaiSet your OpenAI API key as an environment variable. By default, the module looks for an environment variable namedOPENAI_API_KEYto authenticate API calls.UsageClasses and FunctionsPromptManager Classhard_request FunctionThehard_requestfunction sends a hard request to the OpenAI API with the provided parameters. It is a simplified way to make API calls.quick_request FunctionThequick_requestfunction sends a quick request to the OpenAI API with simple configurations and prints the result. It is a convenient shortcut for quick API interactions.ExamplesFor detailed examples and usage scenarios, refer to theexamplesdirectory in this repository. You'll find practical code samples demonstrating how to use theabstract_server.pymodule for various tasks.ContributingIf you'd like to contribute to the development of theabstract_servermodule or report issues, please refer to theContributing Guidelines.LicenseThis module is licensed under theMIT License, which means you are free to use and modify it as per the terms of the license. Make sure to review the license file for complete details.Feel free to useapi_calls.pyto enhance your interactions with OpenAI's GPT-3 model in your projects.3.endpoints.py:4.tokenization.pyContactShould you have any issues, suggestions or contributions, please feel free to create a new issue on ourGithub repository.Licenseabstract_serveris released under theMIT License.
Package: servergrimoire
.d8888b.
d88P  Y88b
Y88b.
 "Y888b.    .d88b.  888d888 888  888  .d88b.  888d888
    "Y88b. d8P  Y8b 888P"   888  888 d8P  Y8b 888P"
      "888 88888888 888     Y88  88P 88888888 888
Y88b  d88P Y8b.     888      Y8bd8P  Y8b.     888
 "Y8888P"   "Y8888  888       Y88P    "Y8888  888



 .d8888b.          d8b                        d8b
d88P  Y88b         Y8P                        Y8P
888    888
888        888d888 888 88888b.d88b.   .d88b.  888 888d888 .d88b.
888  88888 888P"   888 888 "888 "88b d88""88b 888 888P"  d8P  Y8b
888    888 888     888 888  888  888 888  888 888 888    88888888
Y88b  d88P 888     888 888  888  888 Y88..88P 888 888    Y8b.
 "Y8888P88 888     888 888  888  888  "Y88P"  888 888     "Y8888This module gives you some command to check URLs, domains, dns rocords and other things in an automatied way.All config and data are saved as dotfiles in your home directory and it works on Windows, Mac, and Linux systems granted
you have Python installed.CommandThis is a partial table of commands. For the complete one we suggest you to launch the --help commandCommandOptionExplanationservergrimoire --helpPrint the help of the programservergrimoire run--u, --cRun the command for the url describedservergrimoire add--uAdd the URL into the file for runningservergrimoire remove--uRemove the url from the file for runningservergrimoire stats--u,--cPrint the stats of the last run madeFor now we have the following commandsCommandWhat does it?ssl_checkCheck if the domain has a valid SSL certificatedns_lookupSave the DNS lookup for the domaindns_checkerMake a whois and save the domain expiration dayFilesServer Grimoire has two file to work with:A config file .servergrimoire/config.jsonA data file .servergrimoire/data.jsonThey are .json file if you want to edit them.
Package: serverhub
Server Hubpypi演示视频（B站）Server Hub 服务端 + 工具。Server Hub 服务器，在被监控机器上，收集信息，响应客户端查询。通过证书验证客户端身份。证书生成工具目前只支持 Linux 系统，和 Python 3（但是 python 2 可能也行，没测）安装直接使用 pip 安装pip install serverhub如果有问题可以使用 pypi 源pip install -i https://pypi.org/simple serverhub如果你没有 root 权限，可以添加--user参数即pip install serverhub --user或pip install -i https://pypi.org/simple serverhub--user`另外在某些比较旧版本系统上 pip 指向 pip2，所以需要使用 pip3 代替命令中的 pip使用启动监控服务器serverhub -s -c /home/user/.serverhub/server默认端口是 12345，可以使用-p参数指定端口。-c参数指定服务器使用的证书和密钥的路径，证书和密钥的名称应该相同，例如例子中，证书是 /home/user/.serverhub/server.crt，密钥是 /home/user/.serverhub/server.pem。生成根证书serverhub -r将要求从输入证书名称，默认是 ca可以使用-t指定存放证书的目录，默认是 ~/.serverhub可以使用-d指定证书有效期，默认是 365 天使用已有证书签发新证书serverhub -c  ~/.serverhub/ca可以使用-t指定存放证书的目录，默认是 ~/.serverhub可以使用-d指定证书有效期，默认是 365 天全部参数Usage: serverhub -r|-s|-c  [-p <port>] [-d <days>] [-t <target path>]
    -s                start server
    -p <port>         default is 12345
    -t <target dir>   
    -r                make a root cert
    -d <days>         default is 365
    -c <cert path>    make a cert for client, or used with -s to set cert path
Examples:
    serverhub -r
         make a root cert and pem to ~/.serverhub/, you can input a name for it by stdin
    serverhub -c  ~/.serverhub/ca
         make a cert signed with ~/.serverhub/ca.cert
    serverhub -s -p 8000 -c ~/.serverhub/server
         start server at 0.0.0.0:8000, use ~/.serverhub/server.cert and ~/.serverhub/server.pem-s启动服务器，必须使用-c指定证书、密钥的名称。证书、密钥必须同路径、同名，扩展名分别为 crt 和 pem-r生成根证书（自签名证书），可选参数-t、-d，执行命令后将从标准输入输入证书名。回生成两个文件，一个 crt 文件是证书，一个 pem 文件是密钥-c签名新证书，必须指定签名证书、密钥的名称。证书、密钥必须同路径、同名，扩展名分别为 crt 和 pem。可选参数-t、-d，执行命令后将从标准输入输入新证书名。会生成三个文件，一个 crt 文件是证书，一个 pem 文件是密钥（python 用），一个 java.pem 文件，是给 Android 使用的密钥。-p与-s一起使用，指定监听端口号，默认 12345-t与-r或者-c配合使用，用于指定新证书和密钥的存放路径-d与-r或者-c配合使用，用于指定新证书的有效期，一个整数，代表天数
Package: serverinfo
Server mointoring for CPU + GPUfromserverinfoimportsi# get cpu + gpu infosi.getAll()"""{'os': 'Linux', 'version': '6.2.0', 'ip': '192.168.1.179', 'arch': 'x86_64', 'cpu': {'cores': 16, 'threads': 32, 'max': 3400, 'min': 2200, 'current': 2, 'load': 0.3}, 'mem': {'total': 62.69, 'use': 5.86, 'free': 56.08, 'load': 10.5}, 'disk': {'total': 5767, 'use': 5668, 'free': 924, 'load': 98.28}, 'gpu': {'driver': '530.30.02', 'cuda': 12.1, 'gpus': 1, 'list': [{'name': 'NVIDIA GeForce RTX 4090', 'brand': 'GeForce', 'arch': 'Ada Lovelace', 'persist': True, 'display': True, 'total': 24564, 'use': 839, 'free': 23725, 'mem_load': 3.42, 'gpu_load': 2, 'fan_load': 0, 'temp': 41, 'temp_max': 90, 'power': 13, 'power_limit': 300, 'power_max': 450, 'gpu_clock': 1185, 'gpu_clock_max': 2415, 'mem_clock': 405, 'mem_clock_max': 10501}]}, 'python': '3.9.13'}"""#get gpu info (only works NVIDIA GPU)si.getGPU()"""{'driver': '530.30.02', 'cuda': 12.1, 'gpus': 1, 'list': [{'name': 'NVIDIA GeForce RTX 4090', 'brand': 'GeForce', 'arch': 'Ada Lovelace', 'persist': True, 'display': True, 'total': 24564, 'use': 839, 'free': 23725, 'mem_load': 3.42, 'gpu_load': 1, 'fan_load': 0, 'temp': 41, 'temp_max': 90, 'power': 13, 'power_limit': 300, 'power_max': 450, 'gpu_clock': 1185, 'gpu_clock_max': 2415, 'mem_clock': 405, 'mem_clock_max': 10501}]}"""# get cpu infosi.getCPU()"""{'cores': 16, 'threads': 32, 'max': 3400, 'min': 2200, 'current': 2, 'load': 0.4}"""# get memory infosi.getMem()"""{'total': 62.69, 'use': 5.86, 'free': 56.07, 'load': 10.6}"""# get disk infosi.getDisk()"""{'total': 5767, 'use': 5668, 'free': 924, 'load': 98.28 ... }"""# get ipsi.getIP()"""192.168.0.1"""
Package: serverish
serverish - helpers for server alike projectsFeaturesComponent managementSingletonsConnections management and diagnosticsNATS based MessengerSeedocdirectoryfor more documentation.Optional (extras) dependenciesIn order to use Messenger, you have to add extra 'messenger' to yourproject.tomlserveris dependency, e.g.:serverish={git="https://github.com/AkondLab/serverish.git",extras=["messenger"],branch="master"}or specify dpendency with extras in thepipconvention:serverish[messenger].
this will installnats-pypackage.PlansDecorators@messenger.sub(subject)(Web framework style)Progress with automatic increment for known durations e.g.pro_pub.update(completed=1, when=+20)Pytest fixtures for NATS on CIChanges1.0  Changes NATS subscriptions to pull only0.12 Extends messges metdata ofnatssection, Handles reconnection of subscriptions,0.11 Extends, tasks, NATS connection tracking and messenger opening options (Messenger.open)0.10 Adds timestamp to journal messages and extablishes schema for journal messages.0.9.1 Makes dependency to aiodns optional.0.9.0 Introduces Logging handler for passing standard logging messages to the Messenger.0.8 Introduces journal publishing/reading API.0.7 Includes progress tracking messages in the Messenger API.0.6 introduces breaking changes in the Messenger API:Convenience functionsget_xxxxx()returning publishers/readers are synchronous now. Removeawait-ing for their results.Change of signature of the callback forMsgRpcResponder.register_functionforRpc->None.CreditsThis package uses some code and ideas from therichpackage (Copyright (c) 2020 Will McGugan).
Package: serverjars-api
serverjars-apiThe unofficial Python wrapper forserverjars.comInstallationInstall the module with pip:pip3 install serverjars-apiUpdate existing installation:pip3 install serverjars-api --upgradeCode Examples:Fetching the latest jar:importserverjarslatest=serverjars.fetchLatest('vanilla')print(latest)Fetching all the Jars:importserverjarsallJars=serverjars.fetchAll('paper')print(allJars)Fetching types:importserverjarstypes=serverjars.fetchTypes()print(types)Fetching subtypes:importserverjarssubtypes=serverjars.fetchTypes('bedrock')print(subtypes)Downloading Jars:importserverjarsdefon_finish(jar):print('Downloaded',jar)serverjars.downloadJar('snapshot',finishcommand=on_finish)
Package: serverless-aws-lambda-sdk
serverless-aws-lambda-sdkAWS LambdaServerless ConsoleSDK for PythonInstruments AWS Lambda functions, propagates traces to theServerless Consoleand exposes Serverless SDK to the function logic.Setup1. Register withServerless Console2. InServerless Consoleturn on integration for your AWS account and chosen Lambdas3. (optionally) Fine tune default instrumentation behavior with following optionsSLS_DISABLE_HTTP_MONITORING(ordisable_http_monitoring)Disable tracing of HTTP and HTTPS requestsSLS_DISABLE_REQUEST_RESPONSE_MONITORING(ordisable_request_response_monitoring)(Dev mode only) Disable monitoring requests and reponses (function, AWS SDK requests and HTTP(S) requests)SLS_DISABLE_AWS_SDK_MONITORING(ordisable_aws_sdk_monitoring)Disable automated AWS SDK monitoringSLS_DISABLE_FLASK_MONITORING(ordisable_flask_monitoring)Disable automated flask monitoringInstrumentationAWS Lambda SDK automatically createsaws.lambda,aws.lambda.initializationandaws.lambda.invocationtrace spans.
For more details seeSDK Trace spans documentationAdditionally automatic instrumentation (with caveats) is provided for:HTTP(s) requestsFlask appAWS SDK requestsSDK APIserverlessSdk
Package: serverless-builder
serverless-builderPython interface to easily generateserverless.ymlfile.To read more about features, visit📜 our documentation.Installationpipinstallserverless-builderFeaturesplugin managementwith autoconfigurationfunction factorywith some best practice hintsautoconfiguration of some provider specific features like AWS X-Rayeasy resource manipulation withtroposphere lib(but if you want you can use old good dict)easier IAM management with predefined permission setsbuilt-in support for any serverless attributesintegration withaws lambda powertoolsExample of usefromserverless.aws.functions.event_bridgeimportRetryPolicyfromserverless.aws.functions.httpimportHTTPFunctionfromserverlessimportServicefromserverless.providerimportAWSProviderfromserverless.aws.featuresimportXRayfromserverless.aws.iam.dynamodbimportDynamoDBReaderfromserverless.pluginsimportComposedVars,PythonRequirements,Prunefromtroposphere.dynamodbimportTable,AttributeDefinition,KeySchemaservice=Service("service-name","some dummy service",AWSProvider())service.plugins.add(ComposedVars())service.plugins.add(Prune())service.plugins.add(PythonRequirements())table=Table("TestTable",BillingMode="PAY_PER_REQUEST",AttributeDefinitions=[AttributeDefinition(AttributeName="name",AttributeType="S")],KeySchema=[KeySchema(AttributeName="name",KeyType="HASH")])service.enable(XRay())service.provider.iam.apply(DynamoDBReader(table))service.builder.function.generic("test","description")service.builder.function.http("test","description","/",HTTPFunction.POST)# Multiple events with different paths and/or methods can be set up for the same handler# This will add the same handler to all of these: POST /, POST /alias, PUT /, PUT /aliasservice.builder.function.http("test","description",["/","/alias"],["POST","PUT"],handler="shared.handler")# Context with pre-defined setupwithservice.preset(layers=[{"Ref":"PythonRequirementsLambdaLayer"}],handler="test.handlers.custom_handler.handle")asp:p.http_get("test-list","List all tests","/")p.http_get("test-get","Get one test","/{test_id}")event_bridge_function=service.builder.function.event_bridge("event_bridge_function","sample event bridge function","epsy",{"source":["saas.external"]},)event_bridge_function.use_delivery_dlq(RetryPolicy(5,300))event_bridge_function.use_async_dlq()service.resources.add(table)service.render()New version release processUpdate the version in pyproject.toml# increase the version number as per SemVer standards
version = "2.13.17"Once ready to publish, create a newgithub releaseits a good practice to match the tag with the version number as in pyproject.tomlSelectset as latest releasecheckboxClickPublish Releasebutton.Once published, it will trigger thereleasegh wf and publish the latest package to PyPi.
Package: serverless-discovery-sdk
serverless-discovery-sdk-pythonThe last serverless micro-service you'll ever wonder how to findThe AWS Serverless Discovery SDK interacts with a discovery microservice to discover endpoints for micro-services written for a serverless architecture. This is similar to clustered services such asConsulorZooKeeper, but without the concept of instances or nodes that must be monitored for online state. This library is designed to support use both on the server side (for service-to-service lookups) and on the browser/client side.This project contains the Python bindings for the discovery service; Other bindings can be found in theAdAstraDevorganization on GitHubInstallationpython3-mpipinstallserverless-discovery-sdkUsagePythonfromserverless_discovery_sdkimportDiscoverySdksdk=DiscoverySdk('https://abcdefghij.execute-api.us-east-1.amazonaws.com/prod')endpoints=sdk.lookupService('my-service','dev')
Package: serverless-env-yml-parser
serverless.env.yml ParserDescriptionA package to extract environmental variables from serverless.env.yml for local development.Where to get itThe source code is currently hosted on GitHub at:https://github.com/e-ndrus/sls-env-yml-parserLicenseMITContributionsAll contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome.Issues are posted on:https://github.com/e-ndrus/sls-env-yml-parser/issues
Package: serverless-event-mocks
Serverless Event MocksA small Python library that includes detail mocks of Serverless function events. Useful when unit testing your Serverless functions.Supported Providers and Event Types:AWS:awsAPI Gateway:api_gatewayThis library simply uses default event source mock templates and merges them with any overwrite you provide.Check out the JSON template filesto learn more about the data structure of each event source.Quick Start - Install viapippipinstallserverless-event-mocksUsageAPI Gatewayfromserverless_event_mocksimportcreate_eventevent=create_event(provider='aws',event_type='api_gateway',event_payload={"body":{"first_name":"Sam","last_name":"Smith"}})Run Tests and Linter# Run unit testsmaketest# Run Flake8 lintermakelint
Package: serverless-flask
serverless-flaskpip package for flask framework with serverless frameworkCompatibilityThis is tested with Python3.6 and Flask 0.11.2, 1.0.0, 1.0.2InstallationCommand to installpip install serverless-flaskUsageDefineloggerandmiddlewareannotation like below,you can throw application log (Now logging level is only DEBUG) and add your custom middleware you define.※ ) There is one thing to note. The order you annote should beapp.route,loggerandmiddlewarefrom the top. If you change this order flask throw Exception. (in the future we wanna modify this restriction)from serverless_flask.interceptor import Interceptor as interceptor

@app.route('/v.1.0/hoge', methods=['POST'])
@interceptor.logger
@interceptor.middleware(func1)
@interceptor.middleware(func2)
def test(*args, **kwargs):
    return jsonify({
            "message": "ok"
        })As you can see in the below code, your custom middleware should have request parameter (but you don't have to use it.).These functions must return the values with type of dict, list or tuple, otherwise Exception will be thrown.from flask import request

def func1(req: request):
    return {'key': "value"}

def func2(req: request):
    return ['val1', 'val2']LinksWebsite: coming soonCode:https://github.com/Queue-inc/serverless-flaskCompany Page:http://www.queue-inc.com
Package: serverless_helpers
## serverless_helpersThis library isn't *required* for writing Python in the [serverless][sls], butit does make your life easier by handling things like environment variables foryou.## Usage```import serverless_helpers# all .env files are loaded into the environmentserverless_helpers.load_envs(__file__)# Loads stack outputs into environment variables as `SERVERLESS_CF_[output name]`serverless_helpers.load_cfn_outputs()import osos.getenv('SERVERLESS_STAGE') # dev# get role ARN from default serverless CloudFormation stackos.getenv('SERVERLESS_CF_IamRoleArnLambda') # arn:aws:iam::123456789012:....# alternate way to read rolesoutputs = serverless_helpers.load_cfn_outputs()outputs['IamRoleArnLambda'] # arn:aws:iam::123456789012:....```## LicenseThis code is released under the MIT software license, see LICENSE file fordetails. No warranty of any kind is included, and the copyright notice must beincluded in redistributions.*Notable exception*: `dotenv.py` is from[python-dotenv](https://github.com/theskumar/python-dotenv) to removedependencies on click and ordereddict for performance/deployment size reasons.Read the license contained in `dotenv.py` for details on its creators andlicense conditions.[sls]: http://serverless.com/