From 992ea3e426bed22df5dbbe0408e4a5075a145c9a Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Tue, 1 Oct 2024 08:24:24 -0500 Subject: [PATCH] Set numpy and pandas to be compatible --- dapi/auth/auth.py | 6 ++ docs/dapi/auth/auth.html | 110 ++++++++++++++----------- docs/search.js | 2 +- poetry.lock | 174 ++++++++++++++++----------------------- pyproject.toml | 4 +- 5 files changed, 145 insertions(+), 151 deletions(-) diff --git a/dapi/auth/auth.py b/dapi/auth/auth.py index 42d2470..eb1d67f 100644 --- a/dapi/auth/auth.py +++ b/dapi/auth/auth.py @@ -10,6 +10,12 @@ def init(): Tries to read credentials from environment variables first. If not found, prompts the user for input. + Save the user credentials in the .env file. + ``` + DESIGNSAFE_USERNAME= + DESIGNSAFE_PASSWORD= + ``` + Returns: object: The authenticated Tapis object. """ diff --git a/docs/dapi/auth/auth.html b/docs/dapi/auth/auth.html index 2e5fd8e..3f05c87 100644 --- a/docs/dapi/auth/auth.html +++ b/docs/dapi/auth/auth.html @@ -66,30 +66,36 @@

10 Tries to read credentials from environment variables first. 11 If not found, prompts the user for input. 12 -13 Returns: -14 object: The authenticated Tapis object. -15 """ -16 base_url = "https://designsafe.tapis.io" -17 -18 # Load environment variables from .env file -19 load_dotenv() -20 -21 # Try to get credentials from environment variables -22 username = os.getenv("DESIGNSAFE_USERNAME") -23 password = os.getenv("DESIGNSAFE_PASSWORD") -24 -25 # If environment variables are not set, prompt user for input -26 if not username: -27 username = input("Enter username: ") -28 if not password: -29 password = getpass("Enter password: ") +13 Save the user credentials in the .env file. +14 ``` +15 DESIGNSAFE_USERNAME=<username> +16 DESIGNSAFE_PASSWORD=<password> +17 ``` +18 +19 Returns: +20 object: The authenticated Tapis object. +21 """ +22 base_url = "https://designsafe.tapis.io" +23 +24 # Load environment variables from .env file +25 load_dotenv() +26 +27 # Try to get credentials from environment variables +28 username = os.getenv("DESIGNSAFE_USERNAME") +29 password = os.getenv("DESIGNSAFE_PASSWORD") 30 -31 # Initialize Tapis object -32 t = Tapis(base_url=base_url, username=username, password=password) -33 -34 t.get_tokens() -35 -36 return t +31 # If environment variables are not set, prompt user for input +32 if not username: +33 username = input("Enter username: ") +34 if not password: +35 password = getpass("Enter password: ") +36 +37 # Initialize Tapis object +38 t = Tapis(base_url=base_url, username=username, password=password) +39 +40 t.get_tokens() +41 +42 return t @@ -111,30 +117,36 @@

11 Tries to read credentials from environment variables first. 12 If not found, prompts the user for input. 13 -14 Returns: -15 object: The authenticated Tapis object. -16 """ -17 base_url = "https://designsafe.tapis.io" -18 -19 # Load environment variables from .env file -20 load_dotenv() -21 -22 # Try to get credentials from environment variables -23 username = os.getenv("DESIGNSAFE_USERNAME") -24 password = os.getenv("DESIGNSAFE_PASSWORD") -25 -26 # If environment variables are not set, prompt user for input -27 if not username: -28 username = input("Enter username: ") -29 if not password: -30 password = getpass("Enter password: ") +14 Save the user credentials in the .env file. +15 ``` +16 DESIGNSAFE_USERNAME=<username> +17 DESIGNSAFE_PASSWORD=<password> +18 ``` +19 +20 Returns: +21 object: The authenticated Tapis object. +22 """ +23 base_url = "https://designsafe.tapis.io" +24 +25 # Load environment variables from .env file +26 load_dotenv() +27 +28 # Try to get credentials from environment variables +29 username = os.getenv("DESIGNSAFE_USERNAME") +30 password = os.getenv("DESIGNSAFE_PASSWORD") 31 -32 # Initialize Tapis object -33 t = Tapis(base_url=base_url, username=username, password=password) -34 -35 t.get_tokens() -36 -37 return t +32 # If environment variables are not set, prompt user for input +33 if not username: +34 username = input("Enter username: ") +35 if not password: +36 password = getpass("Enter password: ") +37 +38 # Initialize Tapis object +39 t = Tapis(base_url=base_url, username=username, password=password) +40 +41 t.get_tokens() +42 +43 return t @@ -142,6 +154,12 @@

Tries to read credentials from environment variables first. If not found, prompts the user for input.

+

Save the user credentials in the .env file.

+ +
DESIGNSAFE_USERNAME=<username>
+DESIGNSAFE_PASSWORD=<password>
+
+

Returns: object: The authenticated Tapis object.

diff --git a/docs/search.js b/docs/search.js index 0706b2b..273fa56 100644 --- a/docs/search.js +++ b/docs/search.js @@ -1,6 +1,6 @@ window.pdocSearch = (function(){ /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();odapi` is a library that simplifies the process of submitting, running, and monitoring TAPIS v3 jobs on DesignSafe via Jupyter Notebooks.

\n\n

Features

\n\n

Jobs

\n\n
    \n
  • Get TAPIS v3 templates for jobs: No need to fiddle with complex API requests. dapi abstracts away the complexities.

  • \n
  • Seamless Integration with DesignSafe Jupyter Notebooks: Launch DesignSafe applications directly from the Jupyter environment.

  • \n
\n\n

Database

\n\n

Connects to SQL databases on DesignSafe:

\n\n\n\n\n \n \n \n\n\n\n\n \n \n\n\n \n \n \n\n\n \n \n \n\n\n
Databasedbnameenv_prefix
NGLngl| NGL_
Earthake RecoveryeqEQ_
VpvpVP_
\n\n

Define the following environment variables:

\n\n
{env_prefix}DB_USER\n{env_prefix}DB_PASSWORD\n{env_prefix}DB_HOST\n{env_prefix}DB_PORT\n
\n\n

For e.g., to add the environment variable NGL_DB_USER edit ~/.bashrc, ~/.zshrc, or a similar shell-specific configuration file for the current user and add export NGL_DB_USER=\"dspublic\".

\n\n

Installation

\n\n
\n
pip3 install dapi\n
\n
\n"}, {"fullname": "dapi.auth", "modulename": "dapi.auth", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.auth.auth", "modulename": "dapi.auth.auth", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.auth.auth.init", "modulename": "dapi.auth.auth", "qualname": "init", "kind": "function", "doc": "

Initialize a Tapis object with authentication.\nTries to read credentials from environment variables first.\nIf not found, prompts the user for input.

\n\n

Returns:\n object: The authenticated Tapis object.

\n", "signature": "():", "funcdef": "def"}, {"fullname": "dapi.db", "modulename": "dapi.db", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.db.name", "modulename": "dapi.db", "qualname": "name", "kind": "variable", "doc": "

\n", "default_value": "'designsafe_db'"}, {"fullname": "dapi.db.config", "modulename": "dapi.db.config", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.db.config.db_config", "modulename": "dapi.db.config", "qualname": "db_config", "kind": "variable", "doc": "

\n", "default_value": "{'ngl': {'dbname': 'sjbrande_ngl_db', 'env_prefix': 'NGL_'}, 'vp': {'dbname': 'sjbrande_vpdb', 'env_prefix': 'VP_'}, 'eq': {'dbname': 'post_earthquake_recovery', 'env_prefix': 'EQ_'}}"}, {"fullname": "dapi.db.db", "modulename": "dapi.db.db", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase", "modulename": "dapi.db.db", "qualname": "DSDatabase", "kind": "class", "doc": "

A database utility class for connecting to a DesignSafe SQL database.

\n\n

This class provides functionality to connect to a MySQL database using\nSQLAlchemy and PyMySQL. It supports executing SQL queries and returning\nresults in different formats.

\n\n

Attributes:\n user (str): Database username, defaults to 'dspublic'.\n password (str): Database password, defaults to 'R3ad0nlY'.\n host (str): Database host address, defaults to '129.114.52.174'.\n port (int): Database port, defaults to 3306.\n db (str): Database name, can be 'sjbrande_ngl_db', 'sjbrande_vpdb', or 'post_earthquake_recovery'.\n recycle_time (int): Time in seconds to recycle database connections.\n engine (Engine): SQLAlchemy engine for database connection.\n Session (sessionmaker): SQLAlchemy session maker bound to the engine.

\n"}, {"fullname": "dapi.db.db.DSDatabase.__init__", "modulename": "dapi.db.db", "qualname": "DSDatabase.__init__", "kind": "function", "doc": "

Initializes the DSDatabase instance with environment variables and creates the database engine.

\n\n

Args:\n dbname (str): Shorthand for the database name. Must be one of 'ngl', 'vp', or 'eq'.

\n", "signature": "(dbname='ngl')"}, {"fullname": "dapi.db.db.DSDatabase.user", "modulename": "dapi.db.db", "qualname": "DSDatabase.user", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.password", "modulename": "dapi.db.db", "qualname": "DSDatabase.password", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.host", "modulename": "dapi.db.db", "qualname": "DSDatabase.host", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.port", "modulename": "dapi.db.db", "qualname": "DSDatabase.port", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.db", "modulename": "dapi.db.db", "qualname": "DSDatabase.db", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.engine", "modulename": "dapi.db.db", "qualname": "DSDatabase.engine", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.Session", "modulename": "dapi.db.db", "qualname": "DSDatabase.Session", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.read_sql", "modulename": "dapi.db.db", "qualname": "DSDatabase.read_sql", "kind": "function", "doc": "

Executes a SQL query and returns the results.

\n\n

Args:\n sql (str): The SQL query string to be executed.\n output_type (str, optional): The format for the query results. Defaults to 'DataFrame'.\n Possible values are 'DataFrame' for a pandas DataFrame, or 'dict' for a list of dictionaries.

\n\n

Returns:\n pandas.DataFrame or list of dict: The result of the SQL query.

\n\n

Raises:\n ValueError: If the SQL query string is empty or if the output type is not valid.\n SQLAlchemyError: If an error occurs during query execution.

\n", "signature": "(self, sql, output_type='DataFrame'):", "funcdef": "def"}, {"fullname": "dapi.db.db.DSDatabase.close", "modulename": "dapi.db.db", "qualname": "DSDatabase.close", "kind": "function", "doc": "

Close the database connection.

\n", "signature": "(self):", "funcdef": "def"}, {"fullname": "dapi.jobs", "modulename": "dapi.jobs", "kind": "module", "doc": "

dapi job submodule simplifies the process of submitting, running, and monitoring Tapis v3 jobs on DesignSafe via Jupyter Notebooks.

\n\n

Features

\n\n
    \n
  • Simplified TAPIS v3 Calls: No need to fiddle with complex API requests. dapi abstracts away the complexities.

  • \n
  • Seamless Integration with DesignSafe Jupyter Notebooks: Launch DesignSafe applications directly from the Jupyter environment.

  • \n
\n\n

Installation

\n\n
\n
pip3 install dapi\n
\n
\n"}, {"fullname": "dapi.jobs.dir", "modulename": "dapi.jobs.dir", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.jobs.dir.get_ds_path_uri", "modulename": "dapi.jobs.dir", "qualname": "get_ds_path_uri", "kind": "function", "doc": "

Given a path on DesignSafe, determine the correct input URI for Tapis v3.

\n\n

Args:\nt (Tapis): Tapis object to fetch profiles or metadata.\npath (str): The directory path.

\n\n

Returns:\nstr: The corresponding input URI.

\n\n

Raises:\nValueError: If no matching directory pattern is found.

\n", "signature": "(t: tapipy.tapis.Tapis, path: str) -> str:", "funcdef": "def"}, {"fullname": "dapi.jobs.jobs", "modulename": "dapi.jobs.jobs", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.jobs.jobs.generate_job_info", "modulename": "dapi.jobs.jobs", "qualname": "generate_job_info", "kind": "function", "doc": "

Generates a job info dictionary based on the provided application name, job name, input URI, input file, and optional allocation.

\n\n

Args:\n t (object): The Tapis API client object.\n app_name (str): The name of the application to use for the job.\n input_uri (str): The URI of the input data for the job.\n input_file (str): The local file path to the input data for the job.\n job_name (str, optional): The name of the job to be created. Defaults to None.\n max_minutes (int, optional): The maximum number of minutes the job can run. Defaults to None.\n node_count (int, optional): The number of nodes to use for the job. Defaults to None.\n cores_per_node (int, optional): The number of cores per node for the job. Defaults to None.\n queue (str, optional): The queue to use for the job. Defaults to None.\n allocation (str, optional): The allocation to use for the job. Defaults to None.

\n\n

Returns:\n dict: The job info dictionary.

\n", "signature": "(\tt: Any,\tapp_name: str,\tinput_uri: str,\tinput_file: str,\tjob_name: str = None,\tmax_minutes: Optional[int] = None,\tnode_count: Optional[int] = None,\tcores_per_node: Optional[int] = None,\tqueue: Optional[str] = None,\tallocation: Optional[str] = None) -> Dict[str, Any]:", "funcdef": "def"}, {"fullname": "dapi.jobs.jobs.get_status", "modulename": "dapi.jobs.jobs", "qualname": "get_status", "kind": "function", "doc": "

Retrieves and monitors the status of a job using Tapis API.\nThis function waits for the job to start, then monitors it for up to maxMinutes.

\n\n

Args:\nt (object): The Tapis API client object.\nmjobUuid (str): The unique identifier of the job to monitor.\ntlapse (int, optional): Time interval, in seconds, to wait between status checks. Defaults to 15 seconds.

\n\n

Returns:\nstr: The final status of the job (FINISHED, FAILED, or STOPPED).

\n", "signature": "(t, mjobUuid, tlapse=15):", "funcdef": "def"}, {"fullname": "dapi.jobs.jobs.runtime_summary", "modulename": "dapi.jobs.jobs", "qualname": "runtime_summary", "kind": "function", "doc": "

Get the runtime of a job.\nArgs:\nt (object): The Tapis v3 client object.\njob_uuid (str): The UUID of the job for which the runtime needs to be determined.\nverbose (bool): If True, prints all history events. Otherwise, prints only specific statuses.\nReturns:\nNone: This function doesn't return a value, but it prints the runtime details.

\n", "signature": "(t, job_uuid, verbose=False):", "funcdef": "def"}]; + /** pdoc search index */const docs = [{"fullname": "dapi", "modulename": "dapi", "kind": "module", "doc": "

dapi` is a library that simplifies the process of submitting, running, and monitoring TAPIS v3 jobs on DesignSafe via Jupyter Notebooks.

\n\n

Features

\n\n

Jobs

\n\n
    \n
  • Get TAPIS v3 templates for jobs: No need to fiddle with complex API requests. dapi abstracts away the complexities.

  • \n
  • Seamless Integration with DesignSafe Jupyter Notebooks: Launch DesignSafe applications directly from the Jupyter environment.

  • \n
\n\n

Database

\n\n

Connects to SQL databases on DesignSafe:

\n\n\n\n\n \n \n \n\n\n\n\n \n \n\n\n \n \n \n\n\n \n \n \n\n\n
Databasedbnameenv_prefix
NGLngl| NGL_
Earthake RecoveryeqEQ_
VpvpVP_
\n\n

Define the following environment variables:

\n\n
{env_prefix}DB_USER\n{env_prefix}DB_PASSWORD\n{env_prefix}DB_HOST\n{env_prefix}DB_PORT\n
\n\n

For e.g., to add the environment variable NGL_DB_USER edit ~/.bashrc, ~/.zshrc, or a similar shell-specific configuration file for the current user and add export NGL_DB_USER=\"dspublic\".

\n\n

Installation

\n\n
\n
pip3 install dapi\n
\n
\n"}, {"fullname": "dapi.auth", "modulename": "dapi.auth", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.auth.auth", "modulename": "dapi.auth.auth", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.auth.auth.init", "modulename": "dapi.auth.auth", "qualname": "init", "kind": "function", "doc": "

Initialize a Tapis object with authentication.\nTries to read credentials from environment variables first.\nIf not found, prompts the user for input.

\n\n

Save the user credentials in the .env file.

\n\n
DESIGNSAFE_USERNAME=<username>\nDESIGNSAFE_PASSWORD=<password>\n
\n\n

Returns:\n object: The authenticated Tapis object.

\n", "signature": "():", "funcdef": "def"}, {"fullname": "dapi.db", "modulename": "dapi.db", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.db.name", "modulename": "dapi.db", "qualname": "name", "kind": "variable", "doc": "

\n", "default_value": "'designsafe_db'"}, {"fullname": "dapi.db.config", "modulename": "dapi.db.config", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.db.config.db_config", "modulename": "dapi.db.config", "qualname": "db_config", "kind": "variable", "doc": "

\n", "default_value": "{'ngl': {'dbname': 'sjbrande_ngl_db', 'env_prefix': 'NGL_'}, 'vp': {'dbname': 'sjbrande_vpdb', 'env_prefix': 'VP_'}, 'eq': {'dbname': 'post_earthquake_recovery', 'env_prefix': 'EQ_'}}"}, {"fullname": "dapi.db.db", "modulename": "dapi.db.db", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase", "modulename": "dapi.db.db", "qualname": "DSDatabase", "kind": "class", "doc": "

A database utility class for connecting to a DesignSafe SQL database.

\n\n

This class provides functionality to connect to a MySQL database using\nSQLAlchemy and PyMySQL. It supports executing SQL queries and returning\nresults in different formats.

\n\n

Attributes:\n user (str): Database username, defaults to 'dspublic'.\n password (str): Database password, defaults to 'R3ad0nlY'.\n host (str): Database host address, defaults to '129.114.52.174'.\n port (int): Database port, defaults to 3306.\n db (str): Database name, can be 'sjbrande_ngl_db', 'sjbrande_vpdb', or 'post_earthquake_recovery'.\n recycle_time (int): Time in seconds to recycle database connections.\n engine (Engine): SQLAlchemy engine for database connection.\n Session (sessionmaker): SQLAlchemy session maker bound to the engine.

\n"}, {"fullname": "dapi.db.db.DSDatabase.__init__", "modulename": "dapi.db.db", "qualname": "DSDatabase.__init__", "kind": "function", "doc": "

Initializes the DSDatabase instance with environment variables and creates the database engine.

\n\n

Args:\n dbname (str): Shorthand for the database name. Must be one of 'ngl', 'vp', or 'eq'.

\n", "signature": "(dbname='ngl')"}, {"fullname": "dapi.db.db.DSDatabase.user", "modulename": "dapi.db.db", "qualname": "DSDatabase.user", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.password", "modulename": "dapi.db.db", "qualname": "DSDatabase.password", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.host", "modulename": "dapi.db.db", "qualname": "DSDatabase.host", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.port", "modulename": "dapi.db.db", "qualname": "DSDatabase.port", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.db", "modulename": "dapi.db.db", "qualname": "DSDatabase.db", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.engine", "modulename": "dapi.db.db", "qualname": "DSDatabase.engine", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.Session", "modulename": "dapi.db.db", "qualname": "DSDatabase.Session", "kind": "variable", "doc": "

\n"}, {"fullname": "dapi.db.db.DSDatabase.read_sql", "modulename": "dapi.db.db", "qualname": "DSDatabase.read_sql", "kind": "function", "doc": "

Executes a SQL query and returns the results.

\n\n

Args:\n sql (str): The SQL query string to be executed.\n output_type (str, optional): The format for the query results. Defaults to 'DataFrame'.\n Possible values are 'DataFrame' for a pandas DataFrame, or 'dict' for a list of dictionaries.

\n\n

Returns:\n pandas.DataFrame or list of dict: The result of the SQL query.

\n\n

Raises:\n ValueError: If the SQL query string is empty or if the output type is not valid.\n SQLAlchemyError: If an error occurs during query execution.

\n", "signature": "(self, sql, output_type='DataFrame'):", "funcdef": "def"}, {"fullname": "dapi.db.db.DSDatabase.close", "modulename": "dapi.db.db", "qualname": "DSDatabase.close", "kind": "function", "doc": "

Close the database connection.

\n", "signature": "(self):", "funcdef": "def"}, {"fullname": "dapi.jobs", "modulename": "dapi.jobs", "kind": "module", "doc": "

dapi job submodule simplifies the process of submitting, running, and monitoring Tapis v3 jobs on DesignSafe via Jupyter Notebooks.

\n\n

Features

\n\n
    \n
  • Simplified TAPIS v3 Calls: No need to fiddle with complex API requests. dapi abstracts away the complexities.

  • \n
  • Seamless Integration with DesignSafe Jupyter Notebooks: Launch DesignSafe applications directly from the Jupyter environment.

  • \n
\n\n

Installation

\n\n
\n
pip3 install dapi\n
\n
\n"}, {"fullname": "dapi.jobs.dir", "modulename": "dapi.jobs.dir", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.jobs.dir.get_ds_path_uri", "modulename": "dapi.jobs.dir", "qualname": "get_ds_path_uri", "kind": "function", "doc": "

Given a path on DesignSafe, determine the correct input URI for Tapis v3.

\n\n

Args:\nt (Tapis): Tapis object to fetch profiles or metadata.\npath (str): The directory path.

\n\n

Returns:\nstr: The corresponding input URI.

\n\n

Raises:\nValueError: If no matching directory pattern is found.

\n", "signature": "(t: tapipy.tapis.Tapis, path: str) -> str:", "funcdef": "def"}, {"fullname": "dapi.jobs.jobs", "modulename": "dapi.jobs.jobs", "kind": "module", "doc": "

\n"}, {"fullname": "dapi.jobs.jobs.generate_job_info", "modulename": "dapi.jobs.jobs", "qualname": "generate_job_info", "kind": "function", "doc": "

Generates a job info dictionary based on the provided application name, job name, input URI, input file, and optional allocation.

\n\n

Args:\n t (object): The Tapis API client object.\n app_name (str): The name of the application to use for the job.\n input_uri (str): The URI of the input data for the job.\n input_file (str): The local file path to the input data for the job.\n job_name (str, optional): The name of the job to be created. Defaults to None.\n max_minutes (int, optional): The maximum number of minutes the job can run. Defaults to None.\n node_count (int, optional): The number of nodes to use for the job. Defaults to None.\n cores_per_node (int, optional): The number of cores per node for the job. Defaults to None.\n queue (str, optional): The queue to use for the job. Defaults to None.\n allocation (str, optional): The allocation to use for the job. Defaults to None.

\n\n

Returns:\n dict: The job info dictionary.

\n", "signature": "(\tt: Any,\tapp_name: str,\tinput_uri: str,\tinput_file: str,\tjob_name: str = None,\tmax_minutes: Optional[int] = None,\tnode_count: Optional[int] = None,\tcores_per_node: Optional[int] = None,\tqueue: Optional[str] = None,\tallocation: Optional[str] = None) -> Dict[str, Any]:", "funcdef": "def"}, {"fullname": "dapi.jobs.jobs.get_status", "modulename": "dapi.jobs.jobs", "qualname": "get_status", "kind": "function", "doc": "

Retrieves and monitors the status of a job using Tapis API.\nThis function waits for the job to start, then monitors it for up to maxMinutes.

\n\n

Args:\nt (object): The Tapis API client object.\nmjobUuid (str): The unique identifier of the job to monitor.\ntlapse (int, optional): Time interval, in seconds, to wait between status checks. Defaults to 15 seconds.

\n\n

Returns:\nstr: The final status of the job (FINISHED, FAILED, or STOPPED).

\n", "signature": "(t, mjobUuid, tlapse=15):", "funcdef": "def"}, {"fullname": "dapi.jobs.jobs.runtime_summary", "modulename": "dapi.jobs.jobs", "qualname": "runtime_summary", "kind": "function", "doc": "

Get the runtime of a job.\nArgs:\nt (object): The Tapis v3 client object.\njob_uuid (str): The UUID of the job for which the runtime needs to be determined.\nverbose (bool): If True, prints all history events. Otherwise, prints only specific statuses.\nReturns:\nNone: This function doesn't return a value, but it prints the runtime details.

\n", "signature": "(t, job_uuid, verbose=False):", "funcdef": "def"}]; // mirrored in build-search-index.js (part 1) // Also split on html tags. this is a cheap heuristic, but good enough. diff --git a/poetry.lock b/poetry.lock index 89d2146..c87c7e2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -957,64 +957,47 @@ files = [ [[package]] name = "numpy" -version = "2.1.1" +version = "1.26.4" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" files = [ - {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, - {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, - {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, - {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, - {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, - {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, - {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, - {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, - {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, - {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, - {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, - {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, - {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, - {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, - {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, - {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, - {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, - {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, - {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, - {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, - {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, - {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, - {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, - {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, - {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, - {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, - {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, - {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, - {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, - {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] @@ -1098,60 +1081,47 @@ files = [ [[package]] name = "pandas" -version = "2.2.3" +version = "2.2.1" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, - {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, - {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, - {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, - {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, - {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, - {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, - {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, + {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, + {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, + {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, + {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, + {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, + {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, + {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, + {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, + {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, + {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, + {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, + {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, + {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, + {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, + {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, + {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, + {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, + {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, + {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, + {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, + {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, + {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, + {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, + {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, + {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, + {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, + {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, + {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, + {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, ] [package.dependencies] numpy = [ - {version = ">=1.22.4", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version == \"3.11\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2144,4 +2114,4 @@ watchdog = ["watchdog (>=2.3)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "fe2be9aecedddde6d1561b430e05242cb65ebf9c32c24de229d01a5eb672eef0" +content-hash = "cdbb01c3e043ad1f687f251b113cf85683d644b5da94d69a38ee01b84764e264" diff --git a/pyproject.toml b/pyproject.toml index 8ce4d36..16432cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,8 +17,8 @@ exceptiongroup = "^1.2.0" pymysql = "^1.1.0" sqlalchemy = "^2.0.23" python-dotenv = "^1.0.1" -numpy = "^2.1.1" -pandas = "^2.2.3" +numpy = ">=1.23,<2.0a0" +pandas = ">=2.0,<2.2.2dev0" tapipy = "^1.6.3"