diff --git a/api/prisma/schema.prisma b/api/prisma/schema.prisma index 914d557063c..2191291d500 100644 --- a/api/prisma/schema.prisma +++ b/api/prisma/schema.prisma @@ -108,7 +108,7 @@ model user { is2018DataVisCert Boolean? // Undefined is2018FullStackCert Boolean? // Undefined isCollegeAlgebraPyCertV8 Boolean? // Undefined - isUpcomingPythonCertV8 Boolean? // Undefined + // isUpcomingPythonCertV8 Boolean? // Undefined. It is in the db but has never been used. keyboardShortcuts Boolean? // Undefined linkedin String? // Null | Undefined location String? // Null diff --git a/api/src/plugins/__fixtures__/user.ts b/api/src/plugins/__fixtures__/user.ts index bbe7e8efcf1..a8ae025324d 100644 --- a/api/src/plugins/__fixtures__/user.ts +++ b/api/src/plugins/__fixtures__/user.ts @@ -48,7 +48,6 @@ export const newUser = (email: string) => ({ isCollegeAlgebraPyCertV8: false, isRespWebDesignCert: false, isSciCompPyCertV7: false, - isUpcomingPythonCertV8: null, keyboardShortcuts: false, linkedin: null, location: '', diff --git a/api/src/routes/protected/certificate.test.ts b/api/src/routes/protected/certificate.test.ts index 4466346372e..83c96258d43 100644 --- a/api/src/routes/protected/certificate.test.ts +++ b/api/src/routes/protected/certificate.test.ts @@ -6,7 +6,6 @@ import { setupServer, superRequest } from '../../../jest.utils'; -import { SHOW_UPCOMING_CHANGES } from '../../utils/env'; describe('certificate routes', () => { setupServer(); @@ -396,12 +395,6 @@ describe('certificate routes', () => { ]; const unclaimableCerts = ['fake-slug']; - if (SHOW_UPCOMING_CHANGES) { - claimableCerts.push(Certification.UpcomingPython); - } else { - unclaimableCerts.push(Certification.UpcomingPython); - } - for (const certSlug of claimableCerts) { const response = await superRequest('/certificate/verify', { method: 'PUT', diff --git a/api/src/routes/protected/certificate.ts b/api/src/routes/protected/certificate.ts index 144dd2464d5..f75e5cb4192 100644 --- a/api/src/routes/protected/certificate.ts +++ b/api/src/routes/protected/certificate.ts @@ -39,8 +39,7 @@ const { machineLearningPyV7Id, relationalDatabaseV8Id, collegeAlgebraPyV8Id, - foundationalCSharpV8Id, - upcomingPythonV8Id + foundationalCSharpV8Id } = certIds; function isCertAllowed(certSlug: string): boolean { @@ -157,10 +156,9 @@ function createCertTypeIds(challenges: ReturnType) { [certTypes.foundationalCSharpV8]: getCertById( foundationalCSharpV8Id, challenges - ), + ) // upcoming - [certTypes.upcomingPythonV8]: getCertById(upcomingPythonV8Id, challenges) }; } @@ -184,7 +182,6 @@ interface CertI { isRelationalDatabaseCertV8?: boolean; isCollegeAlgebraPyCertV8?: boolean; isFoundationalCSharpCertV8?: boolean; - isUpcomingPythonCertV8?: boolean; } function getUserIsCertMap(user: CertI) { @@ -207,8 +204,7 @@ function getUserIsCertMap(user: CertI) { isMachineLearningPyCertV7 = false, isRelationalDatabaseCertV8 = false, isCollegeAlgebraPyCertV8 = false, - isFoundationalCSharpCertV8 = false, - isUpcomingPythonCertV8 = false + isFoundationalCSharpCertV8 = false } = user; return { @@ -230,8 +226,7 @@ function getUserIsCertMap(user: CertI) { isMachineLearningPyCertV7, isRelationalDatabaseCertV8, isCollegeAlgebraPyCertV8, - isFoundationalCSharpCertV8, - isUpcomingPythonCertV8 + isFoundationalCSharpCertV8 }; } @@ -390,8 +385,7 @@ export const protectedCertificateRoutes: FastifyPluginCallbackTypebox = ( isQaCertV7: true, isRelationalDatabaseCertV8: true, isRespWebDesignCert: true, - isSciCompPyCertV7: true, - isUpcomingPythonCertV8: true + isSciCompPyCertV7: true } }); diff --git a/api/src/routes/public/certificate.ts b/api/src/routes/public/certificate.ts index df245479ed9..c60a057a9e1 100644 --- a/api/src/routes/public/certificate.ts +++ b/api/src/routes/public/certificate.ts @@ -78,7 +78,6 @@ export const unprotectedCertificateRoutes: FastifyPluginCallbackTypebox = ( isRelationalDatabaseCertV8: true, isCollegeAlgebraPyCertV8: true, isFoundationalCSharpCertV8: true, - isUpcomingPythonCertV8: true, isHonest: true, username: true, name: true, diff --git a/client/config/cert-and-project-map.ts b/client/config/cert-and-project-map.ts index f0e573d3e95..94fc687d793 100644 --- a/client/config/cert-and-project-map.ts +++ b/client/config/cert-and-project-map.ts @@ -32,7 +32,6 @@ const collegeAlgebraPyBase = '/learn/college-algebra-with-python'; const takeHomeBase = '/learn/coding-interview-prep/take-home-projects'; const foundationalCSharpBase = '/learn/foundational-c-sharp-with-microsoft/foundational-c-sharp-with-microsoft-certification-exam'; -const upcomingPythonBase = '/learn/upcoming-python'; const fullStackDeveloperBase = '/learn/full-stack-developer'; const a2EnglishBase = '/learn/a2-english-for-developers'; const b1EnglishBase = '/learn/b1-english-for-developers'; @@ -811,19 +810,6 @@ const allStandardCerts = [ } ] }, - { - id: '64afc4e8f3b37856e035b85f', - title: 'Upcoming Python Certification', - certSlug: Certification.UpcomingPython, - projects: [ - { - id: '64afc37bf3b37856e035b85e', - title: 'Upcoming Python Project', - link: `${upcomingPythonBase}/upcoming-python-project`, - certSlug: Certification.UpcomingPython - } - ] - }, { id: '651dd7e01d697d0aab7833b7', title: 'A2 English for Developers', diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index c9ec256a200..c4607862a24 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -1387,20 +1387,6 @@ } } }, - "upcoming-python": { - "title": "Upcoming Python", - "intro": ["placeholder"], - "blocks": { - "learn-python-by-building-a-blackjack-game": { - "title": "Learn Python by Building a Blackjack Game", - "intro": ["Learn Python.", ""] - }, - "upcoming-python-project": { - "title": "Upcoming Python Project", - "intro": ["placeholder"] - } - } - }, "a2-english-for-developers": { "title": "A2 English for Developers (Beta)", "intro": [ diff --git a/client/src/assets/icons/superblock-icon.tsx b/client/src/assets/icons/superblock-icon.tsx index 3128484c609..c27d9b04d4a 100644 --- a/client/src/assets/icons/superblock-icon.tsx +++ b/client/src/assets/icons/superblock-icon.tsx @@ -40,7 +40,6 @@ const iconMap = { [SuperBlocks.CollegeAlgebraPy]: CollegeAlgebra, [SuperBlocks.FoundationalCSharp]: CSharpLogo, [SuperBlocks.FullStackDeveloper]: ResponsiveDesign, - [SuperBlocks.UpcomingPython]: PythonIcon, [SuperBlocks.A2English]: A2EnglishIcon, [SuperBlocks.B1English]: B1EnglishIcon, [SuperBlocks.RosettaCode]: RosettaCodeIcon, diff --git a/client/src/pages/learn/upcoming-python/index.md b/client/src/pages/learn/upcoming-python/index.md deleted file mode 100644 index fdfca81fe6e..00000000000 --- a/client/src/pages/learn/upcoming-python/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Upcoming Python Certification -superBlock: upcoming-python -certification: upcoming-python ---- - -## Upcoming Python Certification - -Learn the basics of Python. diff --git a/client/src/pages/learn/upcoming-python/learn-algorithm-design-by-building-the-shortest-path-algorithm/index.md b/client/src/pages/learn/upcoming-python/learn-algorithm-design-by-building-the-shortest-path-algorithm/index.md deleted file mode 100644 index 657a9dcbdd2..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-algorithm-design-by-building-the-shortest-path-algorithm/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn Algorithm Design by Building the Shortest Path Algorithm -block: learn-algorithm-design-by-building-the-shortest-path-algorithm -superBlock: upcoming-python ---- - -## Introduction to the Learn Algorithm Design by Building the Shortest Path Algorithm - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-classes-and-objects-by-building-a-sudoku-solver/index.md b/client/src/pages/learn/upcoming-python/learn-classes-and-objects-by-building-a-sudoku-solver/index.md deleted file mode 100644 index 9d4da67e931..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-classes-and-objects-by-building-a-sudoku-solver/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn Classes and Objects by Building a Sudoku Solver -block: learn-classes-and-objects-by-building-a-sudoku-solver -superBlock: upcoming-python ---- - -## Introduction to the Learn Classes and Objects by Building a Sudoku Solver - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-data-structures-by-building-the-merge-sort-algorithm/index.md b/client/src/pages/learn/upcoming-python/learn-data-structures-by-building-the-merge-sort-algorithm/index.md deleted file mode 100644 index 18d62a7fce8..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-data-structures-by-building-the-merge-sort-algorithm/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn Data Structures by Building the Merge Sort Algorithm -block: learn-data-structures-by-building-the-merge-sort-algorithm -superBlock: upcoming-python ---- - -## Introduction to the Learn Data Structures by Building the Merge Sort Algorithm - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-how-to-work-with-numbers-and-strings-by-implementing-the-luhn-algorithm/index.md b/client/src/pages/learn/upcoming-python/learn-how-to-work-with-numbers-and-strings-by-implementing-the-luhn-algorithm/index.md deleted file mode 100644 index 0c23b24ef48..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-how-to-work-with-numbers-and-strings-by-implementing-the-luhn-algorithm/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn How to Work with Numbers and Strings by Implementing the Luhn Algorithm -block: learn-how-to-work-with-numbers-and-strings-by-implementing-the-luhn-algorithm -superBlock: upcoming-python ---- - -## Introduction to the Learn How to Work with Numbers and Strings by Implementing the Luhn Algorithm - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-lambda-functions-by-building-an-expense-tracker/index.md b/client/src/pages/learn/upcoming-python/learn-lambda-functions-by-building-an-expense-tracker/index.md deleted file mode 100644 index 5d1abd372dd..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-lambda-functions-by-building-an-expense-tracker/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn Lambda Functions by Building an Expense Tracker -block: learn-lambda-functions-by-building-an-expense-tracker -superBlock: scientific-computing-with-python ---- - -## Introduction to the Learn Lambda Functions by Building an Expense Tracker - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-list-comprehension-by-building-a-case-converter-program/index.md b/client/src/pages/learn/upcoming-python/learn-list-comprehension-by-building-a-case-converter-program/index.md deleted file mode 100644 index 0fc09020fd6..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-list-comprehension-by-building-a-case-converter-program/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn Python List Comprehension by Building a Case Converter Program -block: learn-list-comprehension-by-building-a-case-converter-program -superBlock: upcoming-python ---- - -## Introduction to the Learn Python List Comprehension by Building a Case Converter Program - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-python-by-building-a-blackjack-game/index.md b/client/src/pages/learn/upcoming-python/learn-python-by-building-a-blackjack-game/index.md deleted file mode 100644 index fde82c07443..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-python-by-building-a-blackjack-game/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to Learn Python by Building a Blackjack Game -block: learn-python-by-building-a-blackjack-game -superBlock: scientific-computing-with-python ---- - -## Introduction to Learn Python by Building a Blackjack Game - -Learn Python! diff --git a/client/src/pages/learn/upcoming-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/index.md b/client/src/pages/learn/upcoming-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/index.md deleted file mode 100644 index 02325c37c44..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn Recursion by Solving the Tower of Hanoi Puzzle -block: learn-recursion-by-solving-the-tower-of-hanoi-puzzle -superBlock: upcoming-python ---- - -## Introduction to the Learn Recursion by Solving the Tower of Hanoi Puzzle - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-regular-expressions-by-building-a-password-generator/index.md b/client/src/pages/learn/upcoming-python/learn-regular-expressions-by-building-a-password-generator/index.md deleted file mode 100644 index ac2ab921f04..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-regular-expressions-by-building-a-password-generator/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn Regular Expressions by Building a Password Generator -block: learn-regular-expressions-by-building-a-password-generator -superBlock: upcoming-python ---- - -## Introduction to the Learn Regular Expressions by Building a Password Generator - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-string-manipulation-by-building-a-cipher/index.md b/client/src/pages/learn/upcoming-python/learn-string-manipulation-by-building-a-cipher/index.md deleted file mode 100644 index 7f8ab7432e0..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-string-manipulation-by-building-a-cipher/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn String Manipulation by Building a Cipher -block: learn-string-manipulation-by-building-a-cipher -superBlock: upcoming-python ---- - -## Introduction to the Learn String Manipulation by Building a Cipher - -This is a test for the new project-based curriculum. diff --git a/client/src/pages/learn/upcoming-python/learn-tree-traversal-by-building-a-binary-search-tree/index.md b/client/src/pages/learn/upcoming-python/learn-tree-traversal-by-building-a-binary-search-tree/index.md deleted file mode 100644 index 2581305efad..00000000000 --- a/client/src/pages/learn/upcoming-python/learn-tree-traversal-by-building-a-binary-search-tree/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Introduction to the Learn tree traversal -block: learn-tree-traversal-by-building-a-binary-search-tree -superBlock: upcoming-python ---- - -## Introduction to the Learn tree traversal - -This is a test for the new project-based curriculum. diff --git a/client/src/templates/Introduction/components/block.test.tsx b/client/src/templates/Introduction/components/block.test.tsx index 29d52c0a1b6..c039b46bb96 100644 --- a/client/src/templates/Introduction/components/block.test.tsx +++ b/client/src/templates/Introduction/components/block.test.tsx @@ -69,7 +69,7 @@ const defaultProps = { }, sourceInstanceName: 'mockSourceInstanceName', superOrder: 1, - superBlock: SuperBlocks.UpcomingPython, + superBlock: SuperBlocks.RespWebDesign, tail: ['mockTail'], template: 'mockTemplate', tests: [] as Test[], diff --git a/client/src/templates/Introduction/components/super-block-intro.tsx b/client/src/templates/Introduction/components/super-block-intro.tsx index 4d722f2170d..12ecb46f526 100644 --- a/client/src/templates/Introduction/components/super-block-intro.tsx +++ b/client/src/templates/Introduction/components/super-block-intro.tsx @@ -26,8 +26,7 @@ export const ConditionalDonationAlert = ({ const unfinishedCertifications = [ SuperBlocks.A2English, SuperBlocks.B1English, - SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython + SuperBlocks.FullStackDeveloper ]; if (!isDonating && betaCertifications.includes(superBlock)) diff --git a/curriculum/challenges/_meta/learn-python-by-building-a-blackjack-game/meta.json b/curriculum/challenges/_meta/learn-python-by-building-a-blackjack-game/meta.json deleted file mode 100644 index d0d9f84835e..00000000000 --- a/curriculum/challenges/_meta/learn-python-by-building-a-blackjack-game/meta.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "Learn Python by Building a Blackjack Game", - "isUpcomingChange": true, - "usesMultifileEditor": true, - "hasEditableBoundaries": true, - "dashedName": "learn-python-by-building-a-blackjack-game", - "helpCategory": "Python", - "order": 0, - "superBlock": "upcoming-python", - "challengeOrder": [ - { - "id": "5daa813381b9e3db6c126b43", - "title": "Step 1" - }, - { - "id": "64a5229b99ff0e8250cd9a72", - "title": "Step 2" - }, - { - "id": "64b163c20e59cbd4a64940b0", - "title": "Step 3" - }, - { - "id": "64b171849f925b0773aa434c", - "title": "Step 4" - }, - { - "id": "65df3afd233057f6a620a860", - "title": "Step 5" - } - ], - "blockLayout": "legacy-challenge-grid" -} \ No newline at end of file diff --git a/curriculum/challenges/_meta/upcoming-python-project/meta.json b/curriculum/challenges/_meta/upcoming-python-project/meta.json deleted file mode 100644 index b1b99398054..00000000000 --- a/curriculum/challenges/_meta/upcoming-python-project/meta.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Upcoming Python Project", - "isUpcomingChange": true, - "dashedName": "upcoming-python-project", - "hasEditableBoundaries": true, - "helpCategory": "Python", - "order": 1, - "superBlock": "upcoming-python", - "challengeOrder": [ - { - "id": "64afc37bf3b37856e035b85e", - "title": "Upcoming Python Project" - }, - { - "id": "6703d8f42ebd112db6f7788a", - "title": "Video Layout" - }, - { - "id": "6703d9382ebd112db6f7788b", - "title": "Odin Layout" - } - ], - "blockLayout": "legacy-challenge-list" -} \ No newline at end of file diff --git a/curriculum/challenges/english/00-certifications/upcoming-python-certification/upcoming-python-certification.yml b/curriculum/challenges/english/00-certifications/upcoming-python-certification/upcoming-python-certification.yml deleted file mode 100644 index 68737f4d7c4..00000000000 --- a/curriculum/challenges/english/00-certifications/upcoming-python-certification/upcoming-python-certification.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -id: 64afc4e8f3b37856e035b85f -title: Upcoming Python Certification -certification: upcoming-python-certification -challengeType: 7 -isPrivate: true -tests: - - id: 64afc37bf3b37856e035b85e - title: Upcoming Python Project diff --git a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md b/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md deleted file mode 100644 index d0909910999..00000000000 --- a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/5daa813381b9e3db6c126b43.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: 5daa813381b9e3db6c126b43 -title: Step 1 -challengeType: 20 -dashedName: step-1 ---- - -# --description-- - -PYTHON - -Set the `hello` variable to "world". Then print the value. - -# --hints-- - -The source code should include `one = 2` - -```js -assert(code.match(/one\s*=\s*2/)) -``` - -The `hello` variable should equal "world". - -```js -({ test: () => assert.equal(__userGlobals.get("hello"), "world") }) -``` - -The `one` variable should be an integer. - -```js -({ test: () => { - assert(runPython(`_Node(_code).find_variable("one").is_integer()`)) -}}) -``` - -# --seed-- - -## --seed-contents-- - -```py ---fcc-editable-region-- -one = 1 -hello = "goodbye" -print(hello) ---fcc-editable-region-- -``` - -# --solutions-- - -```py -one = 2 -hello = "world" -print(hello) -``` diff --git a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64a5229b99ff0e8250cd9a72.md b/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64a5229b99ff0e8250cd9a72.md deleted file mode 100644 index 3740927024f..00000000000 --- a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64a5229b99ff0e8250cd9a72.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: 64a5229b99ff0e8250cd9a72 -title: Step 2 -challengeType: 20 -dashedName: step-2 ---- - -# --description-- - -step 2 instructions - -# --hints-- - -Test 1 - -```js -({ input: ["Beau", "Carnes"], test: () => { - assert.equal( "Beau", __userGlobals.get("name")); - assert.equal( "Carnes", __userGlobals.get("last_name")); - } }) -``` - -Test 2 - -```js -({ input: ["Bob", "Carnes"], test: () => { - assert.equal( "Bob", __userGlobals.get("name")); - assert.equal( "Carnes", __userGlobals.get("last_name")); - } }) -``` - - -# --seed-- - -## --seed-contents-- - -```py ---fcc-editable-region-- -name = input('What is your name?') -print('Hi ' + name) ---fcc-editable-region-- -``` - -# --solutions-- - -```py -name = input('What is your name?') -last_name = input('What is your last name?') -print('Hi ' + name + ' ' + last_name) -``` diff --git a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md deleted file mode 100644 index c9530607b95..00000000000 --- a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -id: 64b163c20e59cbd4a64940b0 -title: Step 3 -challengeType: 20 -dashedName: step-3 ---- - -# --description-- - -Create a function to add two numbers together. - -# --hints-- - -Adding 3 and 5 should return 8. - -```js -({ - test: () => assert.equal(__userGlobals.get("add")(3,5), 8) -}) -``` - -Test value of `__name__` - -```js -({ - test: () => assert(runPython(`__name__ == '__main__'`)) -}) -``` - -Test cleaner syntax - -```js -({ - test: () => assert(runPython(`add(4,5) == 9`)) -}) -``` - -Testing getDef - -```js -({ - test: () => { - const add = __helpers.python.getDef(code, "add"); - assert.deepEqual(add, { - def: "def add(a, b):\n return a + b\n", - function_parameters: "a, b", - function_body: " return a + b\n", - function_indentation: 0 - }); - } -}) -``` - -# --seed-- - -## --seed-contents-- - -```py ---fcc-editable-region-- - ---fcc-editable-region-- -``` - -# --solutions-- - -```py - -def add(a, b): - return a + b - -``` diff --git a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b171849f925b0773aa434c.md b/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b171849f925b0773aa434c.md deleted file mode 100644 index c2982ad42b4..00000000000 --- a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b171849f925b0773aa434c.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: 64b171849f925b0773aa434c -title: Step 4 -challengeType: 20 -dashedName: step-4 ---- - -# --description-- - -Create an list of numbers from 1 to 3 and assign it to the variable `xs`. - -# --hints-- - -`xs` should be the list `[1,2,3]`. - -```js -({ test: () => assert.deepEqual(Array.from(__userGlobals.get("xs")), [1,2,3])}) -``` - -# --seed-- - -## --seed-contents-- - -```py ---fcc-editable-region-- - ---fcc-editable-region-- -``` - -# --solutions-- - -```py -xs = [1,2,3] -``` diff --git a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/65df3afd233057f6a620a860.md b/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/65df3afd233057f6a620a860.md deleted file mode 100644 index 0511581ef62..00000000000 --- a/curriculum/challenges/english/20-upcoming-python/learn-python-by-building-a-blackjack-game/65df3afd233057f6a620a860.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: 65df3afd233057f6a620a860 -title: Step 5 -challengeType: 20 -dashedName: step-5 ---- - -# --description-- - -This shows how the helper functions can be used to analyze a learner's class definitions - -# --instructions-- - -We can just find the class definition inside Python, return it to the JavaScript, and then check if it contains the string "pass". - -If we need something more reliable, we can expand the helpers to check for pass statements specifically. This would be useful if say, we wanted to write classes containing, say, passengers. - -# --hints-- - -`TreeNode` should not contain any `pass` statements. - -```js -({ test: () => { - const pyClassStr = runPython(`str(_Node(_code).find_class("TreeNode"))`); - assert.notInclude(pyClassStr, "pass") -}}) -``` - -# --seed-- - -## --seed-contents-- - -```py ---fcc-editable-region-- -class TreeNode: - pass - -class Trap: - pass ---fcc-editable-region-- -``` - -# --solutions-- - -```py -class TreeNode: - def __init__(self, thing): - self.thing = thing - -class Trap: - pass - -``` diff --git a/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/64afc37bf3b37856e035b85e.md b/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/64afc37bf3b37856e035b85e.md deleted file mode 100644 index 04c38b6965c..00000000000 --- a/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/64afc37bf3b37856e035b85e.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: 64afc37bf3b37856e035b85e -title: Upcoming Python Project -challengeType: 20 -dashedName: upcoming-python-project ---- - -# --description-- - -Python Project instructions - -# --hints-- - -Test 1 - -```js -({ input: ["Beau", "Carnes"], test: () => { - assert.equal( "Beau", __userGlobals.get("name")); - assert.equal( "Carnes", __userGlobals.get("last_name")); - } }) -``` - -# --seed-- - -## --seed-contents-- - -```py ---fcc-editable-region-- -name = input('What is your name?') -print('Hi ' + name) ---fcc-editable-region-- -``` - -# --solutions-- - -```py -name = input('What is your name?') -last_name = input('What is your last name?') -print('Hi ' + name + ' ' + last_name) -``` diff --git a/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/6703d8f42ebd112db6f7788a.md b/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/6703d8f42ebd112db6f7788a.md deleted file mode 100644 index 6a0ce3dc26c..00000000000 --- a/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/6703d8f42ebd112db6f7788a.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -id: 6703d8f42ebd112db6f7788a -title: Video Layout -challengeType: 11 -videoId: nVAaxZ34khk -dashedName: video-layout ---- - -# --description-- - -Watch the video and answer the questions below. - -# --questions-- - -## --text-- - -Question 1? - -## --answers-- - -`answer 1` - -### --feedback-- - -Feedback. - ---- - -`answer 2` - -### --feedback-- - -Feedback. - ---- - -`answer 3` - -### --feedback-- - -Feedback. - ---- - -`answer 4` - -## --video-solution-- - -4 - -## --text-- - -Question 2? - -## --answers-- - -`answer 1` - -### --feedback-- - -Feedback. - ---- - -`answer 2` - -### --feedback-- - -Feedback. - ---- - -`answer 3` - ---- - -`answer 4` - -### --feedback-- - -Feedback. - -## --video-solution-- - -3 - -## --text-- - -Question 3? - -## --answers-- - -`answer 1` - ---- - -`answer 2` - -### --feedback-- - -Feedback. - ---- - -`answer 3` - -### --feedback-- - -Feedback. - ---- - -`answer 4` - -### --feedback-- - -Feedback. - -## --video-solution-- - -1 diff --git a/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/6703d9382ebd112db6f7788b.md b/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/6703d9382ebd112db6f7788b.md deleted file mode 100644 index c47f2bcd7e6..00000000000 --- a/curriculum/challenges/english/20-upcoming-python/upcoming-python-project/6703d9382ebd112db6f7788b.md +++ /dev/null @@ -1,133 +0,0 @@ ---- -id: 6703d9382ebd112db6f7788b -title: Odin Layout -challengeType: 19 -videoId: nVAaxZ34khk -dashedName: odin-layout ---- - -# --description-- - -Watch the video and answer the questions below. - -# --assignment-- - -assignment 1 - ---- - -assignemnt 2 - -# --questions-- - -## --text-- - -Question 1? - -## --answers-- - -`answer 1` - -### --feedback-- - -Here's some `feedback`. - ---- - -`answer 2` - -### --feedback-- - -More JS feedback: - -```js -console.log('incorrect'); -``` - ---- - -`answer 3` - -### --feedback-- - -Feedback. - ---- - -`answer 4` - -## --video-solution-- - -4 - -## --text-- - -Question 2? - -## --answers-- - -`answer 1` - -### --feedback-- - -Feedback. - ---- - -`answer 2` - -### --feedback-- - -Feedback. - ---- - -`answer 3` - ---- - -`answer 4` - -### --feedback-- - -Feedback. - -## --video-solution-- - -3 - -## --text-- - -Question 3? - -## --answers-- - -`answer 1` - ---- - -`answer 2` - -### --feedback-- - -Feedback. - ---- - -`answer 3` - -### --feedback-- - -Feedback. - ---- - -`answer 4` - -### --feedback-- - -Feedback. - -## --video-solution-- - -1 diff --git a/curriculum/utils.js b/curriculum/utils.js index a68fe074c50..5466c6dcb7a 100644 --- a/curriculum/utils.js +++ b/curriculum/utils.js @@ -81,7 +81,6 @@ const directoryToSuperblock = { '18-project-euler': 'project-euler', '19-foundational-c-sharp-with-microsoft': 'foundational-c-sharp-with-microsoft', - '20-upcoming-python': 'upcoming-python', '21-a2-english-for-developers': 'a2-english-for-developers', '22-rosetta-code': 'rosetta-code', '23-python-for-everybody': 'python-for-everybody', diff --git a/curriculum/utils.test.ts b/curriculum/utils.test.ts index a4c6dc1b4f9..2e416c59395 100644 --- a/curriculum/utils.test.ts +++ b/curriculum/utils.test.ts @@ -193,7 +193,7 @@ describe('getSuperBlockFromPath', () => { ); it('handles all the directories in ./challenges/english', () => { - expect.assertions(25); + expect.assertions(24); for (const directory of directories) { expect(() => getSuperBlockFromDir(directory)).not.toThrow(); @@ -201,7 +201,7 @@ describe('getSuperBlockFromPath', () => { }); it("returns valid superblocks (or 'certifications') for all valid arguments", () => { - expect.assertions(25); + expect.assertions(24); const superBlockPaths = directories.filter(x => x !== '00-certifications'); diff --git a/shared/config/certification-settings.ts b/shared/config/certification-settings.ts index ef47d829853..e1ae9337385 100644 --- a/shared/config/certification-settings.ts +++ b/shared/config/certification-settings.ts @@ -27,7 +27,6 @@ export enum Certification { FoundationalCSharp = 'foundational-c-sharp-with-microsoft', // Upcoming certifications FullStackDeveloper = 'full-stack-developer-v9', - UpcomingPython = 'upcoming-python-v8', A2English = 'a2-english-for-developers-v8', B1English = 'b1-english-for-developers-v8', // Legacy certifications @@ -77,7 +76,6 @@ export const legacyFullStackCertification = [ // showUpcomingChanges is true. export const upcomingCertifications = [ Certification.FullStackDeveloper, - Certification.UpcomingPython, Certification.A2English, Certification.B1English ] as const; @@ -101,7 +99,6 @@ export const certTypes = { relationalDatabaseV8: 'isRelationalDatabaseCertV8', collegeAlgebraPyV8: 'isCollegeAlgebraPyCertV8', foundationalCSharpV8: 'isFoundationalCSharpCertV8', - upcomingPythonV8: 'isUpcomingPythonCertV8', jsAlgoDataStructV8: 'isJsAlgoDataStructCertV8' } as const; @@ -124,7 +121,6 @@ export const certIds = { relationalDatabaseV8Id: '606243f50267e718b1e755f4', collegeAlgebraPyV8Id: '61531b20cc9dfa2741a5b800', foundationalCSharpV8Id: '647f7da207d29547b3bee1ba', - upcomingPythonV8Id: '64afc4e8f3b37856e035b85f', jsAlgoDataStructV8Id: '658180220947283cdc0689ce' }; @@ -147,7 +143,6 @@ export const completionHours = { [certTypes.relationalDatabaseV8]: 300, [certTypes.collegeAlgebraPyV8]: 300, [certTypes.foundationalCSharpV8]: 300, - [certTypes.upcomingPythonV8]: 300, [certTypes.jsAlgoDataStructV8]: 300 }; @@ -173,10 +168,9 @@ export const certSlugTypeMap = { [Certification.MachineLearningPy]: certTypes.machineLearningPyV7, [Certification.RelationalDb]: certTypes.relationalDatabaseV8, [Certification.CollegeAlgebraPy]: certTypes.collegeAlgebraPyV8, - [Certification.FoundationalCSharp]: certTypes.foundationalCSharpV8, + [Certification.FoundationalCSharp]: certTypes.foundationalCSharpV8 // upcoming - [Certification.UpcomingPython]: certTypes.upcomingPythonV8 }; export const superBlockCertTypeMap = { @@ -205,10 +199,9 @@ export const superBlockCertTypeMap = { // post-modern // TODO: use enum - [SuperBlocks.RespWebDesignNew]: certTypes.respWebDesign, + [SuperBlocks.RespWebDesignNew]: certTypes.respWebDesign // upcoming - [SuperBlocks.UpcomingPython]: certTypes.upcomingPythonV8 }; export const certTypeIdMap = { @@ -230,7 +223,6 @@ export const certTypeIdMap = { [certTypes.relationalDatabaseV8]: certIds.relationalDatabaseV8Id, [certTypes.collegeAlgebraPyV8]: certIds.collegeAlgebraPyV8Id, [certTypes.foundationalCSharpV8]: certIds.foundationalCSharpV8Id, - [certTypes.upcomingPythonV8]: certIds.upcomingPythonV8Id, [certTypes.jsAlgoDataStructV8]: certIds.jsAlgoDataStructV8Id }; @@ -254,7 +246,6 @@ export const certTypeTitleMap = { [certTypes.relationalDatabaseV8]: 'Relational Database', [certTypes.collegeAlgebraPyV8]: 'College Algebra with Python', [certTypes.foundationalCSharpV8]: 'Foundational C# with Microsoft', - [certTypes.upcomingPythonV8]: 'Upcoming Python', [certTypes.jsAlgoDataStructV8]: 'JavaScript Algorithms and Data Structures (Beta)' }; @@ -281,7 +272,6 @@ export const linkedInCredentialIds = { [Certification.CollegeAlgebraPy]: 'cawp', [Certification.FoundationalCSharp]: 'fcswm', [Certification.FullStackDeveloper]: 'fsd', - [Certification.UpcomingPython]: 'up', [Certification.JsAlgoDataStructNew]: 'jaads', [Certification.A2English]: 'a2efd', [Certification.B1English]: 'b1efd' diff --git a/shared/config/curriculum.ts b/shared/config/curriculum.ts index 7a5becaa427..88b0f9ba56b 100644 --- a/shared/config/curriculum.ts +++ b/shared/config/curriculum.ts @@ -23,7 +23,6 @@ export enum SuperBlocks { CollegeAlgebraPy = 'college-algebra-with-python', FoundationalCSharp = 'foundational-c-sharp-with-microsoft', FullStackDeveloper = 'full-stack-developer', - UpcomingPython = 'upcoming-python', A2English = 'a2-english-for-developers', B1English = 'b1-english-for-developers', RosettaCode = 'rosetta-code', @@ -102,8 +101,7 @@ export const superBlockStages: StageMap = { [SuperBlockStage.New]: [], [SuperBlockStage.Upcoming]: [ SuperBlocks.B1English, - SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython + SuperBlocks.FullStackDeveloper ] }; @@ -127,7 +125,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { SuperBlocks.JsAlgoDataStructNew, SuperBlocks.TheOdinProject, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.PythonForEverybody @@ -137,7 +134,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { SuperBlocks.ProjectEuler, SuperBlocks.TheOdinProject, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.PythonForEverybody @@ -147,7 +143,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { SuperBlocks.ProjectEuler, SuperBlocks.TheOdinProject, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.PythonForEverybody @@ -157,7 +152,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { SuperBlocks.JsAlgoDataStructNew, SuperBlocks.TheOdinProject, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.PythonForEverybody @@ -165,7 +159,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { [Languages.Portuguese]: [ SuperBlocks.JsAlgoDataStructNew, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.PythonForEverybody @@ -173,7 +166,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { [Languages.Ukrainian]: [ SuperBlocks.JsAlgoDataStructNew, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English ], @@ -181,7 +173,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { SuperBlocks.JsAlgoDataStructNew, SuperBlocks.TheOdinProject, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English ], @@ -197,7 +188,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { SuperBlocks.JsAlgoDataStructNew, SuperBlocks.TheOdinProject, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.PythonForEverybody @@ -221,7 +211,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { SuperBlocks.JsAlgoDataStructNew, SuperBlocks.JsAlgoDataStruct, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.PythonForEverybody @@ -243,7 +232,6 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = { SuperBlocks.FrontEndDevLibs, SuperBlocks.JsAlgoDataStructNew, SuperBlocks.FullStackDeveloper, - SuperBlocks.UpcomingPython, SuperBlocks.A2English, SuperBlocks.B1English, SuperBlocks.PythonForEverybody, diff --git a/tools/challenge-auditor/index.ts b/tools/challenge-auditor/index.ts index 7a17c93e87d..4fcb79f537c 100644 --- a/tools/challenge-auditor/index.ts +++ b/tools/challenge-auditor/index.ts @@ -50,7 +50,6 @@ const superBlockFolderMap = { 'project-euler': '18-project-euler', 'foundational-c-sharp-with-microsoft': '19-foundational-c-sharp-with-microsoft', - 'upcoming-python': '20-upcoming-python', 'a2-english-for-developers': '21-a2-english-for-developers', 'rosetta-code': '22-rosetta-code', 'python-for-everybody': '23-python-for-everybody', diff --git a/tools/challenge-editor/api/configs/super-block-list.ts b/tools/challenge-editor/api/configs/super-block-list.ts index 6145836c613..327038b15e9 100644 --- a/tools/challenge-editor/api/configs/super-block-list.ts +++ b/tools/challenge-editor/api/configs/super-block-list.ts @@ -71,10 +71,6 @@ export const superBlockList = [ name: '(New) Foundational C# with Microsoft', path: '19-foundational-c-sharp-with-microsoft' }, - { - name: 'Upcoming Python', - path: '20-upcoming-python' - }, { name: 'A2 English for Developers (Beta)', path: '21-a2-english-for-developers' diff --git a/tools/challenge-editor/client/src/components/block/block.tsx b/tools/challenge-editor/client/src/components/block/block.tsx index 3e5f75b3d0d..963f61d305a 100644 --- a/tools/challenge-editor/client/src/components/block/block.tsx +++ b/tools/challenge-editor/client/src/components/block/block.tsx @@ -7,8 +7,7 @@ import './block.css'; const stepBasedSuperblocks = [ '07-scientific-computing-with-python', '14-responsive-web-design-22', - '15-javascript-algorithms-and-data-structures-22', - '20-upcoming-python' + '15-javascript-algorithms-and-data-structures-22' ]; const taskBasedSuperblocks = [ diff --git a/tools/challenge-helper-scripts/commands.ts b/tools/challenge-helper-scripts/commands.ts index d5244ff1b78..6911a9c65bb 100644 --- a/tools/challenge-helper-scripts/commands.ts +++ b/tools/challenge-helper-scripts/commands.ts @@ -41,10 +41,9 @@ function insertStep(stepNum: number): void { throw `Step not inserted. New step number must be less than ${ challengeOrder.length + 2 }.`; - const challengeType = [ - SuperBlocks.SciCompPy, - SuperBlocks.UpcomingPython - ].includes(getMetaData().superBlock) + const challengeType = [SuperBlocks.SciCompPy].includes( + getMetaData().superBlock + ) ? challengeTypes.python : challengeTypes.html; @@ -72,10 +71,9 @@ function createEmptySteps(num: number): void { } const nextStepNum = getMetaData().challengeOrder.length + 1; - const challengeType = [ - SuperBlocks.SciCompPy, - SuperBlocks.UpcomingPython - ].includes(getMetaData().superBlock) + const challengeType = [SuperBlocks.SciCompPy].includes( + getMetaData().superBlock + ) ? challengeTypes.python : challengeTypes.html; diff --git a/tools/challenge-helper-scripts/fs-utils.ts b/tools/challenge-helper-scripts/fs-utils.ts index bad7decca76..46f5171adc8 100644 --- a/tools/challenge-helper-scripts/fs-utils.ts +++ b/tools/challenge-helper-scripts/fs-utils.ts @@ -22,7 +22,6 @@ export function getSuperBlockSubPath(superBlock: SuperBlocks): string { [SuperBlocks.CollegeAlgebraPy]: '17-college-algebra-with-python', [SuperBlocks.ProjectEuler]: '18-project-euler', [SuperBlocks.FoundationalCSharp]: '19-foundational-c-sharp-with-microsoft', - [SuperBlocks.UpcomingPython]: '20-upcoming-python', [SuperBlocks.A2English]: '21-a2-english-for-developers', [SuperBlocks.RosettaCode]: '22-rosetta-code', [SuperBlocks.PythonForEverybody]: '23-python-for-everybody', diff --git a/tools/scripts/build/build-external-curricula-data.test.ts b/tools/scripts/build/build-external-curricula-data.test.ts index 5b4fcb947af..748c8bd1fb7 100644 --- a/tools/scripts/build/build-external-curricula-data.test.ts +++ b/tools/scripts/build/build-external-curricula-data.test.ts @@ -86,11 +86,7 @@ describe('external curriculum data build', () => { ({ dashedName }) => dashedName ); - const isUpcoming = [ - 'b1-english-for-developers', - 'upcoming-python', - 'full-stack-developer' - ]; + const isUpcoming = ['b1-english-for-developers', 'full-stack-developer']; // TODO: this is a hack, we should have a single source of truth for the // list of superblocks that are available.