DefEssential 0.1.6__tar.gz
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.
- defessential-0.1.6/.github/ISSUE_TEMPLATE/01.feature.yml +37 -0
- defessential-0.1.6/.github/ISSUE_TEMPLATE/02.bug.yml +62 -0
- defessential-0.1.6/.github/ISSUE_TEMPLATE/03.fix.yml +55 -0
- defessential-0.1.6/.github/ISSUE_TEMPLATE/04.task.yml +38 -0
- defessential-0.1.6/.github/ISSUE_TEMPLATE/config.yml +1 -0
- defessential-0.1.6/.github/PULL_REQUEST_TEMPLATE.md +24 -0
- defessential-0.1.6/.github/workflows/ci.yml +471 -0
- defessential-0.1.6/.gitignore +56 -0
- defessential-0.1.6/DefEssential.egg-info/PKG-INFO +41 -0
- defessential-0.1.6/DefEssential.egg-info/SOURCES.txt +174 -0
- defessential-0.1.6/DefEssential.egg-info/dependency_links.txt +1 -0
- defessential-0.1.6/DefEssential.egg-info/requires.txt +7 -0
- defessential-0.1.6/DefEssential.egg-info/top_level.txt +1 -0
- defessential-0.1.6/LICENSE +674 -0
- defessential-0.1.6/PKG-INFO +41 -0
- defessential-0.1.6/README.md +7 -0
- defessential-0.1.6/issues/feature/2/ISSUE.md +11 -0
- defessential-0.1.6/issues/feature/2/README.md +182 -0
- defessential-0.1.6/issues/feature/2/REQUIREMENTS.md +212 -0
- defessential-0.1.6/issues/feature/4/IMPLEMENTS.md +51 -0
- defessential-0.1.6/issues/feature/4/ISSUE.md +13 -0
- defessential-0.1.6/issues/feature/4/PLAN.md +111 -0
- defessential-0.1.6/issues/feature/4/README.md +25 -0
- defessential-0.1.6/issues/feature/4/REQUIREMENTS.md +196 -0
- defessential-0.1.6/issues/feature/5/IMPLEMENTS.md +116 -0
- defessential-0.1.6/issues/feature/5/ISSUE.md +13 -0
- defessential-0.1.6/issues/feature/5/PLAN.md +128 -0
- defessential-0.1.6/issues/feature/5/README.md +54 -0
- defessential-0.1.6/issues/feature/5/REQUIREMENTS.md +182 -0
- defessential-0.1.6/issues/feature/6/IMPLEMENTS.md +160 -0
- defessential-0.1.6/issues/feature/6/ISSUE.md +14 -0
- defessential-0.1.6/issues/feature/6/PLAN.md +209 -0
- defessential-0.1.6/issues/feature/6/README.md +47 -0
- defessential-0.1.6/issues/feature/6/REQUIREMENTS.md +259 -0
- defessential-0.1.6/issues/task/8/IMPLEMENTS.md +39 -0
- defessential-0.1.6/issues/task/8/ISSUE.md +20 -0
- defessential-0.1.6/issues/task/8/PLAN.md +20 -0
- defessential-0.1.6/issues/task/8/README.md +7 -0
- defessential-0.1.6/issues/task/8/REQUIREMENTS.md +58 -0
- defessential-0.1.6/samples/README.md +173 -0
- defessential-0.1.6/samples/Sample.py +263 -0
- defessential-0.1.6/samples/__init__.py +1 -0
- defessential-0.1.6/samples/res/css/sample.css +28 -0
- defessential-0.1.6/samples/res/favicon.ico +0 -0
- defessential-0.1.6/samples/res/html/welcome.html +452 -0
- defessential-0.1.6/samples/res/images/sample.jpg +0 -0
- defessential-0.1.6/samples/res/images/sample.png +0 -0
- defessential-0.1.6/samples/runners/Authentication.py +293 -0
- defessential-0.1.6/samples/runners/ContentValidation.py +112 -0
- defessential-0.1.6/samples/runners/Requests.py +394 -0
- defessential-0.1.6/samples/runners/Streaming.py +239 -0
- defessential-0.1.6/samples/runners/__init__.py +1 -0
- defessential-0.1.6/samples/scripts/DescriptionToFile.py +36 -0
- defessential-0.1.6/samples/scripts/__init__.py +1 -0
- defessential-0.1.6/setup.cfg +4 -0
- defessential-0.1.6/setup.py +67 -0
- defessential-0.1.6/src/Adapter/Implements/Gunicorn/Server.py +134 -0
- defessential-0.1.6/src/Adapter/Implements/Gunicorn/Transport.py +171 -0
- defessential-0.1.6/src/Adapter/Implements/Gunicorn/__init__.py +5 -0
- defessential-0.1.6/src/Adapter/Implements/Python/Server.py +245 -0
- defessential-0.1.6/src/Adapter/Implements/Python/__init__.py +5 -0
- defessential-0.1.6/src/Adapter/Implements/Uvicorn/HTTP.py +256 -0
- defessential-0.1.6/src/Adapter/Implements/Uvicorn/Portal.py +65 -0
- defessential-0.1.6/src/Adapter/Implements/Uvicorn/Server.py +102 -0
- defessential-0.1.6/src/Adapter/Implements/Uvicorn/WebSocket.py +220 -0
- defessential-0.1.6/src/Adapter/Implements/Uvicorn/__init__.py +5 -0
- defessential-0.1.6/src/Adapter/Implements/__init__.py +3 -0
- defessential-0.1.6/src/Adapter/RequestHandler.py +70 -0
- defessential-0.1.6/src/Adapter/Server.py +54 -0
- defessential-0.1.6/src/Adapter/WSGI.py +219 -0
- defessential-0.1.6/src/Adapter/__init__.py +5 -0
- defessential-0.1.6/src/Application.py +579 -0
- defessential-0.1.6/src/Body.py +50 -0
- defessential-0.1.6/src/Content.py +18 -0
- defessential-0.1.6/src/Credentials.py +245 -0
- defessential-0.1.6/src/CrossOriginResourceSharing.py +107 -0
- defessential-0.1.6/src/Descriptor/DataObject.py +409 -0
- defessential-0.1.6/src/Descriptor/Types.py +248 -0
- defessential-0.1.6/src/Descriptor/Value.py +188 -0
- defessential-0.1.6/src/Descriptor/__init__.py +172 -0
- defessential-0.1.6/src/Error.py +66 -0
- defessential-0.1.6/src/Extension.py +184 -0
- defessential-0.1.6/src/Extensions/File.py +89 -0
- defessential-0.1.6/src/Extensions/FileSystem.py +184 -0
- defessential-0.1.6/src/Extensions/Metrics.py +500 -0
- defessential-0.1.6/src/Extensions/Ping.py +89 -0
- defessential-0.1.6/src/Extensions/Specifications.py +328 -0
- defessential-0.1.6/src/Extensions/Status.html +207 -0
- defessential-0.1.6/src/Extensions/Status.py +104 -0
- defessential-0.1.6/src/Extensions/Swagger.html +77 -0
- defessential-0.1.6/src/Extensions/Swagger.py +111 -0
- defessential-0.1.6/src/Extensions/Utils/Routes.py +42 -0
- defessential-0.1.6/src/Extensions/Utils/__init__.py +43 -0
- defessential-0.1.6/src/Extensions/__init__.py +21 -0
- defessential-0.1.6/src/IO/Readers/ChunkedStream.py +106 -0
- defessential-0.1.6/src/IO/Readers/ContentReader.py +36 -0
- defessential-0.1.6/src/IO/Readers/ContentReaders.py +241 -0
- defessential-0.1.6/src/IO/Readers/__init__.py +25 -0
- defessential-0.1.6/src/IO/RequestReader.py +125 -0
- defessential-0.1.6/src/IO/ResponseWriter.py +241 -0
- defessential-0.1.6/src/IO/WebSocket/WebSocket.py +282 -0
- defessential-0.1.6/src/IO/WebSocket/WebSocketError.py +17 -0
- defessential-0.1.6/src/IO/WebSocket/WebSocketFrame.py +68 -0
- defessential-0.1.6/src/IO/WebSocket/WebSocketFrameReader.py +98 -0
- defessential-0.1.6/src/IO/WebSocket/WebSocketHandshake.py +94 -0
- defessential-0.1.6/src/IO/WebSocket/__init__.py +13 -0
- defessential-0.1.6/src/IO/Writers/ChunkedStreamWriter.py +19 -0
- defessential-0.1.6/src/IO/Writers/ServerSentEvents.py +41 -0
- defessential-0.1.6/src/IO/Writers/ServerSentEventsWriter.py +67 -0
- defessential-0.1.6/src/IO/Writers/StreamWriter.py +57 -0
- defessential-0.1.6/src/IO/Writers/__init__.py +11 -0
- defessential-0.1.6/src/IO/__init__.py +7 -0
- defessential-0.1.6/src/Request.py +110 -0
- defessential-0.1.6/src/RequestRunner.py +261 -0
- defessential-0.1.6/src/Response.py +87 -0
- defessential-0.1.6/src/ResponseSpecification.py +23 -0
- defessential-0.1.6/src/Responses/ResponseFile.py +108 -0
- defessential-0.1.6/src/Responses/__init__.py +63 -0
- defessential-0.1.6/src/Route.py +55 -0
- defessential-0.1.6/src/Router.py +48 -0
- defessential-0.1.6/src/Runners/RunExtension.py +101 -0
- defessential-0.1.6/src/Runners/RunFactory.py +26 -0
- defessential-0.1.6/src/Runners/RunOptions.py +77 -0
- defessential-0.1.6/src/Runners/RunRequest.py +121 -0
- defessential-0.1.6/src/Runners/__init__.py +5 -0
- defessential-0.1.6/src/Startup.py +104 -0
- defessential-0.1.6/src/Utils/FileSystemObject/Configuration.py +15 -0
- defessential-0.1.6/src/Utils/FileSystemObject/Connection.py +57 -0
- defessential-0.1.6/src/Utils/FileSystemObject/File.py +41 -0
- defessential-0.1.6/src/Utils/FileSystemObject/Implements/FileSystem/Configuration.py +15 -0
- defessential-0.1.6/src/Utils/FileSystemObject/Implements/FileSystem/Connection.py +115 -0
- defessential-0.1.6/src/Utils/FileSystemObject/Implements/FileSystem/File.py +77 -0
- defessential-0.1.6/src/Utils/FileSystemObject/Implements/FileSystem/__init__.py +11 -0
- defessential-0.1.6/src/Utils/FileSystemObject/Implements/__init__.py +3 -0
- defessential-0.1.6/src/Utils/FileSystemObject/__init__.py +11 -0
- defessential-0.1.6/src/Utils/Loader.py +81 -0
- defessential-0.1.6/src/Utils/__init__.py +3 -0
- defessential-0.1.6/src/Validator/Pattern.py +36 -0
- defessential-0.1.6/src/Validator/Patterns/Array.py +30 -0
- defessential-0.1.6/src/Validator/Patterns/Common.py +92 -0
- defessential-0.1.6/src/Validator/Patterns/Compare.py +180 -0
- defessential-0.1.6/src/Validator/Patterns/Condition.py +60 -0
- defessential-0.1.6/src/Validator/Patterns/DataObject.py +85 -0
- defessential-0.1.6/src/Validator/Patterns/DateTime.py +111 -0
- defessential-0.1.6/src/Validator/Patterns/Number.py +43 -0
- defessential-0.1.6/src/Validator/Patterns/Object.py +150 -0
- defessential-0.1.6/src/Validator/Patterns/Size.py +110 -0
- defessential-0.1.6/src/Validator/Patterns/String.py +85 -0
- defessential-0.1.6/src/Validator/Patterns/Type.py +350 -0
- defessential-0.1.6/src/Validator/Patterns/__init__.py +137 -0
- defessential-0.1.6/src/Validator/Validate.py +29 -0
- defessential-0.1.6/src/Validator/Validator.py +30 -0
- defessential-0.1.6/src/Validator/__init__.py +11 -0
- defessential-0.1.6/src/Validators.py +255 -0
- defessential-0.1.6/src/__init__.py +83 -0
- defessential-0.1.6/tests/test_adapters.py +849 -0
- defessential-0.1.6/tests/test_application_hooks.py +375 -0
- defessential-0.1.6/tests/test_builtin_factories.py +625 -0
- defessential-0.1.6/tests/test_content.py +250 -0
- defessential-0.1.6/tests/test_core.py +538 -0
- defessential-0.1.6/tests/test_exports.py +95 -0
- defessential-0.1.6/tests/test_extension_hooks.py +801 -0
- defessential-0.1.6/tests/test_extensions.py +729 -0
- defessential-0.1.6/tests/test_features.py +409 -0
- defessential-0.1.6/tests/test_files.py +250 -0
- defessential-0.1.6/tests/test_independence.py +111 -0
- defessential-0.1.6/tests/test_loading.py +61 -0
- defessential-0.1.6/tests/test_request_runner_hooks.py +1035 -0
- defessential-0.1.6/tests/test_samples.py +686 -0
- defessential-0.1.6/tests/test_server.py +266 -0
- defessential-0.1.6/tests/test_sse.py +178 -0
- defessential-0.1.6/tests/test_startup.py +285 -0
- defessential-0.1.6/tests/test_transport_conformance.py +504 -0
- defessential-0.1.6/tests/test_uvicorn_transport.py +90 -0
- defessential-0.1.6/tests/test_websocket.py +512 -0
- defessential-0.1.6/tests/test_writers.py +910 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: 기능 제안
|
|
2
|
+
description: 추가하거나 개선할 기능을 제안합니다.
|
|
3
|
+
labels:
|
|
4
|
+
- feature
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: >
|
|
9
|
+
해결하려는 문제와 제안하는 사용 경험을 중심으로 작성해 주세요.
|
|
10
|
+
- type: textarea
|
|
11
|
+
id: problem
|
|
12
|
+
attributes:
|
|
13
|
+
label: 해결하려는 문제
|
|
14
|
+
description: 현재 어떤 불편이나 제약이 있는지 설명해 주세요.
|
|
15
|
+
validations:
|
|
16
|
+
required: true
|
|
17
|
+
- type: textarea
|
|
18
|
+
id: proposal
|
|
19
|
+
attributes:
|
|
20
|
+
label: 제안하는 해결 방법
|
|
21
|
+
description: 원하는 기능과 기대하는 동작을 설명해 주세요.
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
- type: textarea
|
|
25
|
+
id: alternatives
|
|
26
|
+
attributes:
|
|
27
|
+
label: 고려한 대안
|
|
28
|
+
description: 고려한 다른 방법이나 우회 방법이 있다면 적어 주세요.
|
|
29
|
+
validations:
|
|
30
|
+
required: false
|
|
31
|
+
- type: textarea
|
|
32
|
+
id: additional
|
|
33
|
+
attributes:
|
|
34
|
+
label: 추가 정보
|
|
35
|
+
description: 예제, 참고 자료 등 제안의 맥락을 이해하는 데 도움이 되는 정보를 적어 주세요.
|
|
36
|
+
validations:
|
|
37
|
+
required: false
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: 버그/오류 제보
|
|
2
|
+
description: 예상과 다르게 동작하거나 오류가 발생하는 문제를 제보합니다.
|
|
3
|
+
labels:
|
|
4
|
+
- bug
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: >
|
|
9
|
+
재현 가능한 버그를 제보해 주세요. 로그나 설정을 첨부할 때 토큰, 비밀번호,
|
|
10
|
+
개인정보 등 민감한 정보는 반드시 삭제해 주세요.
|
|
11
|
+
- type: input
|
|
12
|
+
id: version
|
|
13
|
+
attributes:
|
|
14
|
+
label: 버전
|
|
15
|
+
description: 사용 중인 버전 또는 커밋을 입력해 주세요.
|
|
16
|
+
placeholder: 예) 0.1.0
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: expected
|
|
21
|
+
attributes:
|
|
22
|
+
label: 기대한 동작
|
|
23
|
+
description: 어떤 결과를 기대했는지 설명해 주세요.
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: textarea
|
|
27
|
+
id: actual
|
|
28
|
+
attributes:
|
|
29
|
+
label: 실제 동작
|
|
30
|
+
description: 실제로 발생한 결과를 설명해 주세요. 오류가 표시되면 메시지도 포함해 주세요.
|
|
31
|
+
validations:
|
|
32
|
+
required: true
|
|
33
|
+
- type: textarea
|
|
34
|
+
id: reproduction
|
|
35
|
+
attributes:
|
|
36
|
+
label: 재현 방법
|
|
37
|
+
description: 문제를 재현하는 단계나 최소 코드 예제를 작성해 주세요.
|
|
38
|
+
placeholder: |
|
|
39
|
+
1. 다음 설정으로 Application과 HTTP 서버를 시작합니다.
|
|
40
|
+
2. 특정 HTTP 요청을 보냅니다.
|
|
41
|
+
3. 오류가 발생합니다.
|
|
42
|
+
validations:
|
|
43
|
+
required: true
|
|
44
|
+
- type: textarea
|
|
45
|
+
id: environment
|
|
46
|
+
attributes:
|
|
47
|
+
label: 실행 환경
|
|
48
|
+
description: Python 버전, 운영체제, HTTP 클라이언트 및 서버 실행 방법을 입력해 주세요.
|
|
49
|
+
placeholder: |
|
|
50
|
+
- Python:
|
|
51
|
+
- 운영체제:
|
|
52
|
+
- HTTP 클라이언트:
|
|
53
|
+
- 서버 실행 방법:
|
|
54
|
+
validations:
|
|
55
|
+
required: true
|
|
56
|
+
- type: textarea
|
|
57
|
+
id: additional
|
|
58
|
+
attributes:
|
|
59
|
+
label: 추가 정보
|
|
60
|
+
description: 관련 로그나 스크린샷 등 문제 파악에 도움이 되는 정보를 적어 주세요.
|
|
61
|
+
validations:
|
|
62
|
+
required: false
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: 변경 제안
|
|
2
|
+
description: 일반 변경이나 핫픽스의 목적과 범위를 정리합니다.
|
|
3
|
+
labels:
|
|
4
|
+
- fix
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: >
|
|
9
|
+
일반 변경이나 긴급 수정이 필요한 핫픽스를 제안할 때 사용해 주세요.
|
|
10
|
+
재현 가능한 기존 결함은 버그/오류 제보 양식을 이용해 주세요.
|
|
11
|
+
- type: dropdown
|
|
12
|
+
id: change_type
|
|
13
|
+
attributes:
|
|
14
|
+
label: 변경 유형
|
|
15
|
+
description: 제안하는 변경의 성격을 선택해 주세요.
|
|
16
|
+
options:
|
|
17
|
+
- 일반 변경
|
|
18
|
+
- 핫픽스
|
|
19
|
+
validations:
|
|
20
|
+
required: true
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: purpose
|
|
23
|
+
attributes:
|
|
24
|
+
label: 변경 목적
|
|
25
|
+
description: 왜 이 변경이 필요한지, 해결하려는 불편이나 상황을 설명해 주세요.
|
|
26
|
+
validations:
|
|
27
|
+
required: true
|
|
28
|
+
- type: textarea
|
|
29
|
+
id: proposed_changes
|
|
30
|
+
attributes:
|
|
31
|
+
label: 제안하는 변경 내용
|
|
32
|
+
description: 무엇을 어떻게 바꾸면 좋을지 적어 주세요.
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
- type: textarea
|
|
36
|
+
id: scope
|
|
37
|
+
attributes:
|
|
38
|
+
label: 영향 범위
|
|
39
|
+
description: 영향을 받는 기능, 사용자, 호환성 또는 설정을 알고 있다면 적어 주세요.
|
|
40
|
+
validations:
|
|
41
|
+
required: false
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: hotfix_context
|
|
44
|
+
attributes:
|
|
45
|
+
label: 긴급 수정 정보
|
|
46
|
+
description: 핫픽스인 경우 긴급한 이유, 영향받는 버전 및 임시 대응 방법을 적어 주세요.
|
|
47
|
+
validations:
|
|
48
|
+
required: false
|
|
49
|
+
- type: textarea
|
|
50
|
+
id: acceptance_criteria
|
|
51
|
+
attributes:
|
|
52
|
+
label: 완료 기준
|
|
53
|
+
description: 변경이 완료되었다고 판단할 수 있는 조건이나 검증 방법을 적어 주세요.
|
|
54
|
+
validations:
|
|
55
|
+
required: false
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: 작업 제안
|
|
2
|
+
description: 리소스 변경, 문서화 등 소스 코드 변경이 아닌 작업을 정리합니다.
|
|
3
|
+
labels:
|
|
4
|
+
- task
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: >
|
|
9
|
+
리소스 변경, 문서 작성·정리 등 소스 코드를 변경하지 않는 작업에 사용해 주세요.
|
|
10
|
+
기능 추가, 버그 제보 또는 소스 코드 변경은 해당 이슈 양식을 이용해 주세요.
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: purpose
|
|
13
|
+
attributes:
|
|
14
|
+
label: 작업 목적
|
|
15
|
+
description: 이 작업이 필요한 이유와 기대하는 효과를 설명해 주세요.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: scope
|
|
20
|
+
attributes:
|
|
21
|
+
label: 작업 내용 및 대상
|
|
22
|
+
description: 수행할 작업과 대상 리소스, 문서 또는 경로를 적어 주세요.
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
- type: textarea
|
|
26
|
+
id: acceptance_criteria
|
|
27
|
+
attributes:
|
|
28
|
+
label: 완료 기준
|
|
29
|
+
description: 작업이 완료되었다고 판단할 수 있는 결과물이나 확인 방법을 적어 주세요.
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
- type: textarea
|
|
33
|
+
id: additional
|
|
34
|
+
attributes:
|
|
35
|
+
label: 관련 자료 및 주의사항
|
|
36
|
+
description: 참고 링크, 관련 이슈, 사전 준비나 주의사항이 있다면 적어 주세요.
|
|
37
|
+
validations:
|
|
38
|
+
required: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
## 변경 내용
|
|
2
|
+
|
|
3
|
+
<!-- 무엇을 왜 변경했는지 간단히 요약해 주세요. -->
|
|
4
|
+
|
|
5
|
+
## 변경 유형
|
|
6
|
+
|
|
7
|
+
- [ ] 버그 수정 및 일반 변경, 핫픽스 처리
|
|
8
|
+
- [ ] 기능 추가
|
|
9
|
+
- [ ] 호환성에 영향을 주는 변경
|
|
10
|
+
- [ ] 문서 또는 예제 변경
|
|
11
|
+
- [ ] 기타
|
|
12
|
+
|
|
13
|
+
## 검증
|
|
14
|
+
|
|
15
|
+
<!-- 실행한 테스트와 결과를 작성해 주세요. 테스트를 실행하지 않았다면 사유를 적어 주세요. -->
|
|
16
|
+
|
|
17
|
+
- [ ] 관련 테스트를 실행했습니다.
|
|
18
|
+
- [ ] 문서와 예제를 확인했습니다.
|
|
19
|
+
|
|
20
|
+
## 확인 사항
|
|
21
|
+
|
|
22
|
+
- [ ] 변경 범위가 요청 사항에 한정되어 있습니다.
|
|
23
|
+
- [ ] 공개 API나 기존 동작에 영향을 주는 경우 변경 내용과 마이그레이션 방법을 설명했습니다.
|
|
24
|
+
- [ ] 민감 정보나 불필요한 디버깅 코드를 포함하지 않았습니다.
|