chore(curriculum): remove upcoming python superblock (#57247)

This commit is contained in:
Oliver Eyton-Williams
2024-11-20 18:14:36 +01:00
committed by GitHub
parent 62c4b665b7
commit fcedb7e98d
43 changed files with 21 additions and 832 deletions

View File

@@ -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

View File

@@ -48,7 +48,6 @@ export const newUser = (email: string) => ({
isCollegeAlgebraPyCertV8: false,
isRespWebDesignCert: false,
isSciCompPyCertV7: false,
isUpcomingPythonCertV8: null,
keyboardShortcuts: false,
linkedin: null,
location: '',

View File

@@ -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',

View File

@@ -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<typeof getChallenges>) {
[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
}
});

View File

@@ -78,7 +78,6 @@ export const unprotectedCertificateRoutes: FastifyPluginCallbackTypebox = (
isRelationalDatabaseCertV8: true,
isCollegeAlgebraPyCertV8: true,
isFoundationalCSharpCertV8: true,
isUpcomingPythonCertV8: true,
isHonest: true,
username: true,
name: true,

View File

@@ -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',

View File

@@ -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": [

View File

@@ -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,

View File

@@ -1,9 +0,0 @@
---
title: Upcoming Python Certification
superBlock: upcoming-python
certification: upcoming-python
---
## Upcoming Python Certification
Learn the basics of Python.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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!

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -69,7 +69,7 @@ const defaultProps = {
},
sourceInstanceName: 'mockSourceInstanceName',
superOrder: 1,
superBlock: SuperBlocks.UpcomingPython,
superBlock: SuperBlocks.RespWebDesign,
tail: ['mockTail'],
template: 'mockTemplate',
tests: [] as Test[],

View File

@@ -26,8 +26,7 @@ export const ConditionalDonationAlert = ({
const unfinishedCertifications = [
SuperBlocks.A2English,
SuperBlocks.B1English,
SuperBlocks.FullStackDeveloper,
SuperBlocks.UpcomingPython
SuperBlocks.FullStackDeveloper
];
if (!isDonating && betaCertifications.includes(superBlock))

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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

View File

@@ -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)
```

View File

@@ -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)
```

View File

@@ -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
```

View File

@@ -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]
```

View File

@@ -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
```

View File

@@ -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)
```

View File

@@ -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

View File

@@ -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

View File

@@ -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',

View File

@@ -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');

View File

@@ -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'

View File

@@ -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,

View File

@@ -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',

View File

@@ -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'

View File

@@ -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 = [

View File

@@ -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;

View File

@@ -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',

View File

@@ -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.