diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..d58b50c Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/ilsco.numbers b/ilsco.numbers new file mode 100755 index 0000000..1519adb Binary files /dev/null and b/ilsco.numbers differ diff --git a/ilsco_test.csv b/ilsco_test.csv new file mode 100644 index 0000000..c2e3b31 --- /dev/null +++ b/ilsco_test.csv @@ -0,0 +1,20 @@ +LugSize,WireSize,ColorCode,MT25,94285,IDT6,IDT12,ILC12N +8,8 AWG,Blue,1,2,1,,1 +6,6 AWG,Gray,1,2,1,1,1 +4,4 AWG,Green,1,3,1,1,1 +2,2 AWG,Pink,2,3,1,1,1 +1,1 AWG,Gold,2,3,1,1,1 +1/0,1/0 AWG,Tan,2,3,1,1,1 +2/0,2/0 AWG,Olive,2,3,2,1,1^{c} +3/0,3/0 AWG,Ruby,2,3,2,1,1^{c} +4/0,4/0 AWG,White,2,,2,1,2 +250,250 kcmil,Red,,,2,1,2 +300,300 kcmil,Blue,,,2,1,2 +350,350 kcmil,Brown,,,2,1,2 +400,400 kcmil,Green,,,2,1,4 +500,500 kcmil,Pink,,,2^{e},1,4 +600,600 kcmil,Black,,,2^{e},1,4 +700/750,700/750 kcmil,Yellow,,,2^{e},1,3 +700/750_2,"900 kcmil +Compact Al",Yellow,,,,,3 +1000,1000 kcmil,Brown,,,,, \ No newline at end of file diff --git a/main_template.py b/main_template.py index 2b15666..ff816e3 100644 --- a/main_template.py +++ b/main_template.py @@ -1,3 +1,4 @@ +import pandas as pd from flask import Flask, jsonify, request from flask_restful import Api, Resource from flasgger import Swagger @@ -36,7 +37,132 @@ def get(self): return jsonify({"text": text.upper()}) -api.add_resource(UppercaseText, "/uppercase") +class getTools(Resource): + + def get(self): + """ + This method responds to the GET request for this endpoint and the list of tools available + --- + tags: + - get available tools + responses: + 200: + description: A successful GET request + content: + application/json: + schema: + type: object + properties: + text: + type: array + description: tools available + """ + # Replace 'your_file_path.csv' with the actual path to your CSV file + csv_file_path = 'ilsco_test.csv' + # Get values from query parameters + try: + # Read CSV file into a Pandas DataFrame + df = pd.read_csv(csv_file_path) + df.set_index('LugSize', inplace=True) + # Find the value at the specified row and column + cable_list = list(df.columns[2::]) + + return {"value": cable_list}, 200 + except Exception as e: + return {"error": str(e)}, 400 + + return jsonify({"text": text.upper()}) + +class getCables(Resource): + + def get(self): + """ + This method responds to the GET and return the list of available cable sizes. + --- + tags: + - get cable sizes + responses: + 200: + description: A successful GET request + content: + application/json: + schema: + type: object + properties: + text: + type: array + description: Available cable sizes + """ + # Replace 'your_file_path.csv' with the actual path to your CSV file + csv_file_path = 'ilsco_test.csv' + # Get values from query parameters + try: + # Read CSV file into a Pandas DataFrame + df = pd.read_csv(csv_file_path) + df.set_index('LugSize', inplace=True) + # Find the value at the specified row and column + tools_list = list(df.index) + + return {"value": tools_list}, 200 + except Exception as e: + return {"error": str(e)}, 400 + + return jsonify({"text": text.upper()}) + +class getIlsco(Resource): + + def get(self): + """ + This method responds to the GET request for this endpoint and returns the crimp value for the cable and tool. + --- + tags: + - Crimps lookup + parameters: + - name: cable + in: query + type: string + required: true + description: Cable size AWG use + - name: tool + in: query + type: string + required: true + description: Tool to be used + responses: + 200: + description: A successful GET request + content: + application/json: + schema: + type: object + properties: + value: + type: string + description: The value in the specified row and column + """ + # Replace 'your_file_path.csv' with the actual path to your CSV file + csv_file_path = 'ilsco_test.csv' + # Get values from query parameters + row = request.args.get('cable') + col = request.args.get('tool') + print(row,col) + + try: + # Read CSV file into a Pandas DataFrame + df = pd.read_csv(csv_file_path) + df.set_index('LugSize', inplace=True) + # Find the value at the specified row and column + value = df.loc[row, col] + + return {"value": value}, 200 + except Exception as e: + return {"error": str(e)}, 400 + + +#api.add_resource(UppercaseText, "/uppercase") +api.add_resource(getIlsco, "/getCrimps") +api.add_resource(getCables, "/getCableList") +api.add_resource(getTools, "/getTools") if __name__ == "__main__": app.run(debug=True) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index edd09fa..6ffe89c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ flask flasgger flask_restful pyairtable -gunicorn \ No newline at end of file +gunicorn +pandas \ No newline at end of file diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..73b7758 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,4 @@ +# Ignore the "folder_to_exclude" directory +test/ + +*.jpynb \ No newline at end of file diff --git a/test/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/test/.ipynb_checkpoints/Untitled-checkpoint.ipynb new file mode 100644 index 0000000..363fcab --- /dev/null +++ b/test/.ipynb_checkpoints/Untitled-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/test/Untitled.ipynb b/test/Untitled.ipynb new file mode 100644 index 0000000..03589db --- /dev/null +++ b/test/Untitled.ipynb @@ -0,0 +1,760 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "047bb5a2", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "dd7e8ca2", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('ilsco_test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "e4b30a0e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LugSizeWireSizeColorCodeMT2594285IDT6IDT12ILC12N
088 AWGBlue1.02.01NaN1
166 AWGGray1.02.011.01
244 AWGGreen1.03.011.01
322 AWGPink2.03.011.01
411 AWGGold2.03.011.01
51/01/0 AWGTan2.03.011.01
62/02/0 AWGOlive2.03.021.01^{c}
73/03/0 AWGRuby2.03.021.01^{c}
84/04/0 AWGWhite2.0NaN21.02
9250250 kcmilRedNaNNaN21.02
10300300 kcmilBlueNaNNaN21.02
11350350 kcmilBrownNaNNaN21.02
12400400 kcmilGreenNaNNaN21.04
13500500 kcmilPinkNaNNaN2^{e}1.04
14600600 kcmilBlackNaNNaN2^{e}1.04
15700/750700/750 kcmilYellowNaNNaN2^{e}1.03
16700/750_2900 kcmil\\nCompact AlYellowNaNNaNNaNNaN3
1710001000 kcmilBrownNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " LugSize WireSize ColorCode MT25 94285 IDT6 IDT12 \n", + "0 8 8 AWG Blue 1.0 2.0 1 NaN \\\n", + "1 6 6 AWG Gray 1.0 2.0 1 1.0 \n", + "2 4 4 AWG Green 1.0 3.0 1 1.0 \n", + "3 2 2 AWG Pink 2.0 3.0 1 1.0 \n", + "4 1 1 AWG Gold 2.0 3.0 1 1.0 \n", + "5 1/0 1/0 AWG Tan 2.0 3.0 1 1.0 \n", + "6 2/0 2/0 AWG Olive 2.0 3.0 2 1.0 \n", + "7 3/0 3/0 AWG Ruby 2.0 3.0 2 1.0 \n", + "8 4/0 4/0 AWG White 2.0 NaN 2 1.0 \n", + "9 250 250 kcmil Red NaN NaN 2 1.0 \n", + "10 300 300 kcmil Blue NaN NaN 2 1.0 \n", + "11 350 350 kcmil Brown NaN NaN 2 1.0 \n", + "12 400 400 kcmil Green NaN NaN 2 1.0 \n", + "13 500 500 kcmil Pink NaN NaN 2^{e} 1.0 \n", + "14 600 600 kcmil Black NaN NaN 2^{e} 1.0 \n", + "15 700/750 700/750 kcmil Yellow NaN NaN 2^{e} 1.0 \n", + "16 700/750_2 900 kcmil\\nCompact Al Yellow NaN NaN NaN NaN \n", + "17 1000 1000 kcmil Brown NaN NaN NaN NaN \n", + "\n", + " ILC12N \n", + "0 1 \n", + "1 1 \n", + "2 1 \n", + "3 1 \n", + "4 1 \n", + "5 1 \n", + "6 1^{c} \n", + "7 1^{c} \n", + "8 2 \n", + "9 2 \n", + "10 2 \n", + "11 2 \n", + "12 4 \n", + "13 4 \n", + "14 4 \n", + "15 3 \n", + "16 3 \n", + "17 NaN " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "50615124", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\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", + " \n", + " \n", + " \n", + "
LugSizeWireSizeColorCodeMT2594285IDT6IDT12ILC12N
088 AWGBlue1.02.01NaN1
\n", + "
" + ], + "text/plain": [ + " LugSize WireSize ColorCode MT25 94285 IDT6 IDT12 ILC12N\n", + "0 8 8 AWG Blue 1.0 2.0 1 NaN 1" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df['LugSize']==\"8\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ae7ffee0", + "metadata": {}, + "outputs": [], + "source": [ + "column_name = ['WireSize','MT25']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "f10c087a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1.0\n", + "Name: MT25, dtype: float64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "row_condition[column_name]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "1f967021", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "WireSize 8 AWG\n", + "MT25 1.0\n", + "Name: 8, dtype: object" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.loc[\"8\", column_name]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "73b203ce", + "metadata": {}, + "outputs": [], + "source": [ + "df.set_index('LugSize', inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "16f279ba", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
WireSizeColorCodeMT2594285IDT6IDT12ILC12N
LugSize
88 AWGBlue1.02.01NaN1
66 AWGGray1.02.011.01
44 AWGGreen1.03.011.01
22 AWGPink2.03.011.01
11 AWGGold2.03.011.01
1/01/0 AWGTan2.03.011.01
2/02/0 AWGOlive2.03.021.01^{c}
3/03/0 AWGRuby2.03.021.01^{c}
4/04/0 AWGWhite2.0NaN21.02
250250 kcmilRedNaNNaN21.02
300300 kcmilBlueNaNNaN21.02
350350 kcmilBrownNaNNaN21.02
400400 kcmilGreenNaNNaN21.04
500500 kcmilPinkNaNNaN2^{e}1.04
600600 kcmilBlackNaNNaN2^{e}1.04
700/750700/750 kcmilYellowNaNNaN2^{e}1.03
700/750_2900 kcmil\\nCompact AlYellowNaNNaNNaNNaN3
10001000 kcmilBrownNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " WireSize ColorCode MT25 94285 IDT6 IDT12 ILC12N\n", + "LugSize \n", + "8 8 AWG Blue 1.0 2.0 1 NaN 1\n", + "6 6 AWG Gray 1.0 2.0 1 1.0 1\n", + "4 4 AWG Green 1.0 3.0 1 1.0 1\n", + "2 2 AWG Pink 2.0 3.0 1 1.0 1\n", + "1 1 AWG Gold 2.0 3.0 1 1.0 1\n", + "1/0 1/0 AWG Tan 2.0 3.0 1 1.0 1\n", + "2/0 2/0 AWG Olive 2.0 3.0 2 1.0 1^{c}\n", + "3/0 3/0 AWG Ruby 2.0 3.0 2 1.0 1^{c}\n", + "4/0 4/0 AWG White 2.0 NaN 2 1.0 2\n", + "250 250 kcmil Red NaN NaN 2 1.0 2\n", + "300 300 kcmil Blue NaN NaN 2 1.0 2\n", + "350 350 kcmil Brown NaN NaN 2 1.0 2\n", + "400 400 kcmil Green NaN NaN 2 1.0 4\n", + "500 500 kcmil Pink NaN NaN 2^{e} 1.0 4\n", + "600 600 kcmil Black NaN NaN 2^{e} 1.0 4\n", + "700/750 700/750 kcmil Yellow NaN NaN 2^{e} 1.0 3\n", + "700/750_2 900 kcmil\\nCompact Al Yellow NaN NaN NaN NaN 3\n", + "1000 1000 kcmil Brown NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.loc" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "eb417f09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['MT25', '94285', 'IDT6', 'IDT12', 'ILC12N'], dtype='object')" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns[2::]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59acdb76", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/test/ilsco_test.csv b/test/ilsco_test.csv new file mode 100644 index 0000000..c2e3b31 --- /dev/null +++ b/test/ilsco_test.csv @@ -0,0 +1,20 @@ +LugSize,WireSize,ColorCode,MT25,94285,IDT6,IDT12,ILC12N +8,8 AWG,Blue,1,2,1,,1 +6,6 AWG,Gray,1,2,1,1,1 +4,4 AWG,Green,1,3,1,1,1 +2,2 AWG,Pink,2,3,1,1,1 +1,1 AWG,Gold,2,3,1,1,1 +1/0,1/0 AWG,Tan,2,3,1,1,1 +2/0,2/0 AWG,Olive,2,3,2,1,1^{c} +3/0,3/0 AWG,Ruby,2,3,2,1,1^{c} +4/0,4/0 AWG,White,2,,2,1,2 +250,250 kcmil,Red,,,2,1,2 +300,300 kcmil,Blue,,,2,1,2 +350,350 kcmil,Brown,,,2,1,2 +400,400 kcmil,Green,,,2,1,4 +500,500 kcmil,Pink,,,2^{e},1,4 +600,600 kcmil,Black,,,2^{e},1,4 +700/750,700/750 kcmil,Yellow,,,2^{e},1,3 +700/750_2,"900 kcmil +Compact Al",Yellow,,,,,3 +1000,1000 kcmil,Brown,,,,, \ No newline at end of file