feat: Enhance Makefile with improved environment setup and cleanup commands
This commit is contained in:
85
Makefile
85
Makefile
@@ -11,15 +11,78 @@ PYTHON=$(VENV_DIR)/bin/python
|
||||
|
||||
help: ## Show this help
|
||||
@grep -E -h '\s##\s' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
clean: ## Clean up build artifacts and virtual environment
|
||||
@echo "Cleaning up build artifacts and virtual environment..."
|
||||
@rm -rf $(VENV_DIR)
|
||||
@rm -rf build/
|
||||
@rm -rf dist/
|
||||
@rm -rf htmlcov/
|
||||
@rm -rf .pytest_cache/
|
||||
@rm -rf .ruff_cache/
|
||||
@rm -rf src/__pycache__/
|
||||
@rm -rf tests/__pycache__/
|
||||
@rm -f .coverage
|
||||
@rm -f coverage.xml
|
||||
@echo "✅ Cleanup complete!"
|
||||
|
||||
reinstall: clean install ## Clean and reinstall the development environment
|
||||
|
||||
check-env: ## Check if the development environment is properly set up
|
||||
@echo "Checking development environment..."
|
||||
@bash -c 'if [ ! -d "$(VENV_DIR)" ]; then \
|
||||
echo "❌ Virtual environment not found at $(VENV_DIR)"; \
|
||||
echo " Run \"make install\" to set up the environment"; \
|
||||
exit 1; \
|
||||
fi'
|
||||
@bash -c 'if [ ! -f "$(PYTHON)" ]; then \
|
||||
echo "❌ Python executable not found at $(PYTHON)"; \
|
||||
echo " Run \"make install\" to set up the environment"; \
|
||||
exit 1; \
|
||||
fi'
|
||||
@echo "✅ Virtual environment: $(VENV_DIR)"
|
||||
@echo "✅ Python executable: $(PYTHON)"
|
||||
@$(PYTHON) --version
|
||||
@$(PYTHON) -c "import sys; print(f'✅ Python path: {sys.executable}')"
|
||||
@bash -c 'if cd /home/will/Code/thechart && $(PYTHON) -c "import sys; sys.path.insert(0, \"src\"); import main" 2>/dev/null; then \
|
||||
echo "✅ Main module imports successfully"; \
|
||||
else \
|
||||
echo "❌ Main module import failed"; \
|
||||
exit 1; \
|
||||
fi'
|
||||
@bash -c 'if $(PYTHON) -c "import pre_commit" 2>/dev/null; then \
|
||||
echo "✅ Pre-commit is installed"; \
|
||||
else \
|
||||
echo "⚠️ Pre-commit not found (run \"make install\" to fix)"; \
|
||||
fi'
|
||||
@echo "✅ Environment check completed successfully!"
|
||||
install: ## Set up the development environment
|
||||
@echo "Setting up the development environment..."
|
||||
# poetry env use 3.13
|
||||
# eval $(poetry env use 3.13) # bash/zsh/csh
|
||||
eval (poetry env activate)
|
||||
poetry install --no-root
|
||||
poetry run pre-commit install --install-hooks --overwrite
|
||||
poetry run pre-commit autoupdate
|
||||
poetry run pre-commit run --all-files
|
||||
@echo "Creating virtual environment..."
|
||||
@bash -c 'if [ -d "$(VENV_DIR)" ]; then \
|
||||
echo "Virtual environment already exists. Recreating..."; \
|
||||
rm -rf $(VENV_DIR); \
|
||||
fi'
|
||||
uv venv $(VENV_DIR) --python=python3.13
|
||||
@echo "Installing dependencies..."
|
||||
uv sync --dev --no-cache-dir
|
||||
@echo "Installing pre-commit hooks..."
|
||||
$(PYTHON) -m pre_commit install
|
||||
@echo "Verifying installation..."
|
||||
@$(PYTHON) --version
|
||||
@$(PYTHON) -c "import sys; print(f'Python executable: {sys.executable}')"
|
||||
@echo "Testing module imports..."
|
||||
@cd /home/will/Code/thechart && $(PYTHON) -c "import sys; sys.path.insert(0, 'src'); import main; print('✅ Main module imports successfully')"
|
||||
@echo "Development environment setup complete!"
|
||||
@echo ""
|
||||
@echo "🐟 For Fish shell users:"
|
||||
@echo " source $(VENV_DIR)/bin/activate.fish"
|
||||
@echo ""
|
||||
@echo "🐚 For Bash/Zsh shell users:"
|
||||
@echo " source $(VENV_ACTIVATE)"
|
||||
@echo ""
|
||||
@echo "To run the application: make run"
|
||||
@echo "To run tests: make test"
|
||||
build: ## Build the Docker image
|
||||
@echo "Building the Docker image..."
|
||||
docker buildx build --platform linux/amd64,linux/arm64 -t ${IMAGE} --push .
|
||||
@@ -32,6 +95,10 @@ deploy: ## Deploy the application as a standalone executable
|
||||
desktop-file-validate ${ROOT}/.local/share/applications/${TARGET}.desktop
|
||||
run: $(VENV_ACTIVATE) ## Run the application
|
||||
@echo "Running the application..."
|
||||
@bash -c 'if [ ! -f "$(VENV_ACTIVATE)" ]; then \
|
||||
echo "❌ Virtual environment not found. Run \"make install\" first."; \
|
||||
exit 1; \
|
||||
fi'
|
||||
$(PYTHON) src/main.py
|
||||
start: ## Start the application
|
||||
@echo "Starting the application..."
|
||||
@@ -85,7 +152,7 @@ attach: ## Open a shell in the container
|
||||
docker-compose exec -it ${TARGET} /bin/bash
|
||||
shell: ## Open a shell in the local environment
|
||||
@echo "Opening a shell in the local environment..."
|
||||
source ./.venv/bin/activate.${SHELL} && /bin/${SHELL}
|
||||
source .venv/bin/activate.${SHELL} && /bin/${SHELL}
|
||||
requirements: ## Export the requirements to a file
|
||||
@echo "Exporting requirements to requirements.txt..."
|
||||
poetry export --without-hashes -f requirements.txt -o requirements.txt
|
||||
@@ -95,4 +162,4 @@ commit-emergency: ## Emergency commit (bypasses pre-commit hooks) - USE SPARINGL
|
||||
@read -p "Enter commit message: " msg; \
|
||||
git add . && git commit --no-verify -m "$$msg"
|
||||
@echo "✅ Emergency commit completed. Please run tests manually when possible."
|
||||
.PHONY: install build attach deploy run start stop test lint format shell requirements commit-emergency test-dose-tracking test-scrollable-input test-edit-functionality test-edit-window test-dose-editing migrate-csv help
|
||||
.PHONY: install clean reinstall check-env build attach deploy run start stop test lint format shell requirements commit-emergency test-dose-tracking test-scrollable-input test-edit-functionality test-edit-window test-dose-editing migrate-csv help
|
||||
|
||||
536
coverage.xml
536
coverage.xml
@@ -1,13 +1,21 @@
|
||||
<?xml version="1.0" ?>
|
||||
<coverage version="7.10.1" timestamp="1753761096131" lines-valid="669" lines-covered="547" line-rate="0.8176" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
|
||||
<coverage version="7.10.1" timestamp="1753772483216" lines-valid="696" lines-covered="513" line-rate="0.7371" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
|
||||
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.10.1 -->
|
||||
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
|
||||
<sources>
|
||||
<source>/home/will/Code/thechart/src</source>
|
||||
</sources>
|
||||
<packages>
|
||||
<package name="." line-rate="0.8176" branch-rate="0" complexity="0">
|
||||
<package name="." line-rate="0.7371" branch-rate="0" complexity="0">
|
||||
<classes>
|
||||
<class name="__init__.py" filename="__init__.py" complexity="0" line-rate="0" branch-rate="0">
|
||||
<methods/>
|
||||
<lines>
|
||||
<line number="3" hits="0"/>
|
||||
<line number="4" hits="0"/>
|
||||
<line number="5" hits="0"/>
|
||||
</lines>
|
||||
</class>
|
||||
<class name="constants.py" filename="constants.py" complexity="0" line-rate="1" branch-rate="0">
|
||||
<methods/>
|
||||
<lines>
|
||||
@@ -262,7 +270,7 @@
|
||||
<line number="40" hits="1"/>
|
||||
</lines>
|
||||
</class>
|
||||
<class name="main.py" filename="main.py" complexity="0" line-rate="0.797" branch-rate="0">
|
||||
<class name="main.py" filename="main.py" complexity="0" line-rate="0.8278" branch-rate="0">
|
||||
<methods/>
|
||||
<lines>
|
||||
<line number="1" hits="1"/>
|
||||
@@ -320,156 +328,105 @@
|
||||
<line number="83" hits="1"/>
|
||||
<line number="84" hits="1"/>
|
||||
<line number="85" hits="1"/>
|
||||
<line number="86" hits="1"/>
|
||||
<line number="87" hits="1"/>
|
||||
<line number="88" hits="1"/>
|
||||
<line number="91" hits="1"/>
|
||||
<line number="94" hits="1"/>
|
||||
<line number="108" hits="1"/>
|
||||
<line number="102" hits="1"/>
|
||||
<line number="103" hits="1"/>
|
||||
<line number="104" hits="1"/>
|
||||
<line number="107" hits="1"/>
|
||||
<line number="109" hits="1"/>
|
||||
<line number="110" hits="1"/>
|
||||
<line number="111" hits="1"/>
|
||||
<line number="112" hits="1"/>
|
||||
<line number="113" hits="1"/>
|
||||
<line number="114" hits="1"/>
|
||||
<line number="115" hits="1"/>
|
||||
<line number="117" hits="1"/>
|
||||
<line number="118" hits="0"/>
|
||||
<line number="123" hits="1"/>
|
||||
<line number="125" hits="1"/>
|
||||
<line number="116" hits="1"/>
|
||||
<line number="118" hits="1"/>
|
||||
<line number="120" hits="0"/>
|
||||
<line number="123" hits="0"/>
|
||||
<line number="124" hits="0"/>
|
||||
<line number="125" hits="0"/>
|
||||
<line number="127" hits="0"/>
|
||||
<line number="128" hits="0"/>
|
||||
<line number="130" hits="0"/>
|
||||
<line number="131" hits="0"/>
|
||||
<line number="136" hits="0"/>
|
||||
<line number="139" hits="0"/>
|
||||
<line number="140" hits="0"/>
|
||||
<line number="141" hits="0"/>
|
||||
<line number="143" hits="0"/>
|
||||
<line number="144" hits="0"/>
|
||||
<line number="146" hits="0"/>
|
||||
<line number="147" hits="0"/>
|
||||
<line number="153" hits="0"/>
|
||||
<line number="155" hits="0"/>
|
||||
<line number="156" hits="0"/>
|
||||
<line number="158" hits="0"/>
|
||||
<line number="162" hits="1"/>
|
||||
<line number="164" hits="1"/>
|
||||
<line number="165" hits="1"/>
|
||||
<line number="166" hits="0"/>
|
||||
<line number="168" hits="1"/>
|
||||
<line number="169" hits="0"/>
|
||||
<line number="171" hits="0"/>
|
||||
<line number="172" hits="0"/>
|
||||
<line number="174" hits="0"/>
|
||||
<line number="175" hits="0"/>
|
||||
<line number="178" hits="0"/>
|
||||
<line number="180" hits="0"/>
|
||||
<line number="182" hits="0"/>
|
||||
<line number="184" hits="1"/>
|
||||
<line number="186" hits="1"/>
|
||||
<line number="187" hits="1"/>
|
||||
<line number="188" hits="1"/>
|
||||
<line number="189" hits="1"/>
|
||||
<line number="190" hits="1"/>
|
||||
<line number="191" hits="1"/>
|
||||
<line number="193" hits="1"/>
|
||||
<line number="145" hits="0"/>
|
||||
<line number="148" hits="0"/>
|
||||
<line number="154" hits="0"/>
|
||||
<line number="156" hits="1"/>
|
||||
<line number="173" hits="0"/>
|
||||
<line number="190" hits="0"/>
|
||||
<line number="191" hits="0"/>
|
||||
<line number="192" hits="0"/>
|
||||
<line number="195" hits="0"/>
|
||||
<line number="198" hits="0"/>
|
||||
<line number="204" hits="0"/>
|
||||
<line number="206" hits="1"/>
|
||||
<line number="196" hits="0"/>
|
||||
<line number="199" hits="0"/>
|
||||
<line number="200" hits="0"/>
|
||||
<line number="201" hits="0"/>
|
||||
<line number="208" hits="0"/>
|
||||
<line number="210" hits="1"/>
|
||||
<line number="211" hits="1"/>
|
||||
<line number="214" hits="1"/>
|
||||
<line number="215" hits="1"/>
|
||||
<line number="217" hits="1"/>
|
||||
<line number="220" hits="1"/>
|
||||
<line number="221" hits="1"/>
|
||||
<line number="222" hits="1"/>
|
||||
<line number="223" hits="1"/>
|
||||
<line number="224" hits="1"/>
|
||||
<line number="225" hits="1"/>
|
||||
<line number="226" hits="1"/>
|
||||
<line number="229" hits="1"/>
|
||||
<line number="230" hits="1"/>
|
||||
<line number="233" hits="1"/>
|
||||
<line number="227" hits="1"/>
|
||||
<line number="228" hits="1"/>
|
||||
<line number="231" hits="1"/>
|
||||
<line number="232" hits="1"/>
|
||||
<line number="236" hits="1"/>
|
||||
<line number="239" hits="1"/>
|
||||
<line number="237" hits="1"/>
|
||||
<line number="240" hits="1"/>
|
||||
<line number="241" hits="1"/>
|
||||
<line number="243" hits="1"/>
|
||||
<line number="244" hits="1"/>
|
||||
<line number="245" hits="1"/>
|
||||
<line number="246" hits="1"/>
|
||||
<line number="247" hits="0"/>
|
||||
<line number="248" hits="0"/>
|
||||
<line number="250" hits="1"/>
|
||||
<line number="259" hits="1"/>
|
||||
<line number="262" hits="1"/>
|
||||
<line number="263" hits="1"/>
|
||||
<line number="264" hits="1"/>
|
||||
<line number="266" hits="1"/>
|
||||
<line number="267" hits="1"/>
|
||||
<line number="268" hits="1"/>
|
||||
<line number="269" hits="1"/>
|
||||
<line number="272" hits="1"/>
|
||||
<line number="273" hits="1"/>
|
||||
<line number="270" hits="1"/>
|
||||
<line number="271" hits="1"/>
|
||||
<line number="274" hits="1"/>
|
||||
<line number="275" hits="1"/>
|
||||
<line number="276" hits="1"/>
|
||||
<line number="277" hits="1"/>
|
||||
<line number="278" hits="1"/>
|
||||
<line number="285" hits="0"/>
|
||||
<line number="283" hits="0"/>
|
||||
<line number="285" hits="1"/>
|
||||
<line number="287" hits="1"/>
|
||||
<line number="288" hits="1"/>
|
||||
<line number="291" hits="1"/>
|
||||
<line number="292" hits="1"/>
|
||||
<line number="294" hits="1"/>
|
||||
<line number="297" hits="1"/>
|
||||
<line number="298" hits="1"/>
|
||||
<line number="299" hits="1"/>
|
||||
<line number="300" hits="1"/>
|
||||
<line number="301" hits="1"/>
|
||||
<line number="303" hits="1"/>
|
||||
<line number="304" hits="1"/>
|
||||
<line number="305" hits="1"/>
|
||||
<line number="295" hits="0"/>
|
||||
<line number="297" hits="0"/>
|
||||
<line number="298" hits="0"/>
|
||||
<line number="299" hits="0"/>
|
||||
<line number="302" hits="0"/>
|
||||
<line number="304" hits="0"/>
|
||||
<line number="306" hits="1"/>
|
||||
<line number="308" hits="1"/>
|
||||
<line number="309" hits="1"/>
|
||||
<line number="310" hits="1"/>
|
||||
<line number="311" hits="1"/>
|
||||
<line number="312" hits="1"/>
|
||||
<line number="313" hits="1"/>
|
||||
<line number="314" hits="1"/>
|
||||
<line number="317" hits="1"/>
|
||||
<line number="316" hits="1"/>
|
||||
<line number="318" hits="1"/>
|
||||
<line number="320" hits="1"/>
|
||||
<line number="336" hits="1"/>
|
||||
<line number="339" hits="1"/>
|
||||
<line number="340" hits="1"/>
|
||||
<line number="341" hits="1"/>
|
||||
<line number="343" hits="1"/>
|
||||
<line number="321" hits="1"/>
|
||||
<line number="322" hits="1"/>
|
||||
<line number="325" hits="1"/>
|
||||
<line number="328" hits="1"/>
|
||||
<line number="330" hits="1"/>
|
||||
<line number="344" hits="1"/>
|
||||
<line number="347" hits="1"/>
|
||||
<line number="345" hits="0"/>
|
||||
<line number="348" hits="1"/>
|
||||
<line number="350" hits="1"/>
|
||||
<line number="351" hits="1"/>
|
||||
<line number="352" hits="1"/>
|
||||
<line number="353" hits="1"/>
|
||||
<line number="360" hits="0"/>
|
||||
<line number="362" hits="1"/>
|
||||
<line number="364" hits="1"/>
|
||||
<line number="365" hits="1"/>
|
||||
<line number="371" hits="1"/>
|
||||
<line number="372" hits="0"/>
|
||||
<line number="374" hits="0"/>
|
||||
<line number="375" hits="0"/>
|
||||
<line number="376" hits="0"/>
|
||||
<line number="379" hits="0"/>
|
||||
<line number="381" hits="0"/>
|
||||
<line number="383" hits="1"/>
|
||||
<line number="385" hits="1"/>
|
||||
<line number="386" hits="1"/>
|
||||
<line number="387" hits="1"/>
|
||||
<line number="388" hits="1"/>
|
||||
<line number="389" hits="1"/>
|
||||
<line number="390" hits="1"/>
|
||||
<line number="391" hits="1"/>
|
||||
<line number="394" hits="1"/>
|
||||
<line number="395" hits="0"/>
|
||||
<line number="398" hits="1"/>
|
||||
<line number="400" hits="1"/>
|
||||
<line number="402" hits="1"/>
|
||||
<line number="405" hits="1"/>
|
||||
<line number="406" hits="1"/>
|
||||
<line number="409" hits="1"/>
|
||||
<line number="412" hits="1"/>
|
||||
<line number="414" hits="1"/>
|
||||
<line number="428" hits="1"/>
|
||||
<line number="429" hits="0"/>
|
||||
<line number="432" hits="1"/>
|
||||
<line number="434" hits="1"/>
|
||||
<line number="435" hits="1"/>
|
||||
<line number="436" hits="1"/>
|
||||
<line number="439" hits="1"/>
|
||||
<line number="355" hits="1"/>
|
||||
</lines>
|
||||
</class>
|
||||
<class name="ui_manager.py" filename="ui_manager.py" complexity="0" line-rate="0.8655" branch-rate="0">
|
||||
<class name="ui_manager.py" filename="ui_manager.py" complexity="0" line-rate="0.6645" branch-rate="0">
|
||||
<methods/>
|
||||
<lines>
|
||||
<line number="1" hits="1"/>
|
||||
@@ -543,173 +500,248 @@
|
||||
<line number="132" hits="1"/>
|
||||
<line number="133" hits="1"/>
|
||||
<line number="136" hits="1"/>
|
||||
<line number="144" hits="1"/>
|
||||
<line number="143" hits="1"/>
|
||||
<line number="145" hits="1"/>
|
||||
<line number="146" hits="1"/>
|
||||
<line number="148" hits="1"/>
|
||||
<line number="150" hits="1"/>
|
||||
<line number="151" hits="1"/>
|
||||
<line number="152" hits="1"/>
|
||||
<line number="155" hits="1"/>
|
||||
<line number="153" hits="1"/>
|
||||
<line number="156" hits="1"/>
|
||||
<line number="160" hits="1"/>
|
||||
<line number="161" hits="1"/>
|
||||
<line number="162" hits="1"/>
|
||||
<line number="165" hits="1"/>
|
||||
<line number="166" hits="1"/>
|
||||
<line number="167" hits="1"/>
|
||||
<line number="169" hits="1"/>
|
||||
<line number="170" hits="1"/>
|
||||
<line number="173" hits="1"/>
|
||||
<line number="174" hits="1"/>
|
||||
<line number="175" hits="1"/>
|
||||
<line number="177" hits="1"/>
|
||||
<line number="178" hits="1"/>
|
||||
<line number="163" hits="1"/>
|
||||
<line number="168" hits="1"/>
|
||||
<line number="171" hits="1"/>
|
||||
<line number="179" hits="1"/>
|
||||
<line number="182" hits="1"/>
|
||||
<line number="183" hits="1"/>
|
||||
<line number="185" hits="1"/>
|
||||
<line number="181" hits="1"/>
|
||||
<line number="184" hits="1"/>
|
||||
<line number="187" hits="1"/>
|
||||
<line number="188" hits="1"/>
|
||||
<line number="192" hits="1"/>
|
||||
<line number="195" hits="1"/>
|
||||
<line number="200" hits="1"/>
|
||||
<line number="190" hits="1"/>
|
||||
<line number="203" hits="1"/>
|
||||
<line number="214" hits="1"/>
|
||||
<line number="216" hits="1"/>
|
||||
<line number="205" hits="1"/>
|
||||
<line number="218" hits="1"/>
|
||||
<line number="219" hits="1"/>
|
||||
<line number="222" hits="1"/>
|
||||
<line number="223" hits="1"/>
|
||||
<line number="225" hits="1"/>
|
||||
<line number="238" hits="1"/>
|
||||
<line number="221" hits="1"/>
|
||||
<line number="234" hits="1"/>
|
||||
<line number="235" hits="1"/>
|
||||
<line number="237" hits="1"/>
|
||||
<line number="240" hits="1"/>
|
||||
<line number="253" hits="1"/>
|
||||
<line number="254" hits="1"/>
|
||||
<line number="241" hits="1"/>
|
||||
<line number="242" hits="1"/>
|
||||
<line number="244" hits="1"/>
|
||||
<line number="246" hits="1"/>
|
||||
<line number="248" hits="1"/>
|
||||
<line number="249" hits="1"/>
|
||||
<line number="250" hits="1"/>
|
||||
<line number="252" hits="1"/>
|
||||
<line number="256" hits="1"/>
|
||||
<line number="269" hits="1"/>
|
||||
<line number="270" hits="1"/>
|
||||
<line number="272" hits="1"/>
|
||||
<line number="275" hits="1"/>
|
||||
<line number="276" hits="1"/>
|
||||
<line number="257" hits="1"/>
|
||||
<line number="259" hits="1"/>
|
||||
<line number="260" hits="1"/>
|
||||
<line number="271" hits="1"/>
|
||||
<line number="273" hits="1"/>
|
||||
<line number="277" hits="1"/>
|
||||
<line number="278" hits="1"/>
|
||||
<line number="279" hits="1"/>
|
||||
<line number="281" hits="1"/>
|
||||
<line number="280" hits="1"/>
|
||||
<line number="283" hits="1"/>
|
||||
<line number="284" hits="1"/>
|
||||
<line number="285" hits="1"/>
|
||||
<line number="287" hits="1"/>
|
||||
<line number="291" hits="1"/>
|
||||
<line number="292" hits="1"/>
|
||||
<line number="294" hits="1"/>
|
||||
<line number="295" hits="1"/>
|
||||
<line number="306" hits="1"/>
|
||||
<line number="308" hits="1"/>
|
||||
<line number="312" hits="1"/>
|
||||
<line number="313" hits="1"/>
|
||||
<line number="314" hits="1"/>
|
||||
<line number="315" hits="1"/>
|
||||
<line number="318" hits="1"/>
|
||||
<line number="321" hits="1"/>
|
||||
<line number="323" hits="1"/>
|
||||
<line number="324" hits="1"/>
|
||||
<line number="325" hits="0"/>
|
||||
<line number="327" hits="0"/>
|
||||
<line number="345" hits="0"/>
|
||||
<line number="347" hits="0"/>
|
||||
<line number="348" hits="0"/>
|
||||
<line number="286" hits="1"/>
|
||||
<line number="288" hits="1"/>
|
||||
<line number="289" hits="1"/>
|
||||
<line number="290" hits="0"/>
|
||||
<line number="292" hits="0"/>
|
||||
<line number="310" hits="0"/>
|
||||
<line number="312" hits="0"/>
|
||||
<line number="313" hits="0"/>
|
||||
<line number="331" hits="1"/>
|
||||
<line number="334" hits="1"/>
|
||||
<line number="335" hits="1"/>
|
||||
<line number="338" hits="1"/>
|
||||
<line number="341" hits="1"/>
|
||||
<line number="342" hits="1"/>
|
||||
<line number="352" hits="1"/>
|
||||
<line number="355" hits="1"/>
|
||||
<line number="356" hits="1"/>
|
||||
<line number="357" hits="1"/>
|
||||
<line number="360" hits="1"/>
|
||||
<line number="365" hits="1"/>
|
||||
<line number="366" hits="1"/>
|
||||
<line number="369" hits="1"/>
|
||||
<line number="370" hits="1"/>
|
||||
<line number="371" hits="1"/>
|
||||
<line number="373" hits="1"/>
|
||||
<line number="376" hits="1"/>
|
||||
<line number="377" hits="1"/>
|
||||
<line number="375" hits="1"/>
|
||||
<line number="385" hits="1"/>
|
||||
<line number="388" hits="1"/>
|
||||
<line number="389" hits="1"/>
|
||||
<line number="390" hits="1"/>
|
||||
<line number="391" hits="1"/>
|
||||
<line number="390" hits="0"/>
|
||||
<line number="391" hits="0"/>
|
||||
<line number="392" hits="0"/>
|
||||
<line number="394" hits="1"/>
|
||||
<line number="399" hits="1"/>
|
||||
<line number="400" hits="1"/>
|
||||
<line number="403" hits="1"/>
|
||||
<line number="404" hits="1"/>
|
||||
<line number="405" hits="1"/>
|
||||
<line number="407" hits="1"/>
|
||||
<line number="409" hits="1"/>
|
||||
<line number="419" hits="1"/>
|
||||
<line number="402" hits="1"/>
|
||||
<line number="410" hits="1"/>
|
||||
<line number="411" hits="1"/>
|
||||
<line number="412" hits="1"/>
|
||||
<line number="413" hits="1"/>
|
||||
<line number="414" hits="1"/>
|
||||
<line number="415" hits="1"/>
|
||||
<line number="416" hits="0"/>
|
||||
<line number="417" hits="0"/>
|
||||
<line number="418" hits="0"/>
|
||||
<line number="422" hits="1"/>
|
||||
<line number="423" hits="1"/>
|
||||
<line number="423" hits="0"/>
|
||||
<line number="424" hits="0"/>
|
||||
<line number="425" hits="0"/>
|
||||
<line number="426" hits="0"/>
|
||||
<line number="428" hits="1"/>
|
||||
<line number="436" hits="1"/>
|
||||
<line number="444" hits="1"/>
|
||||
<line number="445" hits="1"/>
|
||||
<line number="446" hits="1"/>
|
||||
<line number="429" hits="1"/>
|
||||
<line number="430" hits="1"/>
|
||||
<line number="434" hits="1"/>
|
||||
<line number="435" hits="1"/>
|
||||
<line number="437" hits="1"/>
|
||||
<line number="441" hits="1"/>
|
||||
<line number="443" hits="1"/>
|
||||
<line number="447" hits="1"/>
|
||||
<line number="448" hits="1"/>
|
||||
<line number="449" hits="1"/>
|
||||
<line number="450" hits="0"/>
|
||||
<line number="451" hits="0"/>
|
||||
<line number="452" hits="0"/>
|
||||
<line number="456" hits="1"/>
|
||||
<line number="457" hits="0"/>
|
||||
<line number="458" hits="0"/>
|
||||
<line number="459" hits="0"/>
|
||||
<line number="463" hits="1"/>
|
||||
<line number="451" hits="1"/>
|
||||
<line number="454" hits="1"/>
|
||||
<line number="457" hits="1"/>
|
||||
<line number="458" hits="1"/>
|
||||
<line number="461" hits="1"/>
|
||||
<line number="462" hits="1"/>
|
||||
<line number="464" hits="1"/>
|
||||
<line number="468" hits="1"/>
|
||||
<line number="465" hits="1"/>
|
||||
<line number="466" hits="1"/>
|
||||
<line number="467" hits="1"/>
|
||||
<line number="469" hits="1"/>
|
||||
<line number="471" hits="1"/>
|
||||
<line number="475" hits="1"/>
|
||||
<line number="477" hits="1"/>
|
||||
<line number="481" hits="1"/>
|
||||
<line number="479" hits="1"/>
|
||||
<line number="482" hits="1"/>
|
||||
<line number="483" hits="1"/>
|
||||
<line number="485" hits="1"/>
|
||||
<line number="488" hits="1"/>
|
||||
<line number="491" hits="1"/>
|
||||
<line number="492" hits="1"/>
|
||||
<line number="493" hits="1"/>
|
||||
<line number="494" hits="1"/>
|
||||
<line number="495" hits="1"/>
|
||||
<line number="496" hits="1"/>
|
||||
<line number="498" hits="1"/>
|
||||
<line number="499" hits="1"/>
|
||||
<line number="500" hits="1"/>
|
||||
<line number="501" hits="1"/>
|
||||
<line number="503" hits="1"/>
|
||||
<line number="509" hits="1"/>
|
||||
<line number="510" hits="1"/>
|
||||
<line number="513" hits="1"/>
|
||||
<line number="516" hits="1"/>
|
||||
<line number="517" hits="1"/>
|
||||
<line number="519" hits="1"/>
|
||||
<line number="526" hits="1"/>
|
||||
<line number="527" hits="1"/>
|
||||
<line number="528" hits="1"/>
|
||||
<line number="529" hits="1"/>
|
||||
<line number="533" hits="1"/>
|
||||
<line number="535" hits="1"/>
|
||||
<line number="543" hits="1"/>
|
||||
<line number="544" hits="1"/>
|
||||
<line number="547" hits="1"/>
|
||||
<line number="566" hits="1"/>
|
||||
<line number="571" hits="1"/>
|
||||
<line number="577" hits="1"/>
|
||||
<line number="515" hits="0"/>
|
||||
<line number="517" hits="0"/>
|
||||
<line number="518" hits="0"/>
|
||||
<line number="520" hits="0"/>
|
||||
<line number="523" hits="0"/>
|
||||
<line number="524" hits="0"/>
|
||||
<line number="528" hits="0"/>
|
||||
<line number="529" hits="0"/>
|
||||
<line number="531" hits="0"/>
|
||||
<line number="546" hits="1"/>
|
||||
<line number="553" hits="1"/>
|
||||
<line number="558" hits="1"/>
|
||||
<line number="564" hits="1"/>
|
||||
<line number="568" hits="1"/>
|
||||
<line number="572" hits="1"/>
|
||||
<line number="573" hits="1"/>
|
||||
<line number="574" hits="1"/>
|
||||
<line number="576" hits="1"/>
|
||||
<line number="578" hits="1"/>
|
||||
<line number="580" hits="1"/>
|
||||
<line number="581" hits="1"/>
|
||||
<line number="584" hits="1"/>
|
||||
<line number="585" hits="1"/>
|
||||
<line number="586" hits="1"/>
|
||||
<line number="588" hits="1"/>
|
||||
<line number="589" hits="1"/>
|
||||
<line number="594" hits="1"/>
|
||||
<line number="595" hits="0"/>
|
||||
<line number="596" hits="0"/>
|
||||
<line number="597" hits="0"/>
|
||||
<line number="598" hits="0"/>
|
||||
<line number="600" hits="0"/>
|
||||
<line number="601" hits="0"/>
|
||||
<line number="592" hits="1"/>
|
||||
<line number="593" hits="1"/>
|
||||
<line number="596" hits="1"/>
|
||||
<line number="599" hits="1"/>
|
||||
<line number="602" hits="1"/>
|
||||
<line number="603" hits="0"/>
|
||||
<line number="604" hits="0"/>
|
||||
<line number="605" hits="0"/>
|
||||
<line number="606" hits="0"/>
|
||||
<line number="607" hits="0"/>
|
||||
<line number="609" hits="0"/>
|
||||
<line number="611" hits="1"/>
|
||||
<line number="605" hits="1"/>
|
||||
<line number="607" hits="1"/>
|
||||
<line number="613" hits="1"/>
|
||||
<line number="616" hits="1"/>
|
||||
<line number="617" hits="0"/>
|
||||
<line number="618" hits="0"/>
|
||||
<line number="619" hits="0"/>
|
||||
<line number="620" hits="0"/>
|
||||
<line number="621" hits="0"/>
|
||||
<line number="623" hits="0"/>
|
||||
<line number="624" hits="0"/>
|
||||
<line number="625" hits="0"/>
|
||||
<line number="626" hits="0"/>
|
||||
<line number="627" hits="0"/>
|
||||
<line number="628" hits="0"/>
|
||||
<line number="630" hits="0"/>
|
||||
<line number="631" hits="0"/>
|
||||
<line number="633" hits="0"/>
|
||||
<line number="635" hits="1"/>
|
||||
<line number="638" hits="1"/>
|
||||
<line number="644" hits="1"/>
|
||||
<line number="646" hits="1"/>
|
||||
<line number="648" hits="1"/>
|
||||
<line number="655" hits="0"/>
|
||||
<line number="658" hits="0"/>
|
||||
<line number="660" hits="0"/>
|
||||
<line number="661" hits="0"/>
|
||||
<line number="666" hits="0"/>
|
||||
<line number="669" hits="0"/>
|
||||
<line number="670" hits="0"/>
|
||||
<line number="673" hits="0"/>
|
||||
<line number="676" hits="0"/>
|
||||
<line number="678" hits="0"/>
|
||||
<line number="679" hits="0"/>
|
||||
<line number="680" hits="0"/>
|
||||
<line number="682" hits="0"/>
|
||||
<line number="685" hits="0"/>
|
||||
<line number="688" hits="0"/>
|
||||
<line number="694" hits="1"/>
|
||||
<line number="696" hits="0"/>
|
||||
<line number="697" hits="0"/>
|
||||
<line number="699" hits="0"/>
|
||||
<line number="700" hits="0"/>
|
||||
<line number="702" hits="0"/>
|
||||
<line number="705" hits="0"/>
|
||||
<line number="707" hits="0"/>
|
||||
<line number="708" hits="0"/>
|
||||
<line number="713" hits="0"/>
|
||||
<line number="716" hits="0"/>
|
||||
<line number="717" hits="0"/>
|
||||
<line number="720" hits="0"/>
|
||||
<line number="723" hits="0"/>
|
||||
<line number="725" hits="0"/>
|
||||
<line number="726" hits="0"/>
|
||||
<line number="727" hits="0"/>
|
||||
<line number="729" hits="0"/>
|
||||
<line number="732" hits="0"/>
|
||||
<line number="735" hits="0"/>
|
||||
<line number="741" hits="1"/>
|
||||
<line number="743" hits="0"/>
|
||||
<line number="744" hits="0"/>
|
||||
<line number="746" hits="0"/>
|
||||
<line number="747" hits="0"/>
|
||||
<line number="749" hits="0"/>
|
||||
<line number="750" hits="0"/>
|
||||
<line number="751" hits="0"/>
|
||||
<line number="752" hits="0"/>
|
||||
<line number="755" hits="0"/>
|
||||
<line number="756" hits="0"/>
|
||||
<line number="759" hits="0"/>
|
||||
<line number="762" hits="0"/>
|
||||
<line number="764" hits="0"/>
|
||||
<line number="765" hits="0"/>
|
||||
<line number="766" hits="0"/>
|
||||
<line number="768" hits="0"/>
|
||||
<line number="770" hits="0"/>
|
||||
<line number="773" hits="0"/>
|
||||
<line number="775" hits="0"/>
|
||||
<line number="777" hits="0"/>
|
||||
<line number="780" hits="0"/>
|
||||
<line number="781" hits="0"/>
|
||||
<line number="785" hits="0"/>
|
||||
<line number="786" hits="0"/>
|
||||
<line number="787" hits="0"/>
|
||||
<line number="789" hits="0"/>
|
||||
<line number="791" hits="0"/>
|
||||
</lines>
|
||||
</class>
|
||||
</classes>
|
||||
|
||||
5
src/__init__.py
Normal file
5
src/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
"""The Chart - Medication tracking application."""
|
||||
|
||||
__version__ = "1.1.0"
|
||||
__author__ = "Will"
|
||||
__description__ = "Chart to monitor your medication intake over time."
|
||||
Reference in New Issue
Block a user