diff --git a/.Jules/palette.md b/.Jules/palette.md index 018831f..96bd45d 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -1,3 +1,7 @@ ## 2024-05-23 - CLI UX Enhancement **Learning:** Even in CLI apps, visual distinction (colors, emojis) significantly reduces cognitive load when scanning logs. **Action:** Use ANSI colors and consistent emojis for key events (success/failure) in future CLI tools. + +## 2025-02-28 - Structured CLI Reports +**Learning:** Dense numerical data in CLI output is hard to parse. Using ASCII box-drawing characters and alignment to create a "dashboard" or "invoice" style summary significantly improves readability and perceived quality. +**Action:** When summarizing simulation or batch job results, always format the final report as a structured table or box rather than a list of print statements. diff --git a/.github/workflows/publish-package.yml b/.github/workflows/publish-package.yml new file mode 100644 index 0000000..24be36a --- /dev/null +++ b/.github/workflows/publish-package.yml @@ -0,0 +1,34 @@ +name: Create Container Package + +on: + push: + branches: ['main'] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ghcr.io/${{ github.repository }}:latest diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..9fd45e0 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,22 @@ +name: Rust + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build + run: cargo build --verbose + - name: Run tests + run: cargo test --verbose diff --git a/.gitignore b/.gitignore index 907591b..86c056e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,45 +1,2 @@ -# Prerequisites -*.d -# Compiled Object files -*.slo -*.lo -*.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Linker files -*.ilk - -# Debugger Files -*.pdb - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app - -# debug information files -*.dwo - -# Python -__pycache__/ -*.pyc +target/ diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..7082a2e --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,32 @@ +# Code Code of Conduct + +Like the technical community as a whole, the Code team and community is made up of a mixture of professionals and volunteers from all over the world, working on every aspect of the mission - including mentorship, teaching, and connecting people. + +Diversity is one of our huge strengths, but it can also lead to communication issues and unhappiness. To that end, we have a few ground rules that we ask people to adhere to. This code applies equally to founders, mentors and those seeking help and guidance. + +This isn’t an exhaustive list of things that you can’t do. Rather, take it in the spirit in which it’s intended - a guide to make it easier to enrich all of us and the technical communities in which we participate. + +This code of conduct applies to all spaces managed by the Code project or Parteon. This includes IRC, the mailing lists, the issue tracker, DSF events, and any other forums created by the project team which the community uses for communication. In addition, violations of this code outside these spaces may affect a person's ability to participate within them. + +If you believe someone is violating the code of conduct, we ask that you report it by emailing [rahmatnaim48@gmail.com](mailto:rahmatnaim.48@gmail.com). For more details please see our [Reporting guidelines](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/setting-guidelines-for-repository-contributors) + +- **Be friendly and patient.** +- **Be welcoming.** We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability. +- **Be considerate.** Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we're a world-wide community, so you might not be communicating in someone else's primary language. +- **Be respectful.** Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one. Members of the Code community should be respectful when dealing with other members as well as with people outside the Code community. +- **Be careful in the words that you choose.** We are a community of professionals, and we conduct ourselves professionally. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren't acceptable. This includes, but is not limited to: + - Violent threats or language directed against another person. + - Discriminatory jokes and language. + - Posting sexually explicit or violent material. + - Posting (or threatening to post) other people's personally identifying information ("doxing"). + - Personal insults, especially those using racist or sexist terms. + - Unwelcome sexual attention. + - Advocating for, or encouraging, any of the above behavior. + - Repeated harassment of others. In general, if someone asks you to stop, then stop. +- **When we disagree, try to understand why.** Disagreements, both social and technical, happen all the time and Code is no exception. It is important that we resolve disagreements and differing views constructively. Remember that we’re different. The strength of Code comes from its varied community, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes. + +Original text courtesy of the [Speak Up! project](http://web.archive.org/web/20141109123859/http://speakup.io/coc.html). + +## Questions? + +If you have questions, please see [Faq](https://support.github.com/?tags=dotcom-footer). If that doesn't answer your questions, feel free to [contact us](mailto:rahmatnaim48@gmail.com). diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..13cf4d6 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,223 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "colored" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +dependencies = [ + "lazy_static", + "windows-sys", +] + +[[package]] +name = "eijack-lab-rust" +version = "0.1.0" +dependencies = [ + "colored", + "rand", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.182" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "zerocopy" +version = "0.8.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..87c7552 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "eijack-lab-rust" +version = "0.1.0" +authors = ["EiJackGH rahmatnaim.48@gmail.com"] +edition = "2021" +description = "High-performance experiments for the Code & Commit 2026 initiative." + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +# For generating random numbers (like in your NumberGuess game) +rand = "0.8.5" + +# For colorful terminal output (perfect for your "Zen" Easter Egg) +colored = "2.1.0" + +# If you decide to port your Bitcoin test, you'll need this: +# reqwest = { version = "0.11", features = ["json"] } +# tokio = { version = "1", features = ["full"] } + +[profile.release] +# This makes your "Lab" code run at maximum speed (Saying YES to optimization!) +opt-level = 3 +lto = true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ff6e936 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# Use a lightweight C++ compiler image +FROM gcc:latest + +# Set the working directory inside the container +WORKDIR /usr/src/app + +# Copy your C++ file into the container +COPY NumberGuess.cpp . + +# Compile the code +RUN g++ -o NumberGuess NumberGuess.cpp + +# Command to run the game +CMD ["./NumberGuess"] diff --git a/GitHub-Badges.md b/GitHub-Badges.md new file mode 100644 index 0000000..5e40814 --- /dev/null +++ b/GitHub-Badges.md @@ -0,0 +1,12 @@ +# 🏅 GitHub Achievements Tracker + +| Badge | Achievement | Description | Status | +| :---: | :--- | :--- | :---: | +| | **YOLO** | Merged a PR without a code review. | [ ] | +| | **Pull Shark** | Opened pull requests that have been merged. | [ ] | +| | **Quickdraw** | Closed an issue/PR within 5 mins of opening. | [ ] | +| | **Galaxy Brain** | Answer was accepted in a Discussion. | [ ] | +| | **Pair Extraordinaire** | Co-authored a commit in a merged PR. | [ ] | +| | **Heart on Sleeve** | Contributed to a project that hit a sponsor goal. | [ ] | +| | **Starstruck** | Created a repository has so many stars. | [ ] | +| | **Arctic Code Vault Contributor** | Contributed code to several repositories in the 2020 GitHub Archive Program. | [ ] | diff --git a/NumberGuess/NumberGuess.cpp b/NumberGuess/NumberGuess.cpp new file mode 100644 index 0000000..c82e2f8 --- /dev/null +++ b/NumberGuess/NumberGuess.cpp @@ -0,0 +1,61 @@ +#include +#include // For rand() and srand() +#include // For time() +#include + +using namespace std; + +void showEasterEgg() { + cout << "\n[!] EASTER EGG ACTIVATED: THE ZEN MODE" << endl; + cout << "Inspired by the Word 1.1a secret found 29 years later." << endl; + cout << "EiJackGH Lab - Saying YES in 2026." << endl; + cout << "========================================" << endl; +} + +int main() { + // Seed the randomizer + srand(static_cast(time(0))); + + int secretNumber = rand() % 100 + 1; + string input; + int guess = 0; + int attempts = 0; + + cout << "--- EI-JACK LAB: NUMBER GUESSER V1.0 ---" << endl; + cout << "I'm thinking of a number between 1 and 100." << endl; + cout << "(Hint: Type 'zen' to see the credits)" << endl << endl; + + while (guess != secretNumber) { + cout << "Enter your guess: "; + cin >> input; + + // Check for Easter Egg + if (input == "zen" || input == "ZEN") { + showEasterEgg(); + continue; + } + + // Convert string to integer for the game logic + try { + guess = stoi(input); + } catch (...) { + cout << "Invalid input. Please enter a number." << endl; + continue; + } + + attempts++; + + if (guess > secretNumber) { + cout << ">>> Too high! Try again." << endl; + } else if (guess < secretNumber) { + cout << ">>> Too low! Try again." << endl; + } else { + cout << "\nCONGRATULATIONS!" << endl; + cout << "You found it in " << attempts << " attempts." << endl; + } + } + + cout << "----------------------------------------" << endl; + system("pause"); // Essential for Dev-C++ to keep the window open + return 0; +} diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..d28bbf3 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,25 @@ +# Security Policy + +## 🛡️ Our Commitment +At the **EiJackGH Lab**, we believe that transparency is the foundation of security. While these projects are largely experimental, we take the safety of our contributors and users seriously. + +## Supported Versions +We currently provide security updates for the following versions: + +| Version | Supported | +| ------- | ------------------ | +| 2.0.x | ✅ Yes | +| 1.5.x | 🔄 Critical Only | +| < 1.0.x | ❌ No | + +## Reporting a Vulnerability +**Please do not report security vulnerabilities through public GitHub issues.** If you discover a potential security flaw (e.g., an API key leak in the `bitcoin_test.py` or a buffer overflow in the C++ game), please follow these steps: + +1. **Email us:** Send a detailed report to `rahmatnaim.48@gmail.com` (replace with your real contact). +2. **Details:** Include a description of the vulnerability, steps to reproduce, and the potential impact. +3. **Response:** We aim to acknowledge all reports within **48 hours**. + +## 🚀 Saying YES to Safety in 2026 +As part of our **Code & Commit 2026** initiative, we use automated tools to keep our code clean: +* **Dependabot:** Monitors our dependencies. +* **CodeQL:** Performs static analysis on our C++ and Python logic. diff --git a/__pycache__/bitcoin.cpython-312.pyc b/__pycache__/bitcoin.cpython-312.pyc new file mode 100644 index 0000000..c4cf697 Binary files /dev/null and b/__pycache__/bitcoin.cpython-312.pyc differ diff --git a/__pycache__/bitcoin_trading_simulation.cpython-312.pyc b/__pycache__/bitcoin_trading_simulation.cpython-312.pyc index 52abfc2..77edb71 100644 Binary files a/__pycache__/bitcoin_trading_simulation.cpython-312.pyc and b/__pycache__/bitcoin_trading_simulation.cpython-312.pyc differ diff --git a/__pycache__/test_bitcoin.cpython-312-pytest-9.0.2.pyc b/__pycache__/test_bitcoin.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000..57c9363 Binary files /dev/null and b/__pycache__/test_bitcoin.cpython-312-pytest-9.0.2.pyc differ diff --git a/__pycache__/test_bitcoin_trading.cpython-312-pytest-9.0.2.pyc b/__pycache__/test_bitcoin_trading.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000..7e42478 Binary files /dev/null and b/__pycache__/test_bitcoin_trading.cpython-312-pytest-9.0.2.pyc differ diff --git a/__pycache__/test_bitcoin_trading.cpython-312.pyc b/__pycache__/test_bitcoin_trading.cpython-312.pyc deleted file mode 100644 index ecc297a..0000000 Binary files a/__pycache__/test_bitcoin_trading.cpython-312.pyc and /dev/null differ diff --git a/__pycache__/test_cli_args.cpython-312-pytest-9.0.2.pyc b/__pycache__/test_cli_args.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000..75886d8 Binary files /dev/null and b/__pycache__/test_cli_args.cpython-312-pytest-9.0.2.pyc differ diff --git a/__pycache__/test_simulation.cpython-312-pytest-9.0.2.pyc b/__pycache__/test_simulation.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000..b2d17a4 Binary files /dev/null and b/__pycache__/test_simulation.cpython-312-pytest-9.0.2.pyc differ diff --git a/bitcoin.py b/bitcoin.py new file mode 100644 index 0000000..03b3371 --- /dev/null +++ b/bitcoin.py @@ -0,0 +1,24 @@ +import requests + + +def get_bitcoin_price(): + """ + Fetches the current Bitcoin price from CoinDesk API. + """ + url = "https://api.coindesk.com/v1/bpi/currentprice.json" + try: + response = requests.get(url) + if response.status_code == 200: + data = response.json() + return data["bpi"]["USD"]["rate_float"] + else: + raise ConnectionError(f"API returned status code {response.status_code}") + except requests.RequestException: + raise ConnectionError("Failed to fetch Bitcoin price") + + +def calculate_value(amount, price): + """ + Calculates the total value of Bitcoin based on the amount and current price. + """ + return float(amount) * float(price) diff --git a/bitcoin_trading_simulation.py b/bitcoin_trading_simulation.py index c86be3e..7911477 100644 --- a/bitcoin_trading_simulation.py +++ b/bitcoin_trading_simulation.py @@ -1,38 +1,34 @@ import argparse +import time +import sys import numpy as np import pandas as pd -import argparse class Colors: HEADER = '\033[95m' BLUE = '\033[94m' + CYAN = '\033[96m' GREEN = '\033[92m' - RED = '\033[91m' + WARNING = '\033[93m' + FAIL = '\033[91m' ENDC = '\033[0m' BOLD = '\033[1m' + UNDERLINE = '\033[4m' @classmethod def disable(cls): cls.HEADER = '' cls.BLUE = '' + cls.CYAN = '' cls.GREEN = '' - cls.RED = '' + cls.WARNING = '' + cls.FAIL = '' cls.ENDC = '' cls.BOLD = '' + cls.UNDERLINE = '' -class Colors: - HEADER = '\033[95m' - BLUE = '\033[94m' - CYAN = '\033[96m' - GREEN = '\033[92m' - WARNING = '\033[93m' - FAIL = '\033[91m' - ENDC = '\033[0m' - BOLD = '\033[1m' - UNDERLINE = '\033[4m' - def simulate_bitcoin_prices(days=60, initial_price=50000, volatility=0.02): """ Simulates Bitcoin prices for a given number of days using Geometric Brownian Motion. @@ -87,9 +83,7 @@ def simulate_trading(signals, initial_cash=10000, quiet=False): portfolio['total_value'] = float(initial_cash) if not quiet: - print(f"{Colors.HEADER}{Colors.BOLD}------ Daily Trading Ledger ------{Colors.ENDC}") - - print(f"\n{Colors.HEADER}{Colors.BOLD}------ Daily Trading Ledger ------{Colors.ENDC}") + print(f"\n{Colors.HEADER}{Colors.BOLD}------ Daily Trading Ledger ------{Colors.ENDC}") for i, row in signals.iterrows(): if i > 0: portfolio.loc[i, 'cash'] = portfolio.loc[i-1, 'cash'] @@ -119,6 +113,21 @@ def simulate_trading(signals, initial_cash=10000, quiet=False): return portfolio +def countdown(quiet=False): + """ + Displays a countdown before the simulation starts. + """ + if quiet or not sys.stdout.isatty(): + return + + print(f"\n{Colors.BLUE}{Colors.BOLD}Simulation starting in...{Colors.ENDC}") + print("(", end="", flush=True) + for i in range(3, 0, -1): + print(f"{Colors.CYAN}{i}.. {Colors.ENDC}", end="", flush=True) + time.sleep(1) + print(f"{Colors.GREEN}{Colors.BOLD}GO!{Colors.ENDC})\n") + + if __name__ == "__main__": parser = argparse.ArgumentParser(description="Bitcoin Trading Simulation") parser.add_argument("--days", type=int, default=60, help="Number of days to simulate") @@ -133,6 +142,23 @@ def simulate_trading(signals, initial_cash=10000, quiet=False): if args.no_color: Colors.disable() + # Input Validation + if args.days <= 0: + print(f"{Colors.FAIL}Error: Days must be a positive integer.{Colors.ENDC}", file=sys.stderr) + sys.exit(1) + + if args.initial_cash <= 0: + print(f"{Colors.FAIL}Error: Initial cash must be greater than 0.{Colors.ENDC}", file=sys.stderr) + sys.exit(1) + + if args.initial_price <= 0: + print(f"{Colors.FAIL}Error: Initial price must be greater than 0.{Colors.ENDC}", file=sys.stderr) + sys.exit(1) + + if args.volatility < 0: + print(f"{Colors.FAIL}Error: Volatility must be non-negative.{Colors.ENDC}", file=sys.stderr) + sys.exit(1) + # Simulate prices prices = simulate_bitcoin_prices(days=args.days, initial_price=args.initial_price, volatility=args.volatility) @@ -142,6 +168,9 @@ def simulate_trading(signals, initial_cash=10000, quiet=False): # Generate trading signals signals = generate_trading_signals(signals) + # Display countdown + countdown(args.quiet) + # Simulate trading portfolio = simulate_trading(signals, initial_cash=args.initial_cash, quiet=args.quiet) @@ -153,13 +182,51 @@ def simulate_trading(signals, initial_cash=10000, quiet=False): # Compare with buy and hold strategy buy_and_hold_btc = args.initial_cash / prices.iloc[0] buy_and_hold_value = buy_and_hold_btc * prices.iloc[-1] - - print(f"\n{Colors.HEADER}{Colors.BOLD}------ Final Portfolio Performance ------{Colors.ENDC}") - print(f"Initial Cash: ${initial_cash:.2f}") - print(f"Final Portfolio Value: ${final_value:.2f}") - if profit >= 0: - print(f"{Colors.GREEN}💰 Profit/Loss: ${profit:.2f}{Colors.ENDC}") - else: - print(f"{Colors.FAIL}📉 Profit/Loss: ${profit:.2f}{Colors.ENDC}") - print(f"Buy and Hold Strategy Value: ${buy_and_hold_value:.2f}") - print(f"{Colors.HEADER}-----------------------------------------{Colors.ENDC}") + + # Calculate additional statistics + roi = (profit / initial_cash) * 100 + trade_count_buys = int(portfolio['btc'].diff().fillna(0).gt(0).sum()) + trade_count_sells = int(portfolio['btc'].diff().fillna(0).lt(0).sum()) + total_trades = trade_count_buys + trade_count_sells + vs_buy_hold = final_value - buy_and_hold_value + + # Format the final report + width = 44 + border = "═" * width + + print(f"\n{Colors.HEADER}{Colors.BOLD}╔{border}╗{Colors.ENDC}") + title = "Final Portfolio Performance" + print(f"{Colors.HEADER}{Colors.BOLD}║{title:^{width}}║{Colors.ENDC}") + print(f"{Colors.HEADER}{Colors.BOLD}╠{border}╣{Colors.ENDC}") + + def print_line(label, value_str, color=Colors.ENDC): + left_border = f"{Colors.HEADER}{Colors.BOLD}║{Colors.ENDC}" + right_border = f"{Colors.HEADER}{Colors.BOLD}║{Colors.ENDC}" + print(f"{left_border} {label:<24}{color}{value_str:>18}{Colors.ENDC} {right_border}") + + print_line("Initial Cash:", f"${initial_cash:,.2f}") + print_line("Final Portfolio Value:", f"${final_value:,.2f}") + + profit_color = Colors.GREEN if profit >= 0 else Colors.FAIL + profit_sign = "+" if profit >= 0 else "-" + print_line("Profit/Loss:", f"{profit_sign}${abs(profit):,.2f}", profit_color) + + roi_color = Colors.GREEN if roi >= 0 else Colors.FAIL + roi_sign = "+" if roi >= 0 else "-" + print_line("ROI:", f"{roi_sign}{abs(roi):.2f}%", roi_color) + + print(f"{Colors.HEADER}{Colors.BOLD}╠{border}╣{Colors.ENDC}") + + print_line("Total Trades:", f"{total_trades}") + print_line(" - Buys:", f"{trade_count_buys}") + print_line(" - Sells:", f"{trade_count_sells}") + + print(f"{Colors.HEADER}{Colors.BOLD}╠{border}╣{Colors.ENDC}") + + print_line("Buy & Hold Value:", f"${buy_and_hold_value:,.2f}") + + vs_color = Colors.GREEN if vs_buy_hold >= 0 else Colors.FAIL + vs_sign = "+" if vs_buy_hold >= 0 else "-" + print_line("vs Buy & Hold:", f"{vs_sign}${abs(vs_buy_hold):,.2f}", vs_color) + + print(f"{Colors.HEADER}{Colors.BOLD}╚{border}╝{Colors.ENDC}") diff --git a/requirements.txt b/requirements.txt index 5da331c..4ad1501 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ numpy pandas +requests diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..a3e978a --- /dev/null +++ b/src/main.rs @@ -0,0 +1 @@ +fn main() { println!("Hello, world!"); } diff --git a/target/.rustc_info.json b/target/.rustc_info.json new file mode 100644 index 0000000..747eff8 --- /dev/null +++ b/target/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":11990908473491073401,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/jules/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.92.0 (ded5c06cf 2025-12-08)\nbinary: rustc\ncommit-hash: ded5c06cf21d2b93bffd5d884aa6e96934ee4234\ncommit-date: 2025-12-08\nhost: x86_64-unknown-linux-gnu\nrelease: 1.92.0\nLLVM version: 21.1.3\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/target/CACHEDIR.TAG b/target/CACHEDIR.TAG new file mode 100644 index 0000000..20d7c31 --- /dev/null +++ b/target/CACHEDIR.TAG @@ -0,0 +1,3 @@ +Signature: 8a477f597d28d172789f06886806bc55 +# This file is a cache directory tag created by cargo. +# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/target/debug/.cargo-lock b/target/debug/.cargo-lock new file mode 100644 index 0000000..e69de29 diff --git a/target/debug/.fingerprint/cfg-if-2d20780be38939e6/dep-lib-cfg_if b/target/debug/.fingerprint/cfg-if-2d20780be38939e6/dep-lib-cfg_if new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/cfg-if-2d20780be38939e6/dep-lib-cfg_if differ diff --git a/target/debug/.fingerprint/cfg-if-2d20780be38939e6/invoked.timestamp b/target/debug/.fingerprint/cfg-if-2d20780be38939e6/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/cfg-if-2d20780be38939e6/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/cfg-if-2d20780be38939e6/lib-cfg_if b/target/debug/.fingerprint/cfg-if-2d20780be38939e6/lib-cfg_if new file mode 100644 index 0000000..117f269 --- /dev/null +++ b/target/debug/.fingerprint/cfg-if-2d20780be38939e6/lib-cfg_if @@ -0,0 +1 @@ +fb18494944273c29 \ No newline at end of file diff --git a/target/debug/.fingerprint/cfg-if-2d20780be38939e6/lib-cfg_if.json b/target/debug/.fingerprint/cfg-if-2d20780be38939e6/lib-cfg_if.json new file mode 100644 index 0000000..1156ac1 --- /dev/null +++ b/target/debug/.fingerprint/cfg-if-2d20780be38939e6/lib-cfg_if.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":15657897354478470176,"path":828088505969299709,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-2d20780be38939e6/dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/colored-0832305205b4f75d/dep-lib-colored b/target/debug/.fingerprint/colored-0832305205b4f75d/dep-lib-colored new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/colored-0832305205b4f75d/dep-lib-colored differ diff --git a/target/debug/.fingerprint/colored-0832305205b4f75d/invoked.timestamp b/target/debug/.fingerprint/colored-0832305205b4f75d/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/colored-0832305205b4f75d/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/colored-0832305205b4f75d/lib-colored b/target/debug/.fingerprint/colored-0832305205b4f75d/lib-colored new file mode 100644 index 0000000..a072ffb --- /dev/null +++ b/target/debug/.fingerprint/colored-0832305205b4f75d/lib-colored @@ -0,0 +1 @@ +352ba7ccf97bd44e \ No newline at end of file diff --git a/target/debug/.fingerprint/colored-0832305205b4f75d/lib-colored.json b/target/debug/.fingerprint/colored-0832305205b4f75d/lib-colored.json new file mode 100644 index 0000000..04b0add --- /dev/null +++ b/target/debug/.fingerprint/colored-0832305205b4f75d/lib-colored.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[]","declared_features":"[\"no-color\"]","target":10635017557502881088,"profile":15657897354478470176,"path":4587278367410923654,"deps":[[17917672826516349275,"lazy_static",false,8423304046068410946]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/colored-0832305205b4f75d/dep-lib-colored","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/bin-eijack-lab-rust b/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/bin-eijack-lab-rust new file mode 100644 index 0000000..15a3c41 --- /dev/null +++ b/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/bin-eijack-lab-rust @@ -0,0 +1 @@ +eaa81b302d8c79b7 \ No newline at end of file diff --git a/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/bin-eijack-lab-rust.json b/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/bin-eijack-lab-rust.json new file mode 100644 index 0000000..68299ae --- /dev/null +++ b/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/bin-eijack-lab-rust.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[]","declared_features":"[]","target":16337832459791398879,"profile":8731458305071235362,"path":4942398508502643691,"deps":[[13208667028893622512,"rand",false,16627439250970250203],[13731153033113646547,"colored",false,5680301342831618869]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/dep-bin-eijack-lab-rust","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/dep-bin-eijack-lab-rust b/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/dep-bin-eijack-lab-rust new file mode 100644 index 0000000..5c54f74 Binary files /dev/null and b/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/dep-bin-eijack-lab-rust differ diff --git a/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/invoked.timestamp b/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/eijack-lab-rust-694e13ac6608183a/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/dep-lib-getrandom b/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/dep-lib-getrandom new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/dep-lib-getrandom differ diff --git a/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/invoked.timestamp b/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/lib-getrandom b/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/lib-getrandom new file mode 100644 index 0000000..47ae407 --- /dev/null +++ b/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/lib-getrandom @@ -0,0 +1 @@ +2d9f943c01b1af4a \ No newline at end of file diff --git a/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/lib-getrandom.json b/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/lib-getrandom.json new file mode 100644 index 0000000..734ae3d --- /dev/null +++ b/target/debug/.fingerprint/getrandom-8727cd4f494f15ae/lib-getrandom.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[\"std\"]","declared_features":"[\"compiler_builtins\", \"core\", \"custom\", \"js\", \"js-sys\", \"linux_disable_fallback\", \"rdrand\", \"rustc-dep-of-std\", \"std\", \"test-in-browser\", \"wasm-bindgen\"]","target":16244099637825074703,"profile":15657897354478470176,"path":59692596234819462,"deps":[[7667230146095136825,"cfg_if",false,2971293028398471419],[18365559012052052344,"libc",false,16544904380361567079]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/getrandom-8727cd4f494f15ae/dep-lib-getrandom","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/lazy_static-722897d89f2060da/dep-lib-lazy_static b/target/debug/.fingerprint/lazy_static-722897d89f2060da/dep-lib-lazy_static new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/lazy_static-722897d89f2060da/dep-lib-lazy_static differ diff --git a/target/debug/.fingerprint/lazy_static-722897d89f2060da/invoked.timestamp b/target/debug/.fingerprint/lazy_static-722897d89f2060da/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/lazy_static-722897d89f2060da/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/lazy_static-722897d89f2060da/lib-lazy_static b/target/debug/.fingerprint/lazy_static-722897d89f2060da/lib-lazy_static new file mode 100644 index 0000000..d11da81 --- /dev/null +++ b/target/debug/.fingerprint/lazy_static-722897d89f2060da/lib-lazy_static @@ -0,0 +1 @@ +42aa04bd6696e574 \ No newline at end of file diff --git a/target/debug/.fingerprint/lazy_static-722897d89f2060da/lib-lazy_static.json b/target/debug/.fingerprint/lazy_static-722897d89f2060da/lib-lazy_static.json new file mode 100644 index 0000000..5828400 --- /dev/null +++ b/target/debug/.fingerprint/lazy_static-722897d89f2060da/lib-lazy_static.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[]","declared_features":"[\"spin\", \"spin_no_std\"]","target":8659156474882058145,"profile":15657897354478470176,"path":14186808162164221862,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lazy_static-722897d89f2060da/dep-lib-lazy_static","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/libc-43b08553b7e99b31/dep-lib-libc b/target/debug/.fingerprint/libc-43b08553b7e99b31/dep-lib-libc new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/libc-43b08553b7e99b31/dep-lib-libc differ diff --git a/target/debug/.fingerprint/libc-43b08553b7e99b31/invoked.timestamp b/target/debug/.fingerprint/libc-43b08553b7e99b31/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/libc-43b08553b7e99b31/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/libc-43b08553b7e99b31/lib-libc b/target/debug/.fingerprint/libc-43b08553b7e99b31/lib-libc new file mode 100644 index 0000000..42769be --- /dev/null +++ b/target/debug/.fingerprint/libc-43b08553b7e99b31/lib-libc @@ -0,0 +1 @@ +676b4112e04e9be5 \ No newline at end of file diff --git a/target/debug/.fingerprint/libc-43b08553b7e99b31/lib-libc.json b/target/debug/.fingerprint/libc-43b08553b7e99b31/lib-libc.json new file mode 100644 index 0000000..1faa332 --- /dev/null +++ b/target/debug/.fingerprint/libc-43b08553b7e99b31/lib-libc.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[]","declared_features":"[\"align\", \"const-extern-fn\", \"default\", \"extra_traits\", \"rustc-dep-of-std\", \"rustc-std-workspace-core\", \"std\", \"use_std\"]","target":17682796336736096309,"profile":6200076328592068522,"path":15371363379775449269,"deps":[[18365559012052052344,"build_script_build",false,5662575024077545023]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/libc-43b08553b7e99b31/dep-lib-libc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/build-script-build-script-build b/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/build-script-build-script-build new file mode 100644 index 0000000..9f62750 --- /dev/null +++ b/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/build-script-build-script-build @@ -0,0 +1 @@ +901ab8cd676b0076 \ No newline at end of file diff --git a/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/build-script-build-script-build.json b/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/build-script-build-script-build.json new file mode 100644 index 0000000..6df1866 --- /dev/null +++ b/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/build-script-build-script-build.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[]","declared_features":"[\"align\", \"const-extern-fn\", \"default\", \"extra_traits\", \"rustc-dep-of-std\", \"rustc-std-workspace-core\", \"std\", \"use_std\"]","target":5408242616063297496,"profile":1565149285177326037,"path":6665272496194606373,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/libc-9c599bdfe2e6e8b5/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/dep-build-script-build-script-build b/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/dep-build-script-build-script-build new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/dep-build-script-build-script-build differ diff --git a/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/invoked.timestamp b/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/libc-9c599bdfe2e6e8b5/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/libc-db946e1a6607099d/run-build-script-build-script-build b/target/debug/.fingerprint/libc-db946e1a6607099d/run-build-script-build-script-build new file mode 100644 index 0000000..e409f54 --- /dev/null +++ b/target/debug/.fingerprint/libc-db946e1a6607099d/run-build-script-build-script-build @@ -0,0 +1 @@ +3f1e2498fb81954e \ No newline at end of file diff --git a/target/debug/.fingerprint/libc-db946e1a6607099d/run-build-script-build-script-build.json b/target/debug/.fingerprint/libc-db946e1a6607099d/run-build-script-build-script-build.json new file mode 100644 index 0000000..905bf4d --- /dev/null +++ b/target/debug/.fingerprint/libc-db946e1a6607099d/run-build-script-build-script-build.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[18365559012052052344,"build_script_build",false,8502914190052694672]],"local":[{"RerunIfChanged":{"output":"debug/build/libc-db946e1a6607099d/output","paths":["build.rs"]}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_FREEBSD_VERSION","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_MUSL_V1_2_3","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_GNU_TIME_BITS","val":null}}],"rustflags":[],"config":0,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/dep-lib-ppv_lite86 b/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/dep-lib-ppv_lite86 new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/dep-lib-ppv_lite86 differ diff --git a/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/invoked.timestamp b/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/lib-ppv_lite86 b/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/lib-ppv_lite86 new file mode 100644 index 0000000..2e1fa4c --- /dev/null +++ b/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/lib-ppv_lite86 @@ -0,0 +1 @@ +bea6f7245d2719fd \ No newline at end of file diff --git a/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/lib-ppv_lite86.json b/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/lib-ppv_lite86.json new file mode 100644 index 0000000..36f0b00 --- /dev/null +++ b/target/debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/lib-ppv_lite86.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[\"simd\", \"std\"]","declared_features":"[\"default\", \"no_simd\", \"simd\", \"std\"]","target":2607852365283500179,"profile":15657897354478470176,"path":13675546687387606575,"deps":[[17375358419629610217,"zerocopy",false,6221313426439170667]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ppv-lite86-e98734d0c5de5b29/dep-lib-ppv_lite86","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/rand-8c96806fecc70ae1/dep-lib-rand b/target/debug/.fingerprint/rand-8c96806fecc70ae1/dep-lib-rand new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/rand-8c96806fecc70ae1/dep-lib-rand differ diff --git a/target/debug/.fingerprint/rand-8c96806fecc70ae1/invoked.timestamp b/target/debug/.fingerprint/rand-8c96806fecc70ae1/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/rand-8c96806fecc70ae1/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/rand-8c96806fecc70ae1/lib-rand b/target/debug/.fingerprint/rand-8c96806fecc70ae1/lib-rand new file mode 100644 index 0000000..00cc157 --- /dev/null +++ b/target/debug/.fingerprint/rand-8c96806fecc70ae1/lib-rand @@ -0,0 +1 @@ +db0b781ee787c0e6 \ No newline at end of file diff --git a/target/debug/.fingerprint/rand-8c96806fecc70ae1/lib-rand.json b/target/debug/.fingerprint/rand-8c96806fecc70ae1/lib-rand.json new file mode 100644 index 0000000..0cf48f8 --- /dev/null +++ b/target/debug/.fingerprint/rand-8c96806fecc70ae1/lib-rand.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[\"alloc\", \"default\", \"getrandom\", \"libc\", \"rand_chacha\", \"std\", \"std_rng\"]","declared_features":"[\"alloc\", \"default\", \"getrandom\", \"libc\", \"log\", \"min_const_gen\", \"nightly\", \"packed_simd\", \"rand_chacha\", \"serde\", \"serde1\", \"simd_support\", \"small_rng\", \"std\", \"std_rng\"]","target":8827111241893198906,"profile":15657897354478470176,"path":10385015244823701454,"deps":[[1573238666360410412,"rand_chacha",false,11991201559265771079],[18130209639506977569,"rand_core",false,9973978111316723004],[18365559012052052344,"libc",false,16544904380361567079]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/rand-8c96806fecc70ae1/dep-lib-rand","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/dep-lib-rand_chacha b/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/dep-lib-rand_chacha new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/dep-lib-rand_chacha differ diff --git a/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/invoked.timestamp b/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/lib-rand_chacha b/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/lib-rand_chacha new file mode 100644 index 0000000..fd9dba8 --- /dev/null +++ b/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/lib-rand_chacha @@ -0,0 +1 @@ +477e253a494e69a6 \ No newline at end of file diff --git a/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/lib-rand_chacha.json b/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/lib-rand_chacha.json new file mode 100644 index 0000000..49723c7 --- /dev/null +++ b/target/debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/lib-rand_chacha.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[\"std\"]","declared_features":"[\"default\", \"serde\", \"serde1\", \"simd\", \"std\"]","target":15766068575093147603,"profile":15657897354478470176,"path":16898388428857554433,"deps":[[12919011715531272606,"ppv_lite86",false,18237651447019185854],[18130209639506977569,"rand_core",false,9973978111316723004]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/rand_chacha-06e631e3ab9dff9f/dep-lib-rand_chacha","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/dep-lib-rand_core b/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/dep-lib-rand_core new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/dep-lib-rand_core differ diff --git a/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/invoked.timestamp b/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/lib-rand_core b/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/lib-rand_core new file mode 100644 index 0000000..b57507a --- /dev/null +++ b/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/lib-rand_core @@ -0,0 +1 @@ +3c058e723fb06a8a \ No newline at end of file diff --git a/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/lib-rand_core.json b/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/lib-rand_core.json new file mode 100644 index 0000000..8119c97 --- /dev/null +++ b/target/debug/.fingerprint/rand_core-1dea1b5cd4602ac8/lib-rand_core.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[\"alloc\", \"getrandom\", \"std\"]","declared_features":"[\"alloc\", \"getrandom\", \"serde\", \"serde1\", \"std\"]","target":13770603672348587087,"profile":15657897354478470176,"path":5059078334079509975,"deps":[[11023519408959114924,"getrandom",false,5381714698600488749]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/rand_core-1dea1b5cd4602ac8/dep-lib-rand_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/zerocopy-0c726811dd96422b/dep-lib-zerocopy b/target/debug/.fingerprint/zerocopy-0c726811dd96422b/dep-lib-zerocopy new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/zerocopy-0c726811dd96422b/dep-lib-zerocopy differ diff --git a/target/debug/.fingerprint/zerocopy-0c726811dd96422b/invoked.timestamp b/target/debug/.fingerprint/zerocopy-0c726811dd96422b/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/zerocopy-0c726811dd96422b/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/.fingerprint/zerocopy-0c726811dd96422b/lib-zerocopy b/target/debug/.fingerprint/zerocopy-0c726811dd96422b/lib-zerocopy new file mode 100644 index 0000000..95fd8ce --- /dev/null +++ b/target/debug/.fingerprint/zerocopy-0c726811dd96422b/lib-zerocopy @@ -0,0 +1 @@ +6b6a4673998b5656 \ No newline at end of file diff --git a/target/debug/.fingerprint/zerocopy-0c726811dd96422b/lib-zerocopy.json b/target/debug/.fingerprint/zerocopy-0c726811dd96422b/lib-zerocopy.json new file mode 100644 index 0000000..7ad8a87 --- /dev/null +++ b/target/debug/.fingerprint/zerocopy-0c726811dd96422b/lib-zerocopy.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[\"simd\"]","declared_features":"[\"__internal_use_only_features_that_work_on_stable\", \"alloc\", \"derive\", \"float-nightly\", \"simd\", \"simd-nightly\", \"std\", \"zerocopy-derive\"]","target":3084901215544504908,"profile":15657897354478470176,"path":9721087258936554607,"deps":[[17375358419629610217,"build_script_build",false,7447620231246918782]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/zerocopy-0c726811dd96422b/dep-lib-zerocopy","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/zerocopy-30c85b0c603db08e/run-build-script-build-script-build b/target/debug/.fingerprint/zerocopy-30c85b0c603db08e/run-build-script-build-script-build new file mode 100644 index 0000000..19b75c1 --- /dev/null +++ b/target/debug/.fingerprint/zerocopy-30c85b0c603db08e/run-build-script-build-script-build @@ -0,0 +1 @@ +7e347c2124435b67 \ No newline at end of file diff --git a/target/debug/.fingerprint/zerocopy-30c85b0c603db08e/run-build-script-build-script-build.json b/target/debug/.fingerprint/zerocopy-30c85b0c603db08e/run-build-script-build-script-build.json new file mode 100644 index 0000000..7b81793 --- /dev/null +++ b/target/debug/.fingerprint/zerocopy-30c85b0c603db08e/run-build-script-build-script-build.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[17375358419629610217,"build_script_build",false,17805900089940872276]],"local":[{"RerunIfChanged":{"output":"debug/build/zerocopy-30c85b0c603db08e/output","paths":["build.rs","Cargo.toml"]}}],"rustflags":[],"config":0,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/build-script-build-script-build b/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/build-script-build-script-build new file mode 100644 index 0000000..b46addd --- /dev/null +++ b/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/build-script-build-script-build @@ -0,0 +1 @@ +548c05c7ca431bf7 \ No newline at end of file diff --git a/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/build-script-build-script-build.json b/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/build-script-build-script-build.json new file mode 100644 index 0000000..ed60d76 --- /dev/null +++ b/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/build-script-build-script-build.json @@ -0,0 +1 @@ +{"rustc":4758242423518056681,"features":"[\"simd\"]","declared_features":"[\"__internal_use_only_features_that_work_on_stable\", \"alloc\", \"derive\", \"float-nightly\", \"simd\", \"simd-nightly\", \"std\", \"zerocopy-derive\"]","target":5408242616063297496,"profile":2225463790103693989,"path":3740372662056961748,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/dep-build-script-build-script-build b/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/dep-build-script-build-script-build new file mode 100644 index 0000000..ec3cb8b Binary files /dev/null and b/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/dep-build-script-build-script-build differ diff --git a/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/invoked.timestamp b/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/.fingerprint/zerocopy-88913a0a0ea1f7ec/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/build/libc-9c599bdfe2e6e8b5/build-script-build b/target/debug/build/libc-9c599bdfe2e6e8b5/build-script-build new file mode 100755 index 0000000..bbf4a10 Binary files /dev/null and b/target/debug/build/libc-9c599bdfe2e6e8b5/build-script-build differ diff --git a/target/debug/build/libc-9c599bdfe2e6e8b5/build_script_build-9c599bdfe2e6e8b5 b/target/debug/build/libc-9c599bdfe2e6e8b5/build_script_build-9c599bdfe2e6e8b5 new file mode 100755 index 0000000..bbf4a10 Binary files /dev/null and b/target/debug/build/libc-9c599bdfe2e6e8b5/build_script_build-9c599bdfe2e6e8b5 differ diff --git a/target/debug/build/libc-db946e1a6607099d/invoked.timestamp b/target/debug/build/libc-db946e1a6607099d/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/build/libc-db946e1a6607099d/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/build/libc-db946e1a6607099d/output b/target/debug/build/libc-db946e1a6607099d/output new file mode 100644 index 0000000..89a43b5 --- /dev/null +++ b/target/debug/build/libc-db946e1a6607099d/output @@ -0,0 +1,25 @@ +cargo:rerun-if-changed=build.rs +cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_FREEBSD_VERSION +cargo:rustc-cfg=freebsd12 +cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_MUSL_V1_2_3 +cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64 +cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS +cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_GNU_TIME_BITS +cargo:rustc-check-cfg=cfg(emscripten_old_stat_abi) +cargo:rustc-check-cfg=cfg(espidf_time32) +cargo:rustc-check-cfg=cfg(freebsd10) +cargo:rustc-check-cfg=cfg(freebsd11) +cargo:rustc-check-cfg=cfg(freebsd12) +cargo:rustc-check-cfg=cfg(freebsd13) +cargo:rustc-check-cfg=cfg(freebsd14) +cargo:rustc-check-cfg=cfg(freebsd15) +cargo:rustc-check-cfg=cfg(gnu_file_offset_bits64) +cargo:rustc-check-cfg=cfg(gnu_time_bits64) +cargo:rustc-check-cfg=cfg(libc_deny_warnings) +cargo:rustc-check-cfg=cfg(linux_time_bits64) +cargo:rustc-check-cfg=cfg(musl_v1_2_3) +cargo:rustc-check-cfg=cfg(musl32_time64) +cargo:rustc-check-cfg=cfg(vxworks_lt_25_09) +cargo:rustc-check-cfg=cfg(target_os,values("switch","aix","ohos","hurd","rtems","visionos","nuttx","cygwin","qurt")) +cargo:rustc-check-cfg=cfg(target_env,values("illumos","wasi","aix","ohos","nto71_iosock","nto80")) +cargo:rustc-check-cfg=cfg(target_arch,values("loongarch64","mips32r6","mips64r6","csky")) diff --git a/target/debug/build/libc-db946e1a6607099d/root-output b/target/debug/build/libc-db946e1a6607099d/root-output new file mode 100644 index 0000000..afe4d54 --- /dev/null +++ b/target/debug/build/libc-db946e1a6607099d/root-output @@ -0,0 +1 @@ +/app/target/debug/build/libc-db946e1a6607099d/out \ No newline at end of file diff --git a/target/debug/build/libc-db946e1a6607099d/stderr b/target/debug/build/libc-db946e1a6607099d/stderr new file mode 100644 index 0000000..e69de29 diff --git a/target/debug/build/zerocopy-30c85b0c603db08e/invoked.timestamp b/target/debug/build/zerocopy-30c85b0c603db08e/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/target/debug/build/zerocopy-30c85b0c603db08e/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/target/debug/build/zerocopy-30c85b0c603db08e/output b/target/debug/build/zerocopy-30c85b0c603db08e/output new file mode 100644 index 0000000..deda5f6 --- /dev/null +++ b/target/debug/build/zerocopy-30c85b0c603db08e/output @@ -0,0 +1,21 @@ +cargo:rerun-if-changed=build.rs +cargo:rerun-if-changed=Cargo.toml +cargo:rustc-check-cfg=cfg(no_zerocopy_simd_x86_avx12_1_89_0) +cargo:rustc-check-cfg=cfg(rust, values("1.89.0")) +cargo:rustc-check-cfg=cfg(no_zerocopy_core_error_1_81_0) +cargo:rustc-check-cfg=cfg(rust, values("1.81.0")) +cargo:rustc-check-cfg=cfg(no_zerocopy_diagnostic_on_unimplemented_1_78_0) +cargo:rustc-check-cfg=cfg(rust, values("1.78.0")) +cargo:rustc-check-cfg=cfg(no_zerocopy_generic_bounds_in_const_fn_1_61_0) +cargo:rustc-check-cfg=cfg(rust, values("1.61.0")) +cargo:rustc-check-cfg=cfg(no_zerocopy_target_has_atomics_1_60_0) +cargo:rustc-check-cfg=cfg(rust, values("1.60.0")) +cargo:rustc-check-cfg=cfg(no_zerocopy_aarch64_simd_1_59_0) +cargo:rustc-check-cfg=cfg(rust, values("1.59.0")) +cargo:rustc-check-cfg=cfg(no_zerocopy_panic_in_const_and_vec_try_reserve_1_57_0) +cargo:rustc-check-cfg=cfg(rust, values("1.57.0")) +cargo:rustc-check-cfg=cfg(doc_cfg) +cargo:rustc-check-cfg=cfg(kani) +cargo:rustc-check-cfg=cfg(__ZEROCOPY_INTERNAL_USE_ONLY_NIGHTLY_FEATURES_IN_TESTS) +cargo:rustc-check-cfg=cfg(__ZEROCOPY_INTERNAL_USE_ONLY_DEV_MODE) +cargo:rustc-check-cfg=cfg(coverage_nightly) diff --git a/target/debug/build/zerocopy-30c85b0c603db08e/root-output b/target/debug/build/zerocopy-30c85b0c603db08e/root-output new file mode 100644 index 0000000..7559a80 --- /dev/null +++ b/target/debug/build/zerocopy-30c85b0c603db08e/root-output @@ -0,0 +1 @@ +/app/target/debug/build/zerocopy-30c85b0c603db08e/out \ No newline at end of file diff --git a/target/debug/build/zerocopy-30c85b0c603db08e/stderr b/target/debug/build/zerocopy-30c85b0c603db08e/stderr new file mode 100644 index 0000000..e69de29 diff --git a/target/debug/build/zerocopy-88913a0a0ea1f7ec/build-script-build b/target/debug/build/zerocopy-88913a0a0ea1f7ec/build-script-build new file mode 100755 index 0000000..198579a Binary files /dev/null and b/target/debug/build/zerocopy-88913a0a0ea1f7ec/build-script-build differ diff --git a/target/debug/build/zerocopy-88913a0a0ea1f7ec/build_script_build-88913a0a0ea1f7ec b/target/debug/build/zerocopy-88913a0a0ea1f7ec/build_script_build-88913a0a0ea1f7ec new file mode 100755 index 0000000..198579a Binary files /dev/null and b/target/debug/build/zerocopy-88913a0a0ea1f7ec/build_script_build-88913a0a0ea1f7ec differ diff --git a/target/debug/deps/eijack_lab_rust-694e13ac6608183a b/target/debug/deps/eijack_lab_rust-694e13ac6608183a new file mode 100755 index 0000000..9b53f5a Binary files /dev/null and b/target/debug/deps/eijack_lab_rust-694e13ac6608183a differ diff --git a/target/debug/deps/libcfg_if-2d20780be38939e6.rlib b/target/debug/deps/libcfg_if-2d20780be38939e6.rlib new file mode 100644 index 0000000..2dd8ed6 Binary files /dev/null and b/target/debug/deps/libcfg_if-2d20780be38939e6.rlib differ diff --git a/target/debug/deps/libcfg_if-2d20780be38939e6.rmeta b/target/debug/deps/libcfg_if-2d20780be38939e6.rmeta new file mode 100644 index 0000000..bfb273f Binary files /dev/null and b/target/debug/deps/libcfg_if-2d20780be38939e6.rmeta differ diff --git a/target/debug/deps/libcolored-0832305205b4f75d.rlib b/target/debug/deps/libcolored-0832305205b4f75d.rlib new file mode 100644 index 0000000..7f77dfb Binary files /dev/null and b/target/debug/deps/libcolored-0832305205b4f75d.rlib differ diff --git a/target/debug/deps/libcolored-0832305205b4f75d.rmeta b/target/debug/deps/libcolored-0832305205b4f75d.rmeta new file mode 100644 index 0000000..941dead Binary files /dev/null and b/target/debug/deps/libcolored-0832305205b4f75d.rmeta differ diff --git a/target/debug/deps/libgetrandom-8727cd4f494f15ae.rlib b/target/debug/deps/libgetrandom-8727cd4f494f15ae.rlib new file mode 100644 index 0000000..4bafbb0 Binary files /dev/null and b/target/debug/deps/libgetrandom-8727cd4f494f15ae.rlib differ diff --git a/target/debug/deps/libgetrandom-8727cd4f494f15ae.rmeta b/target/debug/deps/libgetrandom-8727cd4f494f15ae.rmeta new file mode 100644 index 0000000..02d489e Binary files /dev/null and b/target/debug/deps/libgetrandom-8727cd4f494f15ae.rmeta differ diff --git a/target/debug/deps/liblazy_static-722897d89f2060da.rlib b/target/debug/deps/liblazy_static-722897d89f2060da.rlib new file mode 100644 index 0000000..0077569 Binary files /dev/null and b/target/debug/deps/liblazy_static-722897d89f2060da.rlib differ diff --git a/target/debug/deps/liblazy_static-722897d89f2060da.rmeta b/target/debug/deps/liblazy_static-722897d89f2060da.rmeta new file mode 100644 index 0000000..d501a72 Binary files /dev/null and b/target/debug/deps/liblazy_static-722897d89f2060da.rmeta differ diff --git a/target/debug/deps/liblibc-43b08553b7e99b31.rlib b/target/debug/deps/liblibc-43b08553b7e99b31.rlib new file mode 100644 index 0000000..559c74c Binary files /dev/null and b/target/debug/deps/liblibc-43b08553b7e99b31.rlib differ diff --git a/target/debug/deps/liblibc-43b08553b7e99b31.rmeta b/target/debug/deps/liblibc-43b08553b7e99b31.rmeta new file mode 100644 index 0000000..dfcf25a Binary files /dev/null and b/target/debug/deps/liblibc-43b08553b7e99b31.rmeta differ diff --git a/target/debug/deps/libppv_lite86-e98734d0c5de5b29.rlib b/target/debug/deps/libppv_lite86-e98734d0c5de5b29.rlib new file mode 100644 index 0000000..52fa81b Binary files /dev/null and b/target/debug/deps/libppv_lite86-e98734d0c5de5b29.rlib differ diff --git a/target/debug/deps/libppv_lite86-e98734d0c5de5b29.rmeta b/target/debug/deps/libppv_lite86-e98734d0c5de5b29.rmeta new file mode 100644 index 0000000..d7d7844 Binary files /dev/null and b/target/debug/deps/libppv_lite86-e98734d0c5de5b29.rmeta differ diff --git a/target/debug/deps/librand-8c96806fecc70ae1.rlib b/target/debug/deps/librand-8c96806fecc70ae1.rlib new file mode 100644 index 0000000..bcde2c7 Binary files /dev/null and b/target/debug/deps/librand-8c96806fecc70ae1.rlib differ diff --git a/target/debug/deps/librand-8c96806fecc70ae1.rmeta b/target/debug/deps/librand-8c96806fecc70ae1.rmeta new file mode 100644 index 0000000..10e4683 Binary files /dev/null and b/target/debug/deps/librand-8c96806fecc70ae1.rmeta differ diff --git a/target/debug/deps/librand_chacha-06e631e3ab9dff9f.rlib b/target/debug/deps/librand_chacha-06e631e3ab9dff9f.rlib new file mode 100644 index 0000000..8dbd67e Binary files /dev/null and b/target/debug/deps/librand_chacha-06e631e3ab9dff9f.rlib differ diff --git a/target/debug/deps/librand_chacha-06e631e3ab9dff9f.rmeta b/target/debug/deps/librand_chacha-06e631e3ab9dff9f.rmeta new file mode 100644 index 0000000..10d86e8 Binary files /dev/null and b/target/debug/deps/librand_chacha-06e631e3ab9dff9f.rmeta differ diff --git a/target/debug/deps/librand_core-1dea1b5cd4602ac8.rlib b/target/debug/deps/librand_core-1dea1b5cd4602ac8.rlib new file mode 100644 index 0000000..7880486 Binary files /dev/null and b/target/debug/deps/librand_core-1dea1b5cd4602ac8.rlib differ diff --git a/target/debug/deps/librand_core-1dea1b5cd4602ac8.rmeta b/target/debug/deps/librand_core-1dea1b5cd4602ac8.rmeta new file mode 100644 index 0000000..18c0a81 Binary files /dev/null and b/target/debug/deps/librand_core-1dea1b5cd4602ac8.rmeta differ diff --git a/target/debug/deps/libzerocopy-0c726811dd96422b.rlib b/target/debug/deps/libzerocopy-0c726811dd96422b.rlib new file mode 100644 index 0000000..dbff8b9 Binary files /dev/null and b/target/debug/deps/libzerocopy-0c726811dd96422b.rlib differ diff --git a/target/debug/deps/libzerocopy-0c726811dd96422b.rmeta b/target/debug/deps/libzerocopy-0c726811dd96422b.rmeta new file mode 100644 index 0000000..8ded133 Binary files /dev/null and b/target/debug/deps/libzerocopy-0c726811dd96422b.rmeta differ diff --git a/target/debug/eijack-lab-rust b/target/debug/eijack-lab-rust new file mode 100755 index 0000000..9b53f5a Binary files /dev/null and b/target/debug/eijack-lab-rust differ diff --git a/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/dep-graph.bin b/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/dep-graph.bin new file mode 100644 index 0000000..2ae9581 Binary files /dev/null and b/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/dep-graph.bin differ diff --git a/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/query-cache.bin b/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/query-cache.bin new file mode 100644 index 0000000..2504e29 Binary files /dev/null and b/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/query-cache.bin differ diff --git a/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/work-products.bin b/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/work-products.bin new file mode 100644 index 0000000..83bbd48 Binary files /dev/null and b/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv-0j9dye9parlitnbkrjdze8d5r/work-products.bin differ diff --git a/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv.lock b/target/debug/incremental/eijack_lab_rust-11rbgacjp2asi/s-hg6wrjagcr-0bc3gcv.lock new file mode 100644 index 0000000..e69de29 diff --git a/test_bitcoin.py b/test_bitcoin.py index 163248c..4785f33 100644 --- a/test_bitcoin.py +++ b/test_bitcoin.py @@ -2,6 +2,7 @@ from unittest.mock import patch from bitcoin import get_bitcoin_price, calculate_value + # Test 1: Verify the calculation logic def test_calculate_value(): """Ensure BTC to USD conversion math is correct.""" @@ -10,10 +11,12 @@ def test_calculate_value(): expected = 125000.0 assert calculate_value(amount, price) == expected + # Test 2: Verify handling of zero amount def test_calculate_value_zero(): assert calculate_value(0, 50000.0) == 0.0 + # Test 3: Mocking an API response @patch('bitcoin.requests.get') def test_get_bitcoin_price(mock_get): @@ -23,10 +26,11 @@ def test_get_bitcoin_price(mock_get): "bpi": {"USD": {"rate_float": 62000.50}} } mock_get.return_value.status_code = 200 - + price = get_bitcoin_price() assert price == 62000.50 + # Test 4: Handling API failure @patch('bitcoin.requests.get') def test_get_price_api_error(mock_get): diff --git a/test_bitcoin_trading.py b/test_bitcoin_trading.py index e7eac6f..6c480ea 100644 --- a/test_bitcoin_trading.py +++ b/test_bitcoin_trading.py @@ -13,7 +13,7 @@ def reset_colors(): 'HEADER': Colors.HEADER, 'BLUE': Colors.BLUE, 'GREEN': Colors.GREEN, - 'RED': Colors.RED, + 'FAIL': Colors.FAIL, 'ENDC': Colors.ENDC, 'BOLD': Colors.BOLD, } @@ -22,7 +22,7 @@ def reset_colors(): Colors.HEADER = original_colors['HEADER'] Colors.BLUE = original_colors['BLUE'] Colors.GREEN = original_colors['GREEN'] - Colors.RED = original_colors['RED'] + Colors.FAIL = original_colors['FAIL'] Colors.ENDC = original_colors['ENDC'] Colors.BOLD = original_colors['BOLD'] @@ -58,7 +58,7 @@ def test_colors_disable(reset_colors): Colors.disable() assert Colors.HEADER == "" assert Colors.GREEN == "" - assert Colors.RED == "" + assert Colors.FAIL == "" def test_simulation_integration(): diff --git a/test_cli_args.py b/test_cli_args.py new file mode 100644 index 0000000..3acb4b1 --- /dev/null +++ b/test_cli_args.py @@ -0,0 +1,58 @@ +import sys +import subprocess +import pytest + +def run_simulation(args): + """ + Helper function to run the simulation script as a subprocess. + """ + cmd = [sys.executable, "bitcoin_trading_simulation.py"] + args + result = subprocess.run(cmd, capture_output=True, text=True) + return result + +def test_cli_invalid_days(): + """Test that non-positive days results in error.""" + result = run_simulation(["--days", "-5"]) + assert result.returncode == 1 + assert "Error: Days must be a positive integer." in result.stderr + + result = run_simulation(["--days", "0"]) + assert result.returncode == 1 + assert "Error: Days must be a positive integer." in result.stderr + +def test_cli_invalid_initial_cash(): + """Test that non-positive initial cash results in error.""" + result = run_simulation(["--initial-cash", "-1000"]) + assert result.returncode == 1 + assert "Error: Initial cash must be greater than 0." in result.stderr + + result = run_simulation(["--initial-cash", "0"]) + assert result.returncode == 1 + assert "Error: Initial cash must be greater than 0." in result.stderr + +def test_cli_invalid_initial_price(): + """Test that non-positive initial price results in error.""" + result = run_simulation(["--initial-price", "-500"]) + assert result.returncode == 1 + assert "Error: Initial price must be greater than 0." in result.stderr + +def test_cli_invalid_volatility(): + """Test that negative volatility results in error.""" + result = run_simulation(["--volatility", "-0.1"]) + assert result.returncode == 1 + assert "Error: Volatility must be non-negative." in result.stderr + +def test_cli_valid_args(): + """Test that valid arguments run successfully.""" + # Run with small days to keep test fast + result = run_simulation(["--days", "5", "--quiet"]) + assert result.returncode == 0 + assert "Final Portfolio Performance" in result.stdout + +def test_cli_no_color_error(): + """Test that error messages respect --no-color flag (no ANSI codes).""" + result = run_simulation(["--days", "-5", "--no-color"]) + assert result.returncode == 1 + # Check that the ANSI fail code is NOT in the output + assert "\033[91m" not in result.stderr + assert "Error: Days must be a positive integer." in result.stderr diff --git a/test_simulation.py b/test_simulation.py index 0f4f1f8..8fddb57 100644 --- a/test_simulation.py +++ b/test_simulation.py @@ -1,8 +1,8 @@ -import pytest import pandas as pd import numpy as np from bitcoin_trading_simulation import simulate_bitcoin_prices, calculate_moving_averages, generate_trading_signals + def test_simulate_bitcoin_prices(): days = 10 prices = simulate_bitcoin_prices(days=days, initial_price=50000) @@ -10,6 +10,7 @@ def test_simulate_bitcoin_prices(): assert isinstance(prices, pd.Series) assert prices.name == 'Price' + def test_calculate_moving_averages(): prices = pd.Series([100, 101, 102, 103, 104, 105, 106, 107, 108, 109], name='Price') signals = calculate_moving_averages(prices, short_window=3, long_window=5) @@ -17,6 +18,7 @@ def test_calculate_moving_averages(): assert 'long_mavg' in signals.columns assert not signals['short_mavg'].isnull().all() + def test_generate_trading_signals(): # Create dummy signals DataFrame data = { diff --git a/track.md b/track.md new file mode 100644 index 0000000..66ee99b --- /dev/null +++ b/track.md @@ -0,0 +1,7 @@ +## 📅 The 30-Day Roadmap +- [x] Day 1: #10 (Space Invaders Fix) +- [ ] Day 2: #11 (I Wanna Be The Guy C++ Port) +- [ ] Day 3: #12 (Bitcoin API Test) +- [ ] Day 4: #13 (Home Coffee Shop Site) + +> **Pro-Tip:** Closing an issue with a commit message (e.g., `closes #10`) will automatically update the milestone progress bar!