tests/integration/artifacts/
test-artifacts/

# ── Python ────────────────────────────────────────────────────────────────────
__pycache__/
*.py[cod]
*$py.class
*.pyo
*.pyd
*.pyc

# Distribution / packaging
dist/
build/
*.egg-info/
*.egg
.eggs/
wheels/
MANIFEST

# Virtual environments
.venv/
venv/
env/
.env/
ENV/
env.bak/
venv.bak/

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# ── Testing ───────────────────────────────────────────────────────────────────
.pytest_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
*.cover
*.tox/
nosetests.xml
test-results/
junit.xml

# ── Type checking ─────────────────────────────────────────────────────────────
.mypy_cache/
.dmypy.json
dmypy.json
.pytype/
.pyre/

# ── Secrets (never commit) ────────────────────────────────────────────────────
gcp-key.json
*.key.json

# ── IDEs ──────────────────────────────────────────────────────────────────────
.vscode/
.idea/
*.iml
*.iws
*.ipr
.project
.classpath
.settings/
*.swp
*.swo
*~

# ── macOS ─────────────────────────────────────────────────────────────────────
.DS_Store
.AppleDouble
.LSOverride
._*
.Spotlight-V100
.Trashes
Icon

# ── Environment / secrets ─────────────────────────────────────────────────────
.env
.env.*
!.env.example
!.env.template
*.pem
*.key
*.p12
*.pfx
secrets/
!docs/secrets/expected-schema.json
credentials/
service-account*.json
*-service-account.json
gcp-key.json
sa-key.json

# ── AWS ───────────────────────────────────────────────────────────────────────
.aws/
samconfig.toml
packaged*.yaml
packaged*.json
.aws-sam/

# Contract baked into the Lambda package at deploy time (see the "Bundle hc
# shared library" step in .github/workflows/_deploy-api.yml). Build output —
# the source of truth stays contracts/generated/<service>/openapi.json.
hc/contracts/_generated/

# ── Terraform / CDK ───────────────────────────────────────────────────────────
.terraform/
*.tfstate
*.tfstate.*
*.tfplan
cdk.out/
cdk.context.json

# ── Docker ────────────────────────────────────────────────────────────────────
*.dockerignore

# ── Node (if any tooling) ─────────────────────────────────────────────────────
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.npm/
.yarn/

# ── Logs ──────────────────────────────────────────────────────────────────────
*.log
logs/
*.out

# ── Reports ───────────────────────────────────────────────────────────────────
reports/
*.report.json
*.report.html

# ── Temporary files ───────────────────────────────────────────────────────────
*.tmp
*.temp
*.bak
*.orig
*.rej
tmp/
temp/

# Imported SDK build and documentation outputs
# Logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Environment files
**/live-state.json

# Node / npm
node_modules/
.npm/
.pnpm-store/
dist/
build/

# packages/cli/npm bundles the manifest from packages/cli/contracts at build/
# test time (scripts/copy-manifest.cjs) — that copy is generated, not source.
packages/cli/npm/contracts/
coverage/
report/
*.tsbuildinfo

# Python / pip
__pycache__/
*.py[cod]
*.pyo
.Python
.venv/
venv/
env/
pip-wheel-metadata/
*.egg-info/
.pytest_cache/
.mypy_cache/
.ruff_cache/
htmlcov/

# Java / Maven
target/
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
*.class
*.jar
*.war
*.ear

# .NET / NuGet
# Scoped to packages/nuget/ specifically — an unscoped `bin/`/`obj/` matches
# a directory of that name at ANY depth (gitignore has no implicit anchor),
# which silently swallowed the real source file packages/cli/npm/src/bin/hc.ts
# and broke that package's CI build (the file was never committed).
packages/nuget/**/bin/
packages/nuget/**/obj/
TestResults/
*.nupkg
*.snupkg
*.user
*.suo

# IDEs and editors
.idea/
.vscode/
*.swp
*.swo
.DS_Store
Thumbs.db

# Build outputs and caches
out/
tmp/
temp/
.cache/
.codegraph/
.parcel-cache/
.turbo/

# Disposable OpenAPI Generator staging and C#/Java sanity outputs
.generated/

# Rendered documentation, immutable S3 release snapshots, and the latest
# pointer are build/publish artifacts generated on demand. Versioned inputs
# remain the source of truth in this repository.
docs-data/v1/
docs-data/releases/
docs-data/latest.json

# ── Generated documentation ──────────────────────────────────────────────
# The pip packages force-include docs/ (hatchling errors outright if it is
# absent), so those two keep a .gitkeep and are populated by docs:build.
#
# Built by `npm run docs:build` from contracts/pinned + the SDK source, and
# published to S3 by .github/workflows/docs-publish.yml. The package publish
# workflows regenerate packages/*/docs before packaging, because the package
# manifests ship it. None of it is source -- do not commit it.
packages/npm/docs/
packages/pip/docs/*
!packages/pip/docs/.gitkeep
packages/npm-tenantadmin/docs/
packages/npm-ams/docs/
packages/pip-tenantadmin/docs/*
!packages/pip-tenantadmin/docs/.gitkeep
packages/npm/README.md
packages/pip/README.md
packages/npm-tenantadmin/README.md
packages/pip-tenantadmin/README.md

# Live SDK test assets stay in the archived SDK history, outside this source import.
integration-tests/shared/test-assets/
