tastytrade 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.claude/commands/release-pr.md +108 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
  4. data/.github/ISSUE_TEMPLATE/roadmap_task.md +34 -0
  5. data/.github/dependabot.yml +11 -0
  6. data/.github/workflows/main.yml +75 -0
  7. data/.rspec +3 -0
  8. data/.rubocop.yml +101 -0
  9. data/.ruby-version +1 -0
  10. data/CHANGELOG.md +100 -0
  11. data/CLAUDE.md +78 -0
  12. data/CODE_OF_CONDUCT.md +81 -0
  13. data/CONTRIBUTING.md +89 -0
  14. data/DISCLAIMER.md +54 -0
  15. data/LICENSE.txt +24 -0
  16. data/README.md +235 -0
  17. data/ROADMAP.md +157 -0
  18. data/Rakefile +17 -0
  19. data/SECURITY.md +48 -0
  20. data/docs/getting_started.md +48 -0
  21. data/docs/python_sdk_analysis.md +181 -0
  22. data/exe/tastytrade +8 -0
  23. data/lib/tastytrade/cli.rb +604 -0
  24. data/lib/tastytrade/cli_config.rb +79 -0
  25. data/lib/tastytrade/cli_helpers.rb +178 -0
  26. data/lib/tastytrade/client.rb +117 -0
  27. data/lib/tastytrade/keyring_store.rb +72 -0
  28. data/lib/tastytrade/models/account.rb +129 -0
  29. data/lib/tastytrade/models/account_balance.rb +75 -0
  30. data/lib/tastytrade/models/base.rb +47 -0
  31. data/lib/tastytrade/models/current_position.rb +155 -0
  32. data/lib/tastytrade/models/user.rb +23 -0
  33. data/lib/tastytrade/models.rb +7 -0
  34. data/lib/tastytrade/session.rb +164 -0
  35. data/lib/tastytrade/session_manager.rb +160 -0
  36. data/lib/tastytrade/version.rb +5 -0
  37. data/lib/tastytrade.rb +31 -0
  38. data/sig/tastytrade.rbs +4 -0
  39. data/spec/exe/tastytrade_spec.rb +104 -0
  40. data/spec/spec_helper.rb +26 -0
  41. data/spec/tastytrade/cli_accounts_spec.rb +166 -0
  42. data/spec/tastytrade/cli_auth_spec.rb +216 -0
  43. data/spec/tastytrade/cli_config_spec.rb +180 -0
  44. data/spec/tastytrade/cli_helpers_spec.rb +248 -0
  45. data/spec/tastytrade/cli_interactive_spec.rb +54 -0
  46. data/spec/tastytrade/cli_logout_spec.rb +121 -0
  47. data/spec/tastytrade/cli_select_spec.rb +174 -0
  48. data/spec/tastytrade/cli_status_spec.rb +206 -0
  49. data/spec/tastytrade/client_spec.rb +210 -0
  50. data/spec/tastytrade/keyring_store_spec.rb +168 -0
  51. data/spec/tastytrade/models/account_balance_spec.rb +247 -0
  52. data/spec/tastytrade/models/account_spec.rb +206 -0
  53. data/spec/tastytrade/models/base_spec.rb +61 -0
  54. data/spec/tastytrade/models/current_position_spec.rb +444 -0
  55. data/spec/tastytrade/models/user_spec.rb +58 -0
  56. data/spec/tastytrade/session_manager_spec.rb +296 -0
  57. data/spec/tastytrade/session_spec.rb +392 -0
  58. data/spec/tastytrade_spec.rb +9 -0
  59. metadata +303 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b4642b3bfaeb7906f2733b1da34c2bafea177177fb6670f2271b50b720673236
4
+ data.tar.gz: d65a41b22c7eba317269b454e38188b1e19c504726771d140d72653aa7e7c617
5
+ SHA512:
6
+ metadata.gz: 7dd6ac7a321ed6d7c6b9519f82988029f5e49515acfff9583d22bba99b2da2ab61666e9054ee232a71afdd3179bcc97c1765e071081722160251ef207340f2d2
7
+ data.tar.gz: 20b1acf6efba69d72bee9448c39825178701a0e4a20be5de813f1607860fa201b5ed68d2269b2d465fa085bc817d7ffa0ff7f7d89dd68849d197f18463841d51
@@ -0,0 +1,108 @@
1
+ # release-pr
2
+
3
+ Create a release PR following Ruby gem best practices.
4
+
5
+ ## Steps to Execute
6
+
7
+ 1. **Determine Version Bump**
8
+ - Review the CHANGELOG.md "Unreleased" section
9
+ - Determine the appropriate version bump based on Semantic Versioning:
10
+ - MAJOR (x.0.0): Breaking changes
11
+ - MINOR (0.x.0): New features, backward compatible
12
+ - PATCH (0.0.x): Bug fixes only
13
+ - Ask the user to confirm the version if unclear
14
+
15
+ 2. **Create Release Branch**
16
+ ```bash
17
+ git checkout -b release/v<VERSION>
18
+ ```
19
+
20
+ 3. **Update Version**
21
+ - Edit `lib/tastytrade/version.rb` to bump the version number
22
+
23
+ 4. **Update ROADMAP.md**
24
+ - Review the CHANGELOG.md "Unreleased" section for completed items
25
+ - Find corresponding items in ROADMAP.md and mark them as completed:
26
+ - Change `- [ ]` to `- [x]` for completed items
27
+ - Look for items in all phases, not just Phase 1
28
+ - If an item mentions a GitHub issue number, include "(closes #X)" after marking complete
29
+
30
+ 5. **Update CHANGELOG.md**
31
+ - Move all entries from "Unreleased" to a new version section with today's date
32
+ - Format: `## [X.Y.Z] - YYYY-MM-DD`
33
+ - Create a new empty "Unreleased" section at the top with all subsections:
34
+ ```markdown
35
+ ## [Unreleased]
36
+
37
+ ### Added
38
+ - Nothing yet
39
+
40
+ ### Changed
41
+ - Nothing yet
42
+
43
+ ### Deprecated
44
+ - Nothing yet
45
+
46
+ ### Removed
47
+ - Nothing yet
48
+
49
+ ### Fixed
50
+ - Nothing yet
51
+
52
+ ### Security
53
+ - Nothing yet
54
+ ```
55
+
56
+ 6. **Commit Changes**
57
+ ```bash
58
+ git add lib/tastytrade/version.rb CHANGELOG.md ROADMAP.md
59
+ git commit -m "Release v<VERSION>"
60
+ ```
61
+
62
+ 7. **Push Branch**
63
+ ```bash
64
+ git push -u origin release/v<VERSION>
65
+ ```
66
+
67
+ 8. **Create Pull Request**
68
+ ```bash
69
+ gh pr create --title "Release v<VERSION>" --body "## Release v<VERSION>
70
+
71
+ This PR prepares the release of version <VERSION>.
72
+
73
+ ### Changes
74
+ - Bumped version to <VERSION>
75
+ - Updated CHANGELOG.md with release date
76
+ - Updated ROADMAP.md to mark completed items
77
+
78
+ ### Release Checklist
79
+ - [ ] Version number is correct
80
+ - [ ] CHANGELOG.md is updated with all changes
81
+ - [ ] ROADMAP.md has completed items marked
82
+ - [ ] All tests pass
83
+ - [ ] RuboCop reports no offenses
84
+
85
+ ### Post-Merge Steps
86
+ After merging this PR:
87
+ 1. \`git checkout main && git pull\`
88
+ 2. \`bundle exec rake release\`
89
+
90
+ Note: The rake release command will automatically create and push the git tag v<VERSION>"
91
+ ```
92
+
93
+ ## Important Notes
94
+
95
+ - Do NOT run `rake release` as part of the PR - this happens after merge
96
+ - Ensure all tests pass before creating the PR
97
+ - Run RuboCop to ensure code quality
98
+ - The version in the PR title and body should NOT include the 'v' prefix (e.g., "0.2.0" not "v0.2.0")
99
+ - The rake release command will automatically create the git tag with 'v' prefix (e.g., "v0.2.0")
100
+ - You need a RubyGems.org account to run rake release
101
+
102
+ ## Example
103
+
104
+ For a minor version bump from 0.1.0 to 0.2.0:
105
+ - Branch name: `release/v0.2.0`
106
+ - Commit message: `Release v0.2.0`
107
+ - PR title: `Release v0.2.0`
108
+ - Git tag (after merge): `v0.2.0`
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest a new feature for the SDK
4
+ title: '[FEATURE] '
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Feature Description
10
+ A clear and concise description of what you want to happen.
11
+
12
+ ## Use Case
13
+ Describe the use case or problem this feature would solve.
14
+
15
+ ## Proposed Solution
16
+ Describe how you'd like this feature to work.
17
+
18
+ ## Alternatives Considered
19
+ Describe any alternative solutions or features you've considered.
20
+
21
+ ## Roadmap Phase
22
+ Which phase of the roadmap does this belong to?
23
+ - [ ] Phase 1: Core SDK Foundation
24
+ - [ ] Phase 2: Advanced SDK Features
25
+ - [ ] Phase 3: CLI Integration
26
+ - [ ] Phase 4: Advanced Features & Polish
27
+
28
+ ## Additional Context
29
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: Roadmap Task
3
+ about: Track implementation of a roadmap item
4
+ title: '[ROADMAP] '
5
+ labels: roadmap
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Task Description
10
+ Brief description of the roadmap task to implement.
11
+
12
+ ## Roadmap Reference
13
+ Link to the specific item in ROADMAP.md this implements.
14
+
15
+ ## Phase
16
+ - [ ] Phase 1: Core SDK Foundation
17
+ - [ ] Phase 2: Advanced SDK Features
18
+ - [ ] Phase 3: CLI Integration
19
+ - [ ] Phase 4: Advanced Features & Polish
20
+
21
+ ## Implementation Details
22
+ Detailed technical approach for implementing this feature.
23
+
24
+ ## Acceptance Criteria
25
+ - [ ] Implementation complete
26
+ - [ ] Tests written and passing
27
+ - [ ] Documentation updated
28
+ - [ ] Code reviewed
29
+
30
+ ## Dependencies
31
+ List any other roadmap items that must be completed first.
32
+
33
+ ## Notes
34
+ Any additional implementation notes or considerations.
@@ -0,0 +1,11 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "bundler"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ open-pull-requests-limit: 10
8
+ groups:
9
+ dependencies:
10
+ patterns:
11
+ - "*"
@@ -0,0 +1,75 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ scan_ruby:
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - name: Checkout code
18
+ uses: actions/checkout@v4
19
+
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: .ruby-version
24
+ bundler-cache: true
25
+
26
+ - name: Scan for security vulnerabilities
27
+ run: |
28
+ gem install bundler-audit
29
+ bundle-audit check --update
30
+
31
+ lint:
32
+ runs-on: ubuntu-latest
33
+
34
+ steps:
35
+ - name: Checkout code
36
+ uses: actions/checkout@v4
37
+
38
+ - name: Set up Ruby
39
+ uses: ruby/setup-ruby@v1
40
+ with:
41
+ ruby-version: .ruby-version
42
+ bundler-cache: true
43
+
44
+ - name: Lint code for consistent style
45
+ run: bundle exec rubocop
46
+
47
+ test:
48
+ runs-on: ubuntu-latest
49
+
50
+ strategy:
51
+ fail-fast: false
52
+ matrix:
53
+ ruby-version:
54
+ - '3.2'
55
+ - '3.3'
56
+ - '3.4'
57
+
58
+ steps:
59
+ - name: Checkout code
60
+ uses: actions/checkout@v4
61
+
62
+ - name: Set up Ruby
63
+ uses: ruby/setup-ruby@v1
64
+ with:
65
+ ruby-version: ${{ matrix.ruby-version }}
66
+ bundler-cache: true
67
+
68
+ - name: Run tests
69
+ run: bundle exec rake spec
70
+
71
+ - name: Upload coverage reports
72
+ uses: codecov/codecov-action@v4
73
+ if: matrix.ruby-version == '3.3'
74
+ with:
75
+ fail_ci_if_error: false
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,101 @@
1
+ AllCops:
2
+ DisabledByDefault: true
3
+ TargetRubyVersion: 3.2
4
+ SuggestExtensions: false
5
+ Exclude:
6
+ - 'bin/*'
7
+ - 'vendor/**/*'
8
+ - 'tmp/**/*'
9
+
10
+ # Style Rules
11
+ Style/HashSyntax:
12
+ Enabled: true
13
+
14
+ Style/StringLiterals:
15
+ Enabled: true
16
+ EnforcedStyle: double_quotes
17
+
18
+ Style/StringLiteralsInInterpolation:
19
+ Enabled: true
20
+ EnforcedStyle: double_quotes
21
+
22
+ Style/MultilineIfThen:
23
+ Enabled: true
24
+
25
+ Style/MethodDefParentheses:
26
+ Enabled: true
27
+
28
+ Style/RedundantReturn:
29
+ Enabled: true
30
+
31
+ Style/RedundantSelf:
32
+ Enabled: true
33
+
34
+ Style/RedundantInterpolation:
35
+ Enabled: true
36
+
37
+ # Layout Rules
38
+ Layout/LineLength:
39
+ Enabled: true
40
+ Max: 120
41
+
42
+ Layout/IndentationWidth:
43
+ Enabled: true
44
+
45
+ Layout/IndentationStyle:
46
+ Enabled: true
47
+
48
+ Layout/EmptyLines:
49
+ Enabled: true
50
+
51
+ Layout/TrailingEmptyLines:
52
+ Enabled: true
53
+
54
+ Layout/TrailingWhitespace:
55
+ Enabled: true
56
+
57
+ Layout/SpaceBeforeBlockBraces:
58
+ Enabled: true
59
+
60
+ Layout/SpaceInsideBlockBraces:
61
+ Enabled: true
62
+
63
+ Layout/SpaceInsideHashLiteralBraces:
64
+ Enabled: true
65
+
66
+ Layout/SpaceInsideArrayLiteralBrackets:
67
+ Enabled: true
68
+
69
+ Layout/SpaceInsideParens:
70
+ Enabled: true
71
+
72
+ Layout/SpaceAroundOperators:
73
+ Enabled: true
74
+
75
+ Layout/CaseIndentation:
76
+ Enabled: true
77
+
78
+ Layout/EndAlignment:
79
+ Enabled: true
80
+ EnforcedStyleAlignWith: variable
81
+
82
+ Layout/ElseAlignment:
83
+ Enabled: true
84
+
85
+ Layout/EmptyLinesAroundClassBody:
86
+ Enabled: true
87
+
88
+ Layout/EmptyLinesAroundModuleBody:
89
+ Enabled: true
90
+
91
+ Layout/EmptyLinesAroundMethodBody:
92
+ Enabled: true
93
+
94
+ Layout/FirstHashElementIndentation:
95
+ Enabled: true
96
+
97
+ Layout/HashAlignment:
98
+ Enabled: true
99
+
100
+ Layout/MultilineMethodCallIndentation:
101
+ Enabled: true
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.4.5
data/CHANGELOG.md ADDED
@@ -0,0 +1,100 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Nothing yet
12
+
13
+ ### Changed
14
+ - Nothing yet
15
+
16
+ ### Deprecated
17
+ - Nothing yet
18
+
19
+ ### Removed
20
+ - Nothing yet
21
+
22
+ ### Fixed
23
+ - Nothing yet
24
+
25
+ ### Security
26
+ - Nothing yet
27
+
28
+ ## [0.2.0] - 2025-08-01
29
+
30
+ ### Added
31
+ - Initial gem structure with professional Ruby gem scaffold
32
+ - Basic configuration files (RuboCop, RSpec, GitHub Actions)
33
+ - Development tooling setup
34
+ - RSpec test framework with SimpleCov coverage reporting
35
+ - RuboCop linter with custom configuration
36
+ - GitHub Actions CI for multi-OS and multi-Ruby testing
37
+ - HTTP client infrastructure (#16, #17, #19)
38
+ - Faraday as HTTP client with retry middleware
39
+ - RESTful methods (GET, POST, PUT, DELETE)
40
+ - Automatic retry for transient failures (429, 503, 504)
41
+ - Configurable timeout settings
42
+ - Production/sandbox environment support
43
+ - Comprehensive error handling framework (#17)
44
+ - InvalidCredentialsError for authentication failures
45
+ - SessionExpiredError for expired sessions
46
+ - TokenRefreshError for refresh failures
47
+ - NetworkTimeoutError for connection timeouts
48
+ - Unified error response parsing
49
+ - Session management with authentication (#1-5)
50
+ - Basic session class with login/logout
51
+ - Remember token authentication support
52
+ - Session expiration tracking and automatic refresh
53
+ - Secure credential storage using system keyring
54
+ - Session validation and error handling
55
+ - Account models and data structures (#20)
56
+ - Account model with proper data parsing
57
+ - AccountBalance model with BigDecimal precision for monetary values
58
+ - CurrentPosition model for position tracking with P&L calculations
59
+ - Support for options, equities, and futures positions
60
+ - CLI foundation with interactive mode (#23, #24)
61
+ - Core CLI structure using Thor
62
+ - `login` command with --remember and --test flags
63
+ - `logout` command with session cleanup
64
+ - `status` command to check session status and expiration
65
+ - `refresh` command to refresh session using remember token
66
+ - `accounts` command to list all accounts
67
+ - `select` command to choose active account
68
+ - `balance` command with table formatting and --all flag
69
+ - Interactive menu-driven interface
70
+ - Vim-style navigation (j/k for up/down, q/ESC to exit)
71
+ - Number key shortcuts for menu selection
72
+ - Automatic entry into interactive mode after login
73
+ - CLI helper utilities
74
+ - Colored output helpers (error, warning, success, info)
75
+ - Currency formatting with thousand separators
76
+ - TTY::Table integration for data display
77
+ - Pastel color support
78
+ - Configuration management
79
+ - YAML-based configuration file (~/.config/tastytrade/config.yml)
80
+ - Environment persistence (production/sandbox)
81
+ - Current account selection persistence
82
+ - Safe config file handling with error recovery
83
+ - Security features
84
+ - MIT License
85
+ - Code of Conduct
86
+ - Security policy documentation
87
+ - Keyring integration for secure credential storage
88
+
89
+ ### Changed
90
+ - Account.get_balances now returns AccountBalance object instead of raw hash
91
+ - Account.get_positions now returns array of CurrentPosition objects instead of raw hashes
92
+ - CLI menus now use consistent vim-style navigation with extracted helper method
93
+ - Updated release-pr Claude Code command to include ROADMAP.md updates in release process
94
+ - Removed MFA requirement for RubyGems.org publishing
95
+ - Updated release-pr command to reflect that rake release auto-creates git tags
96
+
97
+ ### Fixed
98
+ - Account data parsing from API response (#25)
99
+ - "Failed to load current account" error in balance view by implementing account caching
100
+ - TTY::Table rendering in non-TTY environments with fallback formatting
data/CLAUDE.md ADDED
@@ -0,0 +1,78 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Common Development Tasks
6
+
7
+ ### Running Tests
8
+ ```bash
9
+ bundle exec rake spec # Run all tests
10
+ bundle exec rspec spec/path # Run specific test file
11
+ ```
12
+
13
+ ### Code Quality
14
+ ```bash
15
+ bundle exec rake rubocop # Run linter
16
+ bundle exec rubocop -a # Auto-fix linting issues
17
+ ```
18
+
19
+ ### Development Console
20
+ ```bash
21
+ bin/console # Interactive Ruby console with gem loaded
22
+ ```
23
+
24
+ ### Building and Installing Locally
25
+ ```bash
26
+ bundle exec rake build # Build gem to pkg/
27
+ bundle exec rake install # Install gem locally
28
+ ```
29
+
30
+ ### Release Process
31
+ ```bash
32
+ bin/release # Interactive release script
33
+ # OR manually:
34
+ # 1. Update version in lib/tastytrade/version.rb
35
+ # 2. Update CHANGELOG.md
36
+ # 3. bundle exec rake release
37
+ ```
38
+
39
+ ## Project Structure
40
+
41
+ ```
42
+ tastytrade/
43
+ ├── lib/
44
+ │ └── tastytrade/ # Main gem code
45
+ │ └── version.rb # Version constant
46
+ ├── spec/ # RSpec tests
47
+ ├── bin/ # Executable scripts
48
+ │ ├── console # Development console
49
+ │ ├── setup # Setup script
50
+ │ └── release # Release automation
51
+ ├── docs/ # Additional documentation
52
+ └── .github/workflows/ # CI/CD configuration
53
+ ```
54
+
55
+ ## Architecture Notes
56
+
57
+ This is a Ruby gem scaffold with professional tooling setup:
58
+ - RSpec for testing with SimpleCov for coverage
59
+ - RuboCop for code style enforcement
60
+ - GitHub Actions for multi-OS and multi-Ruby CI
61
+ - Security policy and contribution guidelines
62
+ - Professional README with badges and clear sections
63
+
64
+ ## Key Development Patterns
65
+
66
+ 1. **Version Management**: Version is defined in `lib/tastytrade/version.rb`
67
+ 2. **Testing**: Mirror directory structure in spec/, use descriptive test names
68
+ 3. **Documentation**: Use YARD format for method documentation
69
+ 4. **Error Handling**: Raise specific error classes, not generic exceptions
70
+ 5. **Dependencies**: Keep runtime dependencies minimal, use development dependencies liberally
71
+
72
+ ## Gem-Specific Configurations
73
+
74
+ - Ruby 3.2.0+ required
75
+ - RuboCop configured with custom rules in `.rubocop.yml`
76
+ - RSpec configured in `.rspec` and `spec/spec_helper.rb`
77
+ - Git-based file inclusion in gemspec
78
+ - MFA required for RubyGems.org pushes
@@ -0,0 +1,81 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
8
+
9
+ ## Our Standards
10
+
11
+ Examples of behavior that contributes to a positive environment for our community include:
12
+
13
+ * Demonstrating empathy and kindness toward other people
14
+ * Being respectful of differing opinions, viewpoints, and experiences
15
+ * Giving and gracefully accepting constructive feedback
16
+ * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
17
+ * Focusing on what is best not just for us as individuals, but for the overall community
18
+
19
+ Examples of unacceptable behavior include:
20
+
21
+ * The use of sexualized language or imagery, and sexual attention or advances of any kind
22
+ * Trolling, insulting or derogatory comments, and personal or political attacks
23
+ * Public or private harassment
24
+ * Publishing others' private information, such as a physical or email address, without their explicit permission
25
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
26
+
27
+ ## Enforcement Responsibilities
28
+
29
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
32
+
33
+ ## Scope
34
+
35
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
36
+
37
+ ## Enforcement
38
+
39
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at 58859899+ryanhamamura@users.noreply.github.com. All complaints will be reviewed and investigated promptly and fairly.
40
+
41
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
42
+
43
+ ## Enforcement Guidelines
44
+
45
+ Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
46
+
47
+ ### 1. Correction
48
+
49
+ **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
50
+
51
+ **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
52
+
53
+ ### 2. Warning
54
+
55
+ **Community Impact**: A violation through a single incident or series of actions.
56
+
57
+ **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
58
+
59
+ ### 3. Temporary Ban
60
+
61
+ **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
62
+
63
+ **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
64
+
65
+ ### 4. Permanent Ban
66
+
67
+ **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
68
+
69
+ **Consequence**: A permanent ban from any sort of public interaction within the community.
70
+
71
+ ## Attribution
72
+
73
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0,
74
+ available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
75
+
76
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
77
+
78
+ [homepage]: https://www.contributor-covenant.org
79
+
80
+ For answers to common questions about this code of conduct, see the FAQ at
81
+ https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.