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",
+ " LugSize | \n",
+ " WireSize | \n",
+ " ColorCode | \n",
+ " MT25 | \n",
+ " 94285 | \n",
+ " IDT6 | \n",
+ " IDT12 | \n",
+ " ILC12N | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 8 | \n",
+ " 8 AWG | \n",
+ " Blue | \n",
+ " 1.0 | \n",
+ " 2.0 | \n",
+ " 1 | \n",
+ " NaN | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 6 | \n",
+ " 6 AWG | \n",
+ " Gray | \n",
+ " 1.0 | \n",
+ " 2.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 4 | \n",
+ " 4 AWG | \n",
+ " Green | \n",
+ " 1.0 | \n",
+ " 3.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2 | \n",
+ " 2 AWG | \n",
+ " Pink | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 1 | \n",
+ " 1 AWG | \n",
+ " Gold | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 1/0 | \n",
+ " 1/0 AWG | \n",
+ " Tan | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " 2/0 | \n",
+ " 2/0 AWG | \n",
+ " Olive | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 1^{c} | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " 3/0 | \n",
+ " 3/0 AWG | \n",
+ " Ruby | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 1^{c} | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " 4/0 | \n",
+ " 4/0 AWG | \n",
+ " White | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " 250 | \n",
+ " 250 kcmil | \n",
+ " Red | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " 300 | \n",
+ " 300 kcmil | \n",
+ " Blue | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " 350 | \n",
+ " 350 kcmil | \n",
+ " Brown | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " 400 | \n",
+ " 400 kcmil | \n",
+ " Green | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " 500 | \n",
+ " 500 kcmil | \n",
+ " Pink | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2^{e} | \n",
+ " 1.0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " 600 | \n",
+ " 600 kcmil | \n",
+ " Black | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2^{e} | \n",
+ " 1.0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " 700/750 | \n",
+ " 700/750 kcmil | \n",
+ " Yellow | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2^{e} | \n",
+ " 1.0 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " 700/750_2 | \n",
+ " 900 kcmil\\nCompact Al | \n",
+ " Yellow | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " 1000 | \n",
+ " 1000 kcmil | \n",
+ " Brown | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\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",
+ " LugSize | \n",
+ " WireSize | \n",
+ " ColorCode | \n",
+ " MT25 | \n",
+ " 94285 | \n",
+ " IDT6 | \n",
+ " IDT12 | \n",
+ " ILC12N | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 8 | \n",
+ " 8 AWG | \n",
+ " Blue | \n",
+ " 1.0 | \n",
+ " 2.0 | \n",
+ " 1 | \n",
+ " NaN | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\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",
+ " WireSize | \n",
+ " ColorCode | \n",
+ " MT25 | \n",
+ " 94285 | \n",
+ " IDT6 | \n",
+ " IDT12 | \n",
+ " ILC12N | \n",
+ "
\n",
+ " \n",
+ " | LugSize | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 8 | \n",
+ " 8 AWG | \n",
+ " Blue | \n",
+ " 1.0 | \n",
+ " 2.0 | \n",
+ " 1 | \n",
+ " NaN | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " 6 AWG | \n",
+ " Gray | \n",
+ " 1.0 | \n",
+ " 2.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 4 AWG | \n",
+ " Green | \n",
+ " 1.0 | \n",
+ " 3.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2 AWG | \n",
+ " Pink | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 1 AWG | \n",
+ " Gold | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1/0 | \n",
+ " 1/0 AWG | \n",
+ " Tan | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2/0 | \n",
+ " 2/0 AWG | \n",
+ " Olive | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 1^{c} | \n",
+ "
\n",
+ " \n",
+ " | 3/0 | \n",
+ " 3/0 AWG | \n",
+ " Ruby | \n",
+ " 2.0 | \n",
+ " 3.0 | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 1^{c} | \n",
+ "
\n",
+ " \n",
+ " | 4/0 | \n",
+ " 4/0 AWG | \n",
+ " White | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 250 | \n",
+ " 250 kcmil | \n",
+ " Red | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 300 | \n",
+ " 300 kcmil | \n",
+ " Blue | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 350 | \n",
+ " 350 kcmil | \n",
+ " Brown | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 400 | \n",
+ " 400 kcmil | \n",
+ " Green | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 500 | \n",
+ " 500 kcmil | \n",
+ " Pink | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2^{e} | \n",
+ " 1.0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 600 | \n",
+ " 600 kcmil | \n",
+ " Black | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2^{e} | \n",
+ " 1.0 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 700/750 | \n",
+ " 700/750 kcmil | \n",
+ " Yellow | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2^{e} | \n",
+ " 1.0 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | 700/750_2 | \n",
+ " 900 kcmil\\nCompact Al | \n",
+ " Yellow | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | 1000 | \n",
+ " 1000 kcmil | \n",
+ " Brown | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\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