text:
Use ruff over black in the root

PR Checklist

[x] A description of the changes is added to the description of this PR.
[N/A] If there is a related issue, make sure it is linked to this PR.
[N/A] If you've fixed a bug or added code that should be tested, add tests!
[N/A] Documentation in docs is updated

Description of changes

Some issues we encountered in ruff were also encountered by @fpgmaas in this project, namely that with a nested project structure like this ruff picks up both pyproject.toml files and you get a "nested alternate groups are not allowed" error, see for instance https://github.com/astral-sh/ruff/issues/9381. This is solved by passing the --config flag so that ruff only looks at the pyproject.toml file in the root. I took the settings for ruff from {{cookiecutter.project_name}}/.pre-commit-config.yaml
/.pre-commit-config.yaml`.
For the two issues found by ruff, I made the following fixes:

subprocess-without-shell-equals-true (S603): Ignored. Following the documentation, this is prone to false positives. Even though the rule is called "subprocess-without-shell-equals-true", passing shell=True does not fix the hook.
start-process-with-a-shell  (S605): Ignored. This is a problem if we receive user input but we derive a path here from the OS. As such, no security risk.

Awesome, thanks @mikeweltevrede!

authors: fpgmaas mikeweltevrede

repo: fpgmaas/cookiecutter-poetry


text:
Do not copy Arduino's source code into arduino-ats/_arduino.

Please use arduino-core package's.
https://packages.debian.org/sid/arduino-core

The arduino-core includes C++ API and C API. ATS language can't use any C++ API.
Then, this project should do following:

Copy C/C++ language code include headers from arduino-core
Remove C++ part in the code

source: gharchive/issue

repo: fpiot/arduino-ats

license: mit

license_type: permissive

license_source: bigquery


text:
Make tutorial scenarios simpler

T3 is currently running 7.2 million person-years, which seems excessive. Consider reducing:

[ ] Repeats (from 3 to 2 or even 1)
[ ] Number of scenarios (from 6 to 2 or at most 3)
[ ] Population size (from 10,000 to 1000 or 2000)
[ ] Number of years (from 40 to 20)

If all of these changes are made, the scenarios should run ~100x faster -- so back to seconds instead of minutes.

@pausz - Could you tackle this in parallel with the other work on the tutorials you're doing for v2.0?

Long since fixed

authors: MObrien-IDM cliffckerr

repo: fpsim/fpsim

license: MIT

license_source: github-api


text:
Fix LaTeX warnings

This PR makes the following changes:

[x] Fix a typo in blueprint
[x] Update the .gitignore
[x] Comment out useless and buggy fontspec
[x] Make .gitignore temporarily visible in VS Code
[x] Remove duplicate label and \uses

Thanks!

source: gharchive/pull-request

authors: fpvandoorn pitmonticone

repo: fpvandoorn/BonnAnalysis


text:
Template is not working on device (phone)

Project url: https://github.com/framework7io/framework7-template-vue-simple
Hi, i downloaded all files after build at build.phonegap.com. Then i installed that apk but not working vue template.... i think device can not compile vue template file.
P.s: All files are working localhost, or web but not working at device(apk --->phone).
What can i do?

Does it work for you when you open it from browser https://framework7io.github.io/framework7-template-vue-simple/ ?

This template doesn't use any files compilation, this is why it is called "Simple". Make sure you have followed the guide correctly https://github.com/framework7io/framework7-template-vue-simple#usage


text:
🛑 PEDCO is down

In 10f639e, PEDCO (https://pedco.uncoma.edu.ar/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: PEDCO is back up in 37b1ba1.


text:
feat: support tailwind config in typescript

Support tailwind config written in typescript as well as other common extensions
Description

Replace simple require on tailwind config with the loadConfig function from tailwindcss package that supports typescript parsing
Switch from hardcoded name for default config to resolveDefaultConfigPath function from tailwindcss package that looks for one of ./tailwind.config.{js,cjs,mjs,ts}
Update tailwindcss to v3.3.x in order to import the new functionality from the package
Because of update beyond v3.3.0 an additional fixes were made for classnames-order rule tests since tailwindcss changed the ordering function at v3.3.0.

Fixes #228
Type of change

[X] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
In a any project with tailwindcss and eslint-plugin-tailwindcss that utilises a JS-based config:

define some custom theme in the config (I used theme: {colors: {blueish: #0000aa}};
use a class based on the custom theme (text-blueish in my case);
ensure the rule does not work (no-custom-classname in my case);
rename config to ts extension;
add typings so that the file is not parsable by a JS engine;
check that the rule reports the custom class (evidently because config is not loaded);
switch the eslint-plugin-tailwindcss in package.json to the local repo checked out from this branch;
now the custom config shall be loaded correctly and the rule again does not report.

Checklist:

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[X] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[X] Any dependent changes have been merged and published in downstream modules
[X] I have checked my code and corrected any misspellings

👋 @quesabe
Thank you for contributing, 🙏
I just published your PR in the beta channel
npm i eslint-plugin-tailwindcss@3.12.0-beta.0
I'll run it against my current project for a last test prior to release.

Looking good except that I had to update my project's dependency to:
tailwindcss@3.3.2
I'm planning to release it this monday, if some users of the plugin want to try the beta version and provide feedback and it would be appreciated as well.
Cheers

I've tested this out and it works fine for me! Below are all of my tailwind related dependencies
"tailwind-merge": "^1.12.0",
"tailwindcss": "^3.3.1",
"tailwindcss-animate": "^1.0.5",
"tailwindcss-radix": "^2.8.0",
"@tailwindcss/forms": "^0.5.3",
"eslint-plugin-tailwindcss": "^3.12.0-beta.0",
"prettier-plugin-tailwindcss": "^0.2.7",

Also seems to be working properly for me IDE & CLI, alongside prettier as well.
    "eslint": "8.28.0",
    "eslint-config-next": "13.1.2",
    "eslint-config-prettier": "^8.5.0",
    "eslint-config-standard-with-typescript": "^24.0.0",
    "eslint-mdx": "^2.0.5",
    "eslint-plugin-import": "^2.26.0",
    "eslint-plugin-mdx": "^2.0.5",
    "eslint-plugin-n": "^15.6.0",
    "eslint-plugin-promise": "^6.1.1",
    "eslint-plugin-storybook": "^0.6.8",
    "eslint-plugin-tailwindcss": "3.12.0-beta.0",
    "prettier": "^2.8.1",
    "prettier-plugin-tailwindcss": "^0.2.6",
    "tailwindcss": "^3.3.2",

Thanks, @quesabe!

authors: francoismassart getinnocuous itsmingjie pm0u quesabe


text:
Feature/pk chunking

Add option to run batch with PKChunking enabled.

Changes Unknown when pulling f50dd8f80947563cc0a3b4442af4fea3705a6d9c on ronnievisser:feature/PKChunking into ** on frankkessler:master**.

Changes Unknown when pulling f50dd8f80947563cc0a3b4442af4fea3705a6d9c on ronnievisser:feature/PKChunking into ** on frankkessler:master**.

Changes Unknown when pulling c407c60909ec0d076d0f2489dbf14fc091a7a97c on ronnievisser:feature/PKChunking into ** on frankkessler:master**.

#53

Thanks @ronnievisser .  I checked out this request.  The only thing I would change is where you injest the header.  I would keep that bulk client clean and add this special header to the requests that need it.  You can add an option to the runBatch function for the pksize initialized to null.  If you set it to a number, the pksize should be checked later on how to handle the batch response.  You might be able to use the code that runs when "isBatchedResult" is set as an option as well.
I might be able to help with some of this next week.

Ok! that would be great! I will also take a good look at it to optimize.

Hi @frankkessler,
do you have any ETa on when you could review this? I actually need it working on wednesday. It would be very helpful if you could help with your ideas or merge this.
thanks

Added in version v0.4.14

Hi @frankkessler,
Maybe I'm looking incorrectly but I have the feeling this doesn't help. you are still putting the result of all the batches in the $batches array. this would still cause memory issues. the difference with my change was the callback function that processes each batch result separately.

@ronnievisser Hey, I missed the callable in your implementation.  I just added in the ability to supply a class that will process all of the records and skip adding the records to the normal batch response.  I hope that helps.

authors: coveralls frankkessler ronnievisser


text:
How to no display popup when click task.

I don't want to show popup when I click on a task.

I have been adding an empty custom popup:
custom_popup_html: function(task) {
return ``;
}

@JonesM87 it still show arrow

For anyone else looking, the below worked for me to get rid of the arrow
'.gantt-container .popup-wrapper .pointer': { borderColor: 'transparent' }

authors: JonesM87 Uysim imanwarsame srcker

repo: frappe/gantt


text:
An option to check version number

add an option to check version number like -v and --version

Implemented in the latest release 0.1.14.

authors: dagimg-dot frectonz

repo: frectonz/sql-studio


text:
🛑 EC is down

In 8591296, EC (https://ec.tut.ac.za) was down:

HTTP code: 0
Response time: 0 ms

Resolved: EC is back up in 17df68c.

repo: fredre/ecMonitor


text:
Merge refs/heads/feature/chunked into alpha

Merge refs/heads/feature/chunked into alpha

This PR has been merged into alpha and tagged as 1.6.0-alpha-202304051244. Thanks for your contribution!

repo: fredyk/westack-go


text:
help me

Challenge Use CSS Selectors to Style Elements has an issue.
User Agent is: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36.
Please describe how to reproduce this issue, and include links to screenshots if possible.
My code:

CatPhotoApp

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

@Arpine80 You have an error in your code. Please consider asking for help in the chat room by clicking the Help button on the challenge page.

repo: freeCodeCamp/freeCodeCamp


text:
Update Docs to Show How to Push to Production

Document how to work off production.

@benschac Thanks for the issue and PR. I'm conflicted on whether to include this mostly because the changes to production are rare and I wouldn't want to cause more confusion for a new contributor. What do others think? cc @freeCodeCamp/moderators

I would suggest it is an edge case and will not be required when staging is merged into master

Could we label it as something along the lines of Legacy work?
On Tue, Aug 29, 2017 at 10:27 AM, Stuart Taylor notifications@github.com
wrote:

I would suggest it is an edge case and will not be required when staging
is merged into master
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-325680066,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACYxI-kzdzdOsfsSmlLkeLNCKhoE-c5hks5sdB_TgaJpZM4PD-ig
.

While it's one off there are still requests for this work and we should
have documentation for it while we still need it.  Warning signs could also
work too :D
On Tue, Aug 29, 2017 at 10:28 AM, Benjamin Schachter benschac@gmail.com
wrote:

Could we label it as something along the lines of Legacy work?
On Tue, Aug 29, 2017 at 10:27 AM, Stuart Taylor notifications@github.com
wrote:

I would suggest it is an edge case and will not be required when staging
is merged into master
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-325680066,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACYxI-kzdzdOsfsSmlLkeLNCKhoE-c5hks5sdB_TgaJpZM4PD-ig
.

I am not sure about that one.  when we release the beta to production. backup/master will be "gone". we will not work on that branch after beta released.
more like we have to use example branch. so we don't have to change it again.   for showing them how to use checkout track on another branch. or something.

Thanks for the issue @benschac! More documentation is often good, but I think there are a couple issues with this:

A lot of people reading this guide already are at the edge of their abilities trying to understand what's going on. Adding this without clear instructions not to do this unless it's explicitly mentioned will cause confusion.
Because of the massive differences between dependencies and workflow, a lot more needs to happen than switching the branch. As far as I'm aware, most contributors who need to get an instance of the backup/staging running branch clone it into a new folder and follow the CONTRIBUTING.md of that branch to install and run everything.

I'm not sure if there is a good way to document this.

FWIW, I am inclined to understand what the potential issues especially new contributors and/or occasional contributors should be facing. I have commented on this earlier, faced this while helping potential contributors in chat and even answered on the forum for a question on split versions of the codebase.
But, what @benschac has pointed is correct.
I suggest let's rather have this as a wiki guide on the forum and link to it from the contributing guide at the very top with a warning about the staging vs production (master). just like you would see at times on a Wikipedia article, going through a change frequently
We could then remove the warning when needed.

I'll update my PR after work. Thnx.
On Wed, Aug 30, 2017 at 11:47 AM, mrugesh mohapatra <
notifications@github.com> wrote:

FWIW, I am inclined to understand what the potential issues especially new
contributors and/or occasional contributors should be facing. I have
commented on this earlier, faced this while helping potential contributors
in chat and even answered on the forum for a question on split versions of
the codebase.
But, what @benschac https://github.com/benschac has pointed is correct.
I suggest let's rather have this as a wiki guide on the forum and link to
it from the contributing guide at the very top with a warning about the
staging vs production (master). just like you would see at times on a
Wikipedia article, going through a change frequently
We could then remove the warning when needed.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-326030922,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACYxIyyMmNDorBvvDPcLESVDCp5dNe9Lks5sdYP_gaJpZM4PD-ig
.

@benschac Ping! 🔔 No hurry, just making sure you didn't forget about this 🙂

Hey,
Sorry for the late response! I've been moving and I have some work stuff.
I'll totally get to this soon. Thanks for the ping. :D.
On Sat, Sep 2, 2017 at 2:40 PM, Timo notifications@github.com wrote:

@benschac https://github.com/benschac Ping! 🔔 No hurry, just making
sure you didn't forget about this 🙂
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-326762333,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACYxI2VjrG9ZRBLufKoQdDPgkcki-qBaks5seaEGgaJpZM4PD-ig
.

I'm closing this issue as stale since it hasn't been active lately. If you think this is still relevant to the newly updated platform, please explain why, then reopen it.

This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a temporary error. The following address(es) deferred:
manzil@gmail.com
Domain funtasticlabs.com has exceeded the max emails per hour (111/100 (111%)) allowed.  Message will be reattempted later
------- This is a copy of the message, including all the headers. ------
Received: from mailin-04.elitehosts.com ([72.9.130.158]:39157)
by neo.internetwebserver.net with esmtp (Exim 4.87)
(envelope-from noreply@github.com)
id 1fPUOk-0006Lf-Tu
for manzil@funtasticlabs.com; Sun, 03 Jun 2018 10:54:22 -0400
Received: from out-10.smtp.github.com ([192.30.254.193])
by mailin-04.elitehosts.com with esmtp (Exim 4.69)
(envelope-from noreply@github.com)
id 1fPUOK-0006Hk-6Z
for manzil@funtasticlabs.com; Sun, 03 Jun 2018 10:53:56 -0400
Date: Sun, 03 Jun 2018 07:53:54 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com;
s=pf2014; t=1528037634;
bh=AG81nfO8ZUUhsX0JVzcoWDzsiofvoxXCHWNKahhhxlo=;
h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID:
List-Archive:List-Post:List-Unsubscribe:From;
b=rvTFGh6LEGvDlmPD5uRjtoexxd6amQThZxL6wcVVpcAh9PODvuTsRIhBDZXvtbcrC
O+r8YwHtjHtNXHEIchzbsi1IkON4KxyXxus1MMVUNi/XjZqvGc7xLaRpEzfQpvGIMv
9IaykmaEQxT3yXgFOMiGGLxvy59PbQbwCI/0Hfy4=
From: Quincy Larson notifications@github.com
Reply-To: freeCodeCamp/freeCodeCamp reply@reply.github.com
To: freeCodeCamp/freeCodeCamp freeCodeCamp@noreply.github.com
Cc: Subscribed subscribed@noreply.github.com
Message-ID: freeCodeCamp/freeCodeCamp/issue/15812/issue_event/1660031592@github.com
In-Reply-To: freeCodeCamp/freeCodeCamp/issues/15812@github.com
References: freeCodeCamp/freeCodeCamp/issues/15812@github.com
Subject: Re: [freeCodeCamp/freeCodeCamp] Update Docs to Show How to Push to
Production (#15812)
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_5b1401026e063_48452b257ccbef5429203c";
charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: QuincyLarson
X-GitHub-Recipient: manzilo
X-GitHub-Reason: subscribed
List-ID: freeCodeCamp/freeCodeCamp <freeCodeCamp.freeCodeCamp.github.com>
List-Archive: https://github.com/freeCodeCamp/freeCodeCamp
List-Post: mailto:reply@reply.github.com
List-Unsubscribe: mailto:unsub+00bd4a0aeeb9633fcbb282ad3b8c6014afe2ad852033f17d92cf00000001172bc30292a169ce0f179198@reply.github.com,
https://github.com/notifications/unsubscribe/AL1KCrkP3XYLDae1Pfzzg_s3q0CtDi5Lks5t4_iCgaJpZM4PD-ig
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: manzil@funtasticlabs.com
X-MAILIN-04-MailScanner-Information: Please contact the ISP for more information
X-MAILIN-04-MailScanner-ID: 1fPUOK-0006Hk-6Z
X-MAILIN-04-MailScanner: Found to be clean
X-MAILIN-04-MailScanner-SpamCheck: not spam, SpamAssassin (not cached,
score=-4.659, required 10, autolearn=not spam, AWL 1.74,
BAYES_00 -1.90, HTML_IMAGE_ONLY_32 0.00, HTML_MESSAGE 0.00,
KHOP_THREADED -1.50, RP_MATCHES_RCVD -3.00, SPF_PASS -0.00,
URIBL_BLOCKED 0.00)
X-MailScanner-From: noreply@github.com
X-Spam-Status: No
----==_mimepart_5b1401026e063_48452b257ccbef5429203c
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Closed #15812.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#event-1660031592
----==_mimepart_5b1401026e063_48452b257ccbef5429203c
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Closed #15812.
—You are receiving this because you are subscribed to this thread.Reply to this email directly, view it on GitHub, or mute the thread.
{"@context":"http://schema.org","@type":"EmailMessage","potentialAction":{"@type":"ViewAction","target":"https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#event-1660031592","url":"https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#event-1660031592","name":"View Issue"},"description":"View this Issue on GitHub","publisher":{"@type":"Organization","name":"GitHub","url":"https://github.com"}}
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/freeCodeCamp/freeCodeCamp","title":"freeCodeCamp/freeCodeCamp","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/email/message_cards/header.png","avatar_image_url":"https://assets-cdn.github.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/freeCodeCamp/freeCodeCamp"}},"updates":{"snippets":[{"icon":"DESCRIPTION","message":"Closed #15812."}],"action":{"name":"View Issue","url":"https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#event-1660031592"}}}
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "37567f93-e2a7-4e2a-ad37-a9160fc62647",
"title": "Re: [freeCodeCamp/freeCodeCamp] Update Docs to Show How to Push to Production (#15812)",
"sections": [
{
"text": "",
"activityTitle": "**Quincy Larson**",
"activityImage": "https://assets-cdn.github.com/images/email/message_cards/avatar.png",
"activitySubtitle": "@QuincyLarson",
"facts": [
]
}
],
"potentialAction": [
{
"targets": [
{
"os": "default",
"uri": "https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#event-1660031592"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "MuteNotification",\n"threadId": 252700832\n}"
}
],
"themeColor": "26292E"
}
----==_mimepart_5b1401026e063_48452b257ccbef5429203c--

This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a temporary error. The following address(es) deferred:
manzil@gmail.com
Domain funtasticlabs.com has exceeded the max emails per hour (113/100 (112%)) allowed.  Message will be reattempted later
------- This is a copy of the message, including all the headers. ------
Received: from mailin-04.elitehosts.com ([72.9.130.158]:39629)
by neo.internetwebserver.net with esmtp (Exim 4.87)
(envelope-from noreply@github.com)
id 1fPUPj-000761-Kh
for manzil@funtasticlabs.com; Sun, 03 Jun 2018 10:55:23 -0400
Received: from out-4.smtp.github.com ([192.30.252.195])
by mailin-04.elitehosts.com with esmtp (Exim 4.69)
(envelope-from noreply@github.com)
id 1fPUOG-0006Hh-9m
for manzil@funtasticlabs.com; Sun, 03 Jun 2018 10:53:52 -0400
Date: Sun, 03 Jun 2018 07:53:50 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com;
s=pf2014; t=1528037630;
bh=ahkzeu+8haFyGEPrs4XLi+Zcfkej8rngsmBbdkAdb9E=;
h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID:
List-Archive:List-Post:List-Unsubscribe:From;
b=Ts1AkUrIJMk7ZBtAC6lSKiEhbPNs5i41xfHKe6rM3kALrV02UaRSsVDAs8PuFoIPW
g8WFEeVfsdvr2hjGJUhkSOl2bN+Ajf50SdDllgFfotfu2xyVbBlNRwWhzY3YsU6heO
n/mXt3npO8mzI9KEIY/Lb3pferiyu68SNFbEke9I=
From: Quincy Larson notifications@github.com
Reply-To: freeCodeCamp/freeCodeCamp reply@reply.github.com
To: freeCodeCamp/freeCodeCamp freeCodeCamp@noreply.github.com
Cc: Subscribed subscribed@noreply.github.com
Message-ID: freeCodeCamp/freeCodeCamp/issues/15812/394167665@github.com
In-Reply-To: freeCodeCamp/freeCodeCamp/issues/15812@github.com
References: freeCodeCamp/freeCodeCamp/issues/15812@github.com
Subject: Re: [freeCodeCamp/freeCodeCamp] Update Docs to Show How to Push to
Production (#15812)
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_5b1400fe72fac_2a7d2b0d80a7cf5c315724";
charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: QuincyLarson
X-GitHub-Recipient: manzilo
X-GitHub-Reason: subscribed
List-ID: freeCodeCamp/freeCodeCamp <freeCodeCamp.freeCodeCamp.github.com>
List-Archive: https://github.com/freeCodeCamp/freeCodeCamp
List-Post: mailto:reply@reply.github.com
List-Unsubscribe: mailto:unsub+00bd4a0a6edabe923f4d64405b079a5b77a35b2398a7cfd992cf00000001172bc2fe92a169ce0f179198@reply.github.com,
https://github.com/notifications/unsubscribe/AL1KCognfEVA2tkpwqlCKTNAaZVcG-kXks5t4_h-gaJpZM4PD-ig
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: manzil@funtasticlabs.com
X-MAILIN-04-MailScanner-Information: Please contact the ISP for more information
X-MAILIN-04-MailScanner-ID: 1fPUOG-0006Hh-9m
X-MAILIN-04-MailScanner: Found to be clean
X-MAILIN-04-MailScanner-SpamCheck: not spam, SpamAssassin (not cached,
score=-4.66, required 10, autolearn=not spam, AWL 1.74,
BAYES_00 -1.90, HTML_MESSAGE 0.00, KHOP_THREADED -1.50,
RP_MATCHES_RCVD -3.00, SPF_PASS -0.00, URIBL_BLOCKED 0.00)
X-MailScanner-From: noreply@github.com
X-Spam-Status: No
----==_mimepart_5b1400fe72fac_2a7d2b0d80a7cf5c315724
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
I'm closing this issue as stale since it hasn't been active lately. If you think this is still relevant to the newly updated platform, please explain why, then reopen it.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-394167665
----==_mimepart_5b1400fe72fac_2a7d2b0d80a7cf5c315724
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
I'm closing this issue as stale since it hasn't been active lately. If you think this is still relevant to the newly updated platform, please explain why, then reopen it.
—You are receiving this because you are subscribed to this thread.Reply to this email directly, view it on GitHub, or mute the thread.
{"@context":"http://schema.org","@type":"EmailMessage","potentialAction":{"@type":"ViewAction","target":"https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-394167665","url":"https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-394167665","name":"View Issue"},"description":"View this Issue on GitHub","publisher":{"@type":"Organization","name":"GitHub","url":"https://github.com"}}
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/freeCodeCamp/freeCodeCamp","title":"freeCodeCamp/freeCodeCamp","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/email/message_cards/header.png","avatar_image_url":"https://assets-cdn.github.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/freeCodeCamp/freeCodeCamp"}},"updates":{"snippets":[{"icon":"PERSON","message":"@QuincyLarson in #15812: I'm closing this issue as stale since it hasn't been active lately. If you think this is still relevant to the newly updated platform, please explain why, then reopen it."}],"action":{"name":"View Issue","url":"https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-394167665"}}}
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "37567f93-e2a7-4e2a-ad37-a9160fc62647",
"title": "Re: [freeCodeCamp/freeCodeCamp] Update Docs to Show How to Push to Production (#15812)",
"sections": [
{
"text": "",
"activityTitle": "**Quincy Larson**",
"activityImage": "https://assets-cdn.github.com/images/email/message_cards/avatar.png",
"activitySubtitle": "@QuincyLarson",
"facts": [
]
}
],
"potentialAction": [
{
"name": "Add a comment",
"@type": "ActionCard",
"inputs": [
{
"isMultiLine": true,
"@type": "TextInput",
"id": "IssueComment",
"isRequired": false
}
],
"actions": [
{
"name": "Comment",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "IssueComment",\n"repositoryFullName": "freeCodeCamp/freeCodeCamp",\n"issueId": 15812,\n"IssueComment": "{{IssueComment.value}}"\n}"
}
]
},
{
"targets": [
{
"os": "default",
"uri": "https://github.com/freeCodeCamp/freeCodeCamp/issues/15812#issuecomment-394167665"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "MuteNotification",\n"threadId": 252700832\n}"
}
],
"themeColor": "26292E"
}
----==_mimepart_5b1400fe72fac_2a7d2b0d80a7cf5c315724--

authors: Bouncey QuincyLarson benschac dhcodes manzilo raisedadead systimotic texas2010


text:
[The Odin Project] Typo in Links and Images lessons

Description
The word "finally" should be capitalized.

Affected pages

https://www.freecodecamp.org/learn/the-odin-project/top-links-and-images/links-and-images-question-b
https://www.freecodecamp.org/learn/the-odin-project/top-links-and-images/links-and-images-question-c

Changes needed
Capitalize the word "finally" in the following files:

https://github.com/freeCodeCamp/freeCodeCamp/blob/main/curriculum/challenges/english/16-the-odin-project/top-links-and-images/links-and-images-question-b.md
https://github.com/freeCodeCamp/freeCodeCamp/blob/main/curriculum/challenges/english/16-the-odin-project/top-links-and-images/links-and-images-question-c.md

@huyenltnguyen, Can you please assign this to me, I want to work on it.

authors: huyenltnguyen omair-muhammad


text:
Docs: Modified java build tool wiki to add info about maven settings

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Looks good @g2chauhan, Thank you for contributing!


text:
Added Keyframes section

Changed the intro, added a whole keyframes section + example using from/to and values

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

This looks good to me.  Thank you for your contribution!

authors: cmccormack michaelrappaz


text:
inclusion of  private cloud clients

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

@Sharkyshreds 	Well done!
Congrats on your first-time contribution!

authors: Sharkyshreds paulywill


text:
Added Attribute Selectors

Attribute selectors added with example.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

@RayonD Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 📝

authors: RayonD thecodingaviator


text:
Update index.md (changed file misspelling)

the challenge is asking for file name, string_function not string-functions
changed readme to string_function so not to confuse new users

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Thank you for opening this pull request.
This is a standard message notifying you that we’ve reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
Thank you and happy coding.


text:
Defining array size in compile time

[ ] I have read freeCodeCamp's contribution guidelines.
[ ] My pull request has a descriptive title (not a vague title like Update index.md)
[ ] My pull request targets the master branch of freeCodeCamp.
[ ] None of my changes are plagiarized from another source without proper attribution.
[ ] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Thank you for your contribution. At this time we have decided not to merge your pull request. We welcome future pull requests from you.
Reason: This PR currently has merge conflicts and since you deleted the fork/branch, we can not easily resolve. Please create a new fork and review the file on master to see if the modifications made in this PR are still needed. If so, please create a new pull request.
Thank you and happy coding!

authors: RandellDawson wasifAL


text:
added a few more notable games to the list

[ x] I have read freeCodeCamp's contribution guidelines.
[ x] My pull request has a descriptive title (not a vague title like Update index.md)
[x ] My pull request targets the master branch of freeCodeCamp.
[x ] None of my changes are plagiarized from another source without proper attribution.
[x ] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Thank you for opening this pull request.
This is a standard message notifying you that we’ve reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
Reason:  The existing list has enough already.
Thank you and happy coding.


text:
Update uncomment-html.spanish.md

Some sentences were not natural at all. I think they might be better now :smile:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

This PR was closed because user's repo was deleted.

authors: RandellDawson ghost


text:
fix: Fixes white space comparision issues on run test.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #34344

@wmollenkopf I pulled your PR locally and once I rebased it, had to resolve a merge conflict.  After doing so, your changes do not work.  They fail for even the most basic solutions of:
console.log('Now I know React and Redux!');

See my suggested assert which should work.  You will have to update this same assert across all the language files.

If you plan to fix this PR, please reopen it with the working changes — I'm closing it due to lack of activity.

authors: RandellDawson lynxlynxlynx wmollenkopf


text:
fix: normalize font weights globally and font hierarchy on map

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[x] My changes do not use shortened URLs or affiliate links.

Closes #35290

before:

After:


text:
fix: sync up client and server validation

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[x] My changes do not use shortened URLs or affiliate links.

This makes the api-server and client use a common validate function to check usernames.  It also whitelists allowed characters rather than blacklists invalid ones, in part to make it easier to understand what is and is not allowed.
Related to https://github.com/freeCodeCamp/freeCodeCamp/issues/37714.

not sure why the tests are pending.

Gitpod seems to do that sometimes, for no obvious reason.  You can open this PR in it just fine.

authors: ahmadabdolsaheb ojeytonwilliams


text:
feat(.devcontainer): basic codespaces config

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

To Test

Select New with options...

On next page, choose the correct devcontainer.json file to use

Currently, there are almost definitely too many 🐛 for the main devcontainer, but the docs one should work just fine

I have removed my approval, because this is outside of my scope 👍

This seems to work, but I get this error:
Error: Something went wrong installing the "sharp" module
  Cannot find module '../build/Release/sharp-linux-x64.node'

I fix this by running the recommended:
npm install --ignore-scripts=false --verbose sharp

So, I am not sure if this is a problem with Gatsby:
Error in "/workspaces/freeCodeCamp/node_modules/gatsby-plugin-manifest/gatsby-node.js":
Something went wrong installing the "sharp" module

Cannot find module '../build/Release/sharp-linux-x64.node'
Require stack:
- /workspaces/freeCodeCamp/node_modules/sharp/lib/sharp.js
- /workspaces/freeCodeCamp/node_modules/sharp/lib/constructor.js
- /workspaces/freeCodeCamp/node_modules/sharp/lib/index.js
- /workspaces/freeCodeCamp/node_modules/gatsby-plugin-manifest/safe-sharp.js
- /workspaces/freeCodeCamp/node_modules/gatsby-plugin-manifest/gatsby-node.js

Or, if it is an issue with the base image for the Nodejs + MongoDB devcontainer being Debian.
Unless others can think of a better way, I am happy for this to go in as is.

authors: Sboonny ShaunSHamilton


text:
feat(client): account for portfolio project without image

Checklist:

[x] I have read and followed the contribution guidelines.
[x] I have read and followed the how to open a pull request guide.
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

These changes aim to make visually pleasing to have a project without image, I haven't checked the mobile layout yet

While reviewing this, to understand :has think of it as an if statement.

if (`parent` has `something`) {
display these properties
}

understand :has think of it as an if statement

Just a reminder that Firefox does not support :has yet.

Does this mean it will behave in different browsers?

This @supports not (selector(:has)) take care of card looking broken in different browser.

what is the justification here?

Go to /setting and create a portfolio project without adding image, check it in the profile, even without you adding image, you will see broken image, this sort that issue.

How does this feature get managed long-term?

In long term, Firefox supports has and @supports not (selector(:has)) becomes redundant, or it acts the same as the current PR.

Do we need to record the differences somewhere as docs so that it is not forgotten?

I wouldn't.

I see where you are coming from. But IMHO, other UX considerations need to be made.
This is not (and should not be) a quick CSS fix. We should have different layouts (tiny functions that render a certain container in the portfolio-projects components) for the cards:

When only a title and a URL are available, aka the basics.
A description is also available in addition to the basics above.
An image is also available in addition to the basics above.
Descriptions and images are also available in addition to the basics.

So each condition above get's its own "container" card. Then you have a simple CSS style for each card. Then you can render the container based on the attributes you get in your props.
That should be the logical approach here.

I see where you are coming from. But IMHO, other UX considerations need to be made.
This is not (and should not be) a quick CSS fix. We should have different layouts (tiny functions that render a certain container in the portfolio-projects components) for the cards:

When only a title and a URL are available, aka the basics.
A description is also available in addition to the basics above.
An image is also available in addition to the basics above.
Descriptions and images are also available in addition to the basics.

So each condition above get's its own "container" card. Then you have a simple CSS style for each card. Then you can render the container based on the attributes you get in your props.
That should be the logical approach here.

I don't like the idea of creating four components and four styles, for single card.
So let's do it like this, I will create a PR for validation the input, and include a fallback image, if the string is empty. maybe the freeCodeCamp Glyph.
This way, we don't have to use has or create multiple components to account for different states.

I don't like the idea of creating four components and four styles, for single card.

Why would that need to be four components? Should be something for conditional rendering, no?

you forgot the to ask about the four styles 🙃, the number doesn't matter. IT will become redundant later, if we add fallback image, so I prefer adding the fallback image.

I advise discussing the possible solutions before jumping to solutions (creating PRs etc.). It wastes your time and, more importantly, the person looking at your work.
What you are proposing seems like a band-aid to avoid a UX change. That is, it may not look aesthetically pleasing, but sure, it is less code. That's not how it should be – we are in the business of writing code.
So going back to a more scientific discussion, if you will.
Could you elaborate more on this first:
"I don't like the idea of creating four components and four styles for a single card."
We want strong reasons to move on to the next UX idea - not just a personal preference. And to be clear, these may not be four components but conditional ways of rendering information.
Thanks.

"I don't like the idea of creating four components and four styles for a single card."

Sorry, a better wording can be, I like the idea of fallback image more, because the images can be set by the campers as default fallback to their projects, which can be their logo or picture of their selves, which can contribute to personalizing the profile page.
Although changing the card layout is one of the plan too. Although possible, I don't think it's worth it to put in the effort to make a different condition and layout, because we don't have the tools currently to make developing this as simple as the other solution.
The condition rendering solution for the card can be different in the future, while the fallback image logic should still be the same.

Do I start working on this PR again? or is there something that we need to address before I do so?

authors: Sboonny bbsmooth naomi-lgbt raisedadead


text:
fix(curriculum) : Grammatical errors corrected.

fix(curriculum) : Grammatical errors corrected.
Checklist:

[x] I have read and followed the contribution guidelines.
[ ] I have read and followed the how to open a pull request guide.
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #50888

Hi there,
Thanks for creating this pull request.
Please ensure you follow the PR checklist and not just tick things off; otherwise, we won't take you seriously. Respect the requirements to earn the respect of your fellow maintainers. You will also save everyone time :)
Since you are new here, please slow down and read our contributing guidelines, as we see that you may still need to catch up on a few things.

Here are some examples (expand)

Do not edit files directly on GitHub – while you can, it's not a good idea.
Typos and formatting errors can break the tests.

Use the correct way to link issues.
Add the issue number only in the description of the PR by updating the XXXXXX. Do not just add issue numbers everywhere and anywhere you feel like.

Keep mentions and review requests to a minimum.
We understand you are excited about contributing, and our maintainers will get back to you when they can.

Do not work directly off your main branch.
You can always create a new branch for the changes you are working on. That way, you can sync change to your PR branch as the main repository moves ahead while your PR is waiting in the merge queue.

Don't worry. You don't have to close this PR. Feel free to ask specific queries on improving your PR here; someone will guide you.
We are happy you are excited to contribute and appreciate you taking the time to help us. Looking forward to more contributions!
Happy Contributing.

Hello,
Thanks for mentioning the shortcomings in my PR.
As mentioned I went through the referred part of the article. I am not able to figure out what exactly I have overlooked. But still I rephrased my PR description. I would request you to please have a look at it. I would like your feedback on it.
I apologize for the inconvenience caused in advance and thank you for being patient enough to help me out with issue.
Thanks in advance.

You put the title in a place that isn't the title. I updated it for you.

Is "fix(curriculum) : Grammatical errors corrected." supposed to be after the line "Closes #50888" ??

Nope, its supposed to be in the title

up top in this picture

Thank you very much!!!
Got it. I will make sure I put the correct title.
So is the PR good to be merged into the main branch??

Thank you very much for all the help.
is it fine if I check the second line in my PR checklist?

Hi @Avyukth1C. Congrats on your first pull request (PR)! 🎉
Thank you for your contribution to the page! 👍
We are happy to accept these changes and look forward to future contributions. 📝

authors: Avyukth1C gikf jeremylt


text:
freeCodeCamp, Tirunelveli, Tamil Nadu, India

https://www.facebook.com/groups/free.code.camp.tirunelveli

@abstalento
thanks I'll add this in the next update

repo: freeCodeCamp/study-group-directory


text:
moving initializations to end of module

Contributor Checklist

[ ] Did you add Scaladoc to every public function/method? N/A
[ ] Did you update the FIRRTL spec to include every new feature/behavior? N/A
[ ] Did you add at least one test demonstrating the PR?
[x] Did you delete any extraneous printlns/debugging code?
[x] Did you specify the type of improvement?
[x] Did you state the API impact?
[x] Did you specify the code generation impact?
[x] Did you request a desired merge strategy?
[ ] Did you add text to be included in the Release Notes for this change? N/A

Type of Improvement

code refactoring

API Impact

No API impact.
Backend Code Generation Impact

Initialization code for registers/memory will be emitted at the end of modules for better readability.
For comparison, this is the original ZeroWithMem.v generated from firrtlTests/MemSpec.scala:
module ZeroWidthMem(
  input        clock,
  input        reset,
  input  [3:0] waddr,
  input  [9:0] in_0,
  input  [3:0] raddr,
  output [9:0] out_0
);
`ifdef RANDOMIZE_MEM_INIT
  reg [31:0] _RAND_0;
`endif // RANDOMIZE_MEM_INIT
  reg [9:0] ram_0 [0:15];
  wire [9:0] ram_0_ramout_data;
  wire [3:0] ram_0_ramout_addr;
  wire [9:0] ram_0_ramin_data;
  wire [3:0] ram_0_ramin_addr;
  wire  ram_0_ramin_mask;
  wire  ram_0_ramin_en;
  assign ram_0_ramout_addr = raddr;
  assign ram_0_ramout_data = ram_0[ram_0_ramout_addr];
  assign ram_0_ramin_data = in_0;
  assign ram_0_ramin_addr = waddr;
  assign ram_0_ramin_mask = 1'h1;
  assign ram_0_ramin_en = 1'h1;
  assign out_0 = ram_0_ramout_data;
`ifdef RANDOMIZE_GARBAGE_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_INVALID_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_REG_INIT
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_MEM_INIT
`define RANDOMIZE
`endif
`ifndef RANDOM
`define RANDOM $random
`endif
`ifdef RANDOMIZE_MEM_INIT
  integer initvar;
`endif
`ifndef SYNTHESIS
`ifdef FIRRTL_BEFORE_INITIAL
`FIRRTL_BEFORE_INITIAL
`endif
initial begin
  `ifdef RANDOMIZE
    `ifdef INIT_RANDOM
      `INIT_RANDOM
    `endif
    `ifndef VERILATOR
      `ifdef RANDOMIZE_DELAY
        #`RANDOMIZE_DELAY begin end
      `else
        #0.002 begin end
      `endif
    `endif
`ifdef RANDOMIZE_MEM_INIT
  _RAND_0 = {1{`RANDOM}};
  for (initvar = 0; initvar < 16; initvar = initvar+1)
    ram_0[initvar] = _RAND_0[9:0];
`endif // RANDOMIZE_MEM_INIT
  `endif // RANDOMIZE
end // initial
`ifdef FIRRTL_AFTER_INITIAL
`FIRRTL_AFTER_INITIAL
`endif
`endif // SYNTHESIS
  always @(posedge clock) begin
    if(ram_0_ramin_en & ram_0_ramin_mask) begin
      ram_0[ram_0_ramin_addr] <= ram_0_ramin_data;
    end
    `ifndef SYNTHESIS
    `ifdef STOP_COND
      if (`STOP_COND) begin
    `endif
        if (~reset) begin
          $finish;
        end
    `ifdef STOP_COND
      end
    `endif
    `endif // SYNTHESIS
  end
endmodule

In the new generated code, the initializations are moved to the end of the module:
module ZeroWidthMem(
  input        clock,
  input        reset,
  input  [3:0] waddr,
  input  [9:0] in_0,
  input  [3:0] raddr,
  output [9:0] out_0
);
  reg [9:0] ram_0 [0:15];
  wire [9:0] ram_0_ramout_data;
  wire [3:0] ram_0_ramout_addr;
  wire [9:0] ram_0_ramin_data;
  wire [3:0] ram_0_ramin_addr;
  wire  ram_0_ramin_mask;
  wire  ram_0_ramin_en;
  assign ram_0_ramout_addr = raddr;
  assign ram_0_ramout_data = ram_0[ram_0_ramout_addr];
  assign ram_0_ramin_data = in_0;
  assign ram_0_ramin_addr = waddr;
  assign ram_0_ramin_mask = 1'h1;
  assign ram_0_ramin_en = 1'h1;
  assign out_0 = ram_0_ramout_data;
  always @(posedge clock) begin
    if(ram_0_ramin_en & ram_0_ramin_mask) begin
      ram_0[ram_0_ramin_addr] <= ram_0_ramin_data;
    end
    `ifndef SYNTHESIS
    `ifdef STOP_COND
      if (`STOP_COND) begin
    `endif
        if (~reset) begin
          $finish;
        end
    `ifdef STOP_COND
      end
    `endif
    `endif // SYNTHESIS
  end
`ifdef RANDOMIZE_MEM_INIT
  reg [31:0] _RAND_0;
`endif // RANDOMIZE_MEM_INIT
`ifdef RANDOMIZE_GARBAGE_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_INVALID_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_REG_INIT
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_MEM_INIT
`define RANDOMIZE
`endif
`ifndef RANDOM
`define RANDOM $random
`endif
`ifdef RANDOMIZE_MEM_INIT
  integer initvar;
`endif
`ifndef SYNTHESIS
`ifdef FIRRTL_BEFORE_INITIAL
`FIRRTL_BEFORE_INITIAL
`endif
initial begin
  `ifdef RANDOMIZE
    `ifdef INIT_RANDOM
      `INIT_RANDOM
    `endif
    `ifndef VERILATOR
      `ifdef RANDOMIZE_DELAY
        #`RANDOMIZE_DELAY begin end
      `else
        #0.002 begin end
      `endif
    `endif
`ifdef RANDOMIZE_MEM_INIT
  _RAND_0 = {1{`RANDOM}};
  for (initvar = 0; initvar < 16; initvar = initvar+1)
    ram_0[initvar] = _RAND_0[9:0];
`endif // RANDOMIZE_MEM_INIT
  `endif // RANDOMIZE
end // initial
`ifdef FIRRTL_AFTER_INITIAL
`FIRRTL_AFTER_INITIAL
`endif
`endif // SYNTHESIS
endmodule

Desired Merge Strategy

Squash

Release Notes

Reviewer Checklist (only modified by reviewer)

[ ] Did you add the appropriate labels?
[ ] Did you mark the proper milestone (1.2.x, 1.3.0, 1.4.0) ?
[ ] Did you review?
[ ] Did you check whether all relevant Contributor checkboxes have been checked?
[ ] Did you mark as Please Merge?

@jackkoenig sorry, it actually does show up; I must've generated that Verilog before I added the comment. Should I take it out? I added it on @azidar's suggestion.

repo: freechipsproject/firrtl


text:
added this amazing Sign In feature noone requested. Spent 8 hours on this.

Issue #13  🎯🎯

I CodeTorso have worked upon #13

Description
Does not fits with the coursera theme but something needs to be different. Not 100% copy.
It works just as other WebApps. Just make sure you do not press submit before filling form
The data is not lost even if you refresh. All the buttons work
Screenshots 📷
I filled the form and stopped recording at 09 sec. Privacy.
My laptop sucks. Don't worry button works most of the time
https://github.com/freecoursera/freecoursera.github.io/assets/129188028/645fe7ff-5d60-42ba-a369-d87e76a17ebf

only +322 lines −4 lines. It took me 6 hours for that.


text:
Create codemod to migrate colors to css variables

What:
Adds a codemod that migrates usages of the old Colors constant to CSS variables following our new colors structure

Why:
To ease the adoption of Wave 2.0 by automating the colors migration
How:

Add tests for both the existing codemod and the new one

In the testfixtures folders there are x.input.tsx with their respective x.output.tsx (the output file is what the input file should look like after running the codemod on it)
In the _tests I simply define the path and the config to run the codemods tests

Rename existing v2 codemod to more semantic block-to-width-100
Add new colors-to-css-vars codemod
Move /codemods folder to /src so it is included in the build

Checklist:

[x] Update codemods docs
[x] Move /codemods folder to /src to include it in the build
[x] Ready to be merged

Closes #357

Do you think we can put a comment to the code recommending switching to semantic colours via getSemanticValue()?

I think that can be tricky, when using the AST explorer it seems that comments don't always represent nodes in the AST, and when they do, they don't have a value 😕 (see attached). Looking at jscodeshifts API it seems that some nodes have a comments or leadingComment property, so I think it is possible to do, but if it's okay with you I'd prefer to have a comment in the migration guide with the recommendation for now and focus on other issues of the 2.0 milestone, in case we are ready for release and still have more time this can be a nice to have.

repo: freenowtech/wave


text:
Releases Freestyle RPC 0.13.2

This release mainly brings support for AvroWithSchema serialization type. See changelog/release tag for deeper information.

👍

authors: L-Lavigne juanpedromoreno

repo: frees-io/freestyle-rpc


text:
Removed dependency on persistence-api

I removed dependency on javax.persistence.persistence-api in this commit. FREME packages can no longer start with this jar file on the class path.
@ArneBinder you added this dependency. Please check if you need it.

@jnehring I'm really sorry for this, it was an error of my IDE. It could not resolve this dependeny. I deleted my whole local repository, now it works.

no problem ;)

authors: ArneBinder jnehring

repo: freme-project/FREMECommon


text:
[Internationalization] pipeline with nif-version=2.1 fails

This curl
curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -H "Postman-Token: cc799c16-5d39-accf-b81d-1aa4a48fb5c9" -d '[
{
  "method": "POST",
  "endpoint": "https://api-dev.freme-project.eu/current/e-entity/freme-ner/documents",
  "parameters": {
    "language": "en",
    "dataset": "dbpedia",
    "nif-version": "2.1"
  },
  "headers": {
    "content-type": "text/html",
    "accept": "text/turtle"
  },
  "body": "
This summer there is the Zomerbar in Antwerp, one of the most beautiful cities in Belgium.
"
},
{
  "method": "POST",
  "endpoint": "https://api-dev.freme-project.eu/current/e-terminology/tilde",
  "parameters": {
  	"source-lang": "en",
  	"target-lang": "de",
    "nif-version": "2.1"
  },
  "headers": {
    "content-type": "text/turtle",
    "accept": "text/html"
  }
}
]
' "http://api-dev.freme-project.eu/current/pipelining/chain"

fails with error message
{
  "exception": "eu.freme.common.exception.InternalServerErrorException",
  "path": "/pipelining/chain",
  "message": "For input string: \"//freme-project.eu/#offset_38_45\"",
  "error": "Internal Server Error",
  "status": 500,
  "timestamp": 1475653048652
}

It works when I remove nif-version=2.1 from both API calls.

Error log:
ERROR   2016-10-05 11:06:28,805 [http-nio-8089-exec-1] eu.freme.bservices.controllers.pipelines.PipelinesController  - For input string: "//freme-project.eu/#offset_38_45"
java.lang.NumberFormatException: For input string: "//freme-project.eu/#offset_38_45"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:569)
        at java.lang.Integer.valueOf(Integer.java:766)
        at eu.freme.bservices.internationalization.okapi.nif.converter.HTMLBackConverter$TextUnitResource.<init>(HTMLBackConverter.java:450)
        at eu.freme.bservices.internationalization.okapi.nif.converter.HTMLBackConverter.listTextUnitResources(HTMLBackConverter.java:359)
        at eu.freme.bservices.internationalization.okapi.nif.converter.HTMLBackConverter.convertBack(HTMLBackConverter.java:165)
        at eu.freme.bservices.internationalization.okapi.nif.converter.HTMLBackConverter.convertBack(HTMLBackConverter.java:115)
        at eu.freme.bservices.internationalization.okapi.nif.converter.HTMLBackConverter.convertBack(HTMLBackConverter.java:82)
        at eu.freme.bservices.internationalization.api.InternationalizationAPI.convertBack(InternationalizationAPI.java:131)
        at eu.freme.bservices.controllers.pipelines.core.Conversion.convertBack(Conversion.java:62)
        at eu.freme.bservices.controllers.pipelines.core.PipelineService.chain(PipelineService.java:115)
        at eu.freme.bservices.controllers.pipelines.PipelinesController.pipeline(PipelinesController.java:92)
        at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvok

and
ERROR   2016-10-05 11:06:28,807 [http-nio-8089-exec-1] eu.freme.common.exception.ExceptionHandlerService  - Request: http://rv1443.1blu.de:8089/pipelining/chain raised
eu.freme.common.exception.InternalServerErrorException: For input string: "//freme-project.eu/#offset_38_45"
        at eu.freme.bservices.controllers.pipelines.PipelinesController.pipeline(PipelinesController.java:120)
        at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source)

Hi, I tested using these two requests in sequence:
curl -X POST --header "Content-Type: text/html" --header "Accept: text/html"  --header "Cache-Control: no-cache" --data "@input.txt" "http://api-dev.freme-project.eu/current/e-entity/freme-ner/documents?language=en&dataset=dbpedia&mode=spot%2Clink&nif-version=2.1" > output.txt
curl -X POST --header "Content-Type: text/html" --header "Accept: text/html"  --header "Cache-Control: no-cache" --data "@output.txt" "http://api-dev.freme-project.eu/current/e-terminology/tilde?source-lang=en&target-lang=de&nif-version=2.1" > out-output.txt
where input.txt is a file whose content type  is text/html and output.txt is a file with content-type text/html (the output of the first request) and it is sent as input to the second request.
The files are attached below.
I don't have the error. Can you try again now?

The error happens when executing the pipeline. I could not reproduce it using individual curl commands. The pipeline does not convert from html -> turtle -> html in every step. The pipeline converts from html -> turtle in the beginning, then it performs all pipeline steps with turtle and in the end it converts back to html.  So the CURL commands are
curl -X POST --header "Content-Type: text/html" --header "Accept: text/turtle" --header "Cache-Control: no-cache" --data "@input.txt" "http://api-dev.freme-project.eu/current/e-entity/freme-ner/documents?language=en&dataset=dbpedia&mode=spot%2Clink&nif-version=2.1" > output.txt
curl -X POST --header "Content-Type: text/turtle" --header "Accept: text/turtle" --header "Cache-Control: no-cache" --data "@output.txt" "http://api-dev.freme-project.eu/current/e-terminology/tilde?source-lang=en&target-lang=de&nif-version=2.1"
Executing the two API requests one after another, it works. So I think the problem happens when the output HTML is created because we cannot reproduce this behaviour using separate curl requests.

Basing on the Log it is java.lang.NumberFormatException that occurs in HTMLBackConverter.java so in the second step of the pipeline when calling terminology and in particular when getting the begin index of "//freme-project.eu/#offset_38_45".

I debugged locally using this curl:
curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -H "Postman-Token: cc799c16-5d39-accf-b81d-1aa4a48fb5c9" --data "@json.txt" "http://localhost:8080/pipelining/chain"
and with the json.txt attached  in which I use http://localhost:8080/e-terminology/tilde as the endpoint.
I found that tha nif version parameter that arrives to the InternationalizationAPI.java method Reader convertBack(InputStream markupsFile, InputStream enrichedFile, String nifVersion) is null.

json.txt

Thanks for the investigation. This is a tough bug. The pipeline itself has no idea of the nif version. We can only guess the nif version by analyzing the nif content. I chose another solution. I scan all pipeline requests and if one of the requests contains a parameter "nif-version" then I submit this nif version to e-internationalization.
But I do not like this solution. Guessing the nif version from the content might be better. @m1ci  do you know of an implementation that guesses the nif version that we can reuse here?

@m1ci do you know of an implementation that guesses the nif version that we can reuse here?

yes, see
https://api-dev.freme-project.eu/current/e-entity/freme-ner/documents?language=en&dataset=dbpedia&mode=all&outformat=turtle&informat=text&input=Diego Maradona is from Argentina.&nif-version=2.1
In the RDF you can see
<http://freme-project.eu/#collection>
        a               nif:ContextCollection ;
        nif:hasContext  <http://freme-project.eu/#offset_0_33> ;
        <http://purl.org/dc/terms/conformsTo>
                <http://persistence.uni-leipzig.org/nlp2rdf/ontologies/nif-core/2.1> .

which says that the context http://freme-project.eu/#offset_0_33 conforms to NIF 2.1. This should help.
Also, we agreed that default version is 2.0, and by using the nif-version parameter one can set the version to 2.0 or 2.1.

I added source code to guess the nif format. It checks if the version is annotated in the nif document. Further I added this code to the pipelines module. It still does not work although the error message has changed. A debug message says that it detects nif version 2.1 so it hands the right version internationalizationApi.convertBack(). The new version of pipelines is already merged in the master and installed on freme-dev. The problem can be reproduced with above curl request.
The error stack trace is here: stacktrace.txt.

Hi Jan, from the attached log it seems that we have different versions of the source code.

Thank you for investigating on this. I think we should create a parameter nif-version for pipelines so we do not guess the parameter but explicitly set it. Therefore I created #115.

I put the solution here and close #115
We need the nif-version parameter in pipelines as well. It determines the nif version that is submitted to e-Internationalization in the beginning and in the end of the pipeline. The nif-version parameter of individual pipeline requests is not influenced by the nif-version parameter of the pipeline. This will be a parameter similar to visibility or persist which gets his own field in the database. Currently it can values 2.0 and 2.1. This requires changes in

e-Internationalization itself
endpoint POST /pipelining/chain
endpoint POST /pipelining/templates
endpoint PUT /pipelining/templates/{id}
maybe GET /pipelineing/templates/{id}
respective API documentation

For now we will not fix the bug.

Ok.

@jnehring if this will be implemented and the pipeline model is changed, I think it would be really useful to put also useI18n into the pipeline.
But to fix this bug in general, I don't think so many changes are needed. The parameter nif-version has to be added to the endpoints POST /pipelining/chain and POST /pipelining/chain/{id}, they just forward it to PipelineService.chain. In the roundtripping case, this method should default it to 2.0 if necessary, (then eventually put it into every single PipelineRequest and) the methods convertToNif here and convertBack here have to use it. convertToNif needs a minor modification, it just has to forward the parameter to convertToTurtleWithMarkups and convertToTurtle (by analogy to convertBack) which are called with null at the moment.
So the same nif version is used for conversion and back conversion and no guessing is necessary. I dont know, if it should be possible or if it makes sense in any to allow different nif versions within one single pipeline which does roundtripping, so I put it in brackets above.
Do I miss something?

authors: ArneBinder jnehring katia-vistatec m1ci

repo: freme-project/basic-services


text:
Bump frequenz-channels from 0.16 to 1.0.0b2

this is a prerequesite for #556
NB: No changelog entry added, as it seems like it hasen't been done in the past for version changes either (at least I didn't find it)

Sorry for the delay, @llucax . i've rebased and fixed the merge conflict in release notes. :)

repo: frequenz-floss/frequenz-sdk-python


text:
Plugins

Hello, when i have lavalink with plugin https://github.com/DuncteBot/skybot-lavalink-plugin everything works fine but my bot throw exception Failed to load but its loaded correctly.
This is message from exception: Parameter specified as non-null is null: method me.xhyrom.mumblum.commands.Play$execute$1.trackLoaded, parameter track
also happens with https://github.com/TopiSenpai/LavaSrc

this must be issue with this client because my friend uses https://npmjs.org/erela.js with JS and it works fine

This client is a bit special as it integrates with lavaplayer
Basically you need the same source managers in the client as on the lavalink server
#57 adds support for adding those sources to the client

can you help me with this PR?

You are using JDA 4 https://github.com/freyacodes/Lavalink-Client/blob/configurable-decoding/build.gradle#L51 but my bot uses JDA 5 :/

i make fork and now everything works

I'm not sure on how the status is on both of those prs
I'm gonna mark this as solved for now

authors: TopiSenpai xHyroM

repo: freyacodes/Lavalink-Client


text:
JDA-NAS Toggle

Makes JDA-NAS togglable.
With in server property jdanas false or true. Depends on #489, also optional. And can be added without that PR. Set to true to mimic default behavior.
Not sure if there's any other place to document this change.

Why would someone want to disable UDP-Queue?
Note that JDA-NAS is no longer used.

On a further thought, there may not be much point to disabling it if we control what natives get loaded. Probably would have made more sense if it was no check for this PR but even then probably shouldn't be left to user to decide. Unless otherwise I will close this in a few.

authors: Stonedestroyer freyacodes

repo: freyacodes/Lavalink


text:
Don't try to infer fields if the file is not a CSV

CKAN resources are not restricted by file type so users can upload any file. I think the editor tries to read the contents on any type of file and fails. We should restrict it at the ckan level to just the formats supported (@roll not sure if the editor supports excel as well as csv?)

Fixed in #25 (with tableschema-ui@0.1.17)

authors: amercader roll

repo: frictionlessdata/ckanext-validation


text:
Support datapackage-identifier spec and load data packages from all those identifiers

At the moment require explicit path to datapackage.json.
We should support all identifiers in http://dataprotocols.org/data-package-identifier/ and support loading this way e.g.
dp = DataPackage('.')
dp = DataPackage('./my-data-package')
dp = DataPackage('https://github.com/datasts/gdp')

We also need to store this info internally so we can compute path offsets for resources etc - see #75

👍

Based on the latest direction of the development of the spec - https://github.com/frictionlessdata/specs/issues/688 - we're closing it for now, as Data Package Identifier might be deprecated (URL as the only standard location pointer instead of Datahub/Github/etc dependencies)

authors: pwalsh roll rufuspollock

repo: frictionlessdata/datapackage-py


text:
Use "elifarley/cross-installer" to have less code inside the Dockerfile

I don't really like adding a lot of shell code inside a Dockerfile (it feels awkward).
So I've created this PR to show how a slimmed down Dockerfile would look like while achieving the same end result.
The original shell script has been copied to a shell library at https://github.com/elifarley/cross-installer/blob/master/plugins/glibc.sh
The command xinstall install glibc here invokes the glibc plugin.
Do you think it sounds good?
Thanks a lot for creating the original Dockerfile (which I've been using a lot).

This change is

Hmm, thanks for your contribution. However, I feel much more confused looking at your Dockerfile than just a well-known sh syntax. I don't see any benefit in using external unknown shell scripts, which are left over in the final image (even if you remove them with rm, they will remain in previous layers and will just take space).
I tried to find out WHY would I use this approach, but I failed:

your image has 6 layers instead of 2
your image is 1.4MB heavier (12.8MB vs 11.4MB)
your Dockerfile contains a lot of boilerplate code and zero control over installation (this means that I will have to maintain actual installation in another place)

Indeed, the point is to have control over installation OUTSIDE the Dockerfile.
In other words, I'd rather have a small, mostly-immutable Dockerfile that can be used to create any image I need (be it an image with Alpine and glibc, or an image with Debian and Cassandra), shifting the responsibility of installing whatever I need from the Dockerfile to a shell library capable of installing things irrespective of the Linux flavor I'm using and with zero dependency on Docker itself.
In my particular use case, this is desirable, but as you have stated, it isn't desirable for the use case here.
Thanks anyway for your time :)

ADD includes unnecessary layers. That's a point.
But why create 3 docker repositories, with a need for release maintainance, if we can create 1 line wget bundle execution pointing the enterprise local repository, using an ARG.
Yes, Docker is about layering... but we are seeing a good chance to reduce complexity and size in one shot. This can be an awesome alternative in many applications.
We can create a pattern here: install in a manner assets can be easily removed after the process, using a more readable shell code and promote an image with less than 10 MB as Dockerfile and infinite possibilities.
Not a mainstream stuff, sure! But what about a branch, tag or "alpine-swisstool"?
I really liked it.
I build my Ubuntu in a similar way

docker-alpine-swisstools
:smile:

@frol , thanks for pointing out those deficiencies. I've now updated my Dockerfile to have the same number of layers as yours, and my image now doesn't have any left-over shell scripts, and somehow is 512 bytes lighter than frolvlad/alpine-glibc...
(It's just a FYI, I don't want to reopen this PR, since another problem still exists)
docker pull  elifarley/docker-alpine-glibc ; docker pull frolvlad/alpine-glibc

docker save  elifarley/docker-alpine-glibc  | wc -c
11785728

docker save frolvlad/alpine-glibc | wc -c
11786240

python -c "print $(docker save  elifarley/docker-alpine-glibc  | wc -c) - $(docker save frolvlad/alpine-glibc | wc -c)"
-512

docker history -H elifarley/docker-alpine-glibc
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
137ad6319757        4 minutes ago       /bin/sh -c apk --no-cache add ca-certificates   6.641 MB
<missing>           4 minutes ago       /bin/sh -c #(nop) ENV BASE_IMAGE=alpine:3.4 L   0 B
<missing>           13 days ago         /bin/sh -c #(nop) ADD file:701fd33a2f463fd4bd   4.799 MB

docker history -H frolvlad/alpine-glibc
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
5b23faaea6e6        3 days ago          /bin/sh -c #(nop) ENV LANG=C.UTF-8              0 B
<missing>           3 days ago          /bin/sh -c ALPINE_GLIBC_BASE_URL="https://git   6.641 MB
<missing>           13 days ago         /bin/sh -c #(nop) ADD file:701fd33a2f463fd4bd   4.799 MB

authors: elifarley frol leodutra

repo: frol/docker-alpine-glibc


text:
Update to stack-cors 2.0

Less strict origin-checks (leaves it to the browser) and better cacheability.

@GrahamCampbell as stated in the stack-cors, this technically wouldn't BC, only if people mis-use the protection. Do you think it warrants a 2.0 or a minor bump would be okay for Laravel?

Going to 2.0 would be the safest thing to do. We can change the default laravel/laravel app stub to just use ^2.0. Changes to the default app are not part of the BC promise of Laravel, since it just affects new apps.

authors: GrahamCampbell barryvdh

repo: fruitcake/laravel-cors


text:
fieldhandle.type returns a long string

I'm trying to show a different icon depending on whether the user has selected "URL" or "Asset" for the linkit type. If I call {{ entry.fieldhandle.type }} in the template, I'd expect to get url or asset, but I'm getting this:
fruitstudios\linkit\models\Url
fruitstudios\linkit\models\Asset

@darylknight looks like you are on the Craft 3 version? Can we move this over to the Craft 3 Github page: https://github.com/fruitstudios/craft-linkit

Got it, sorry!

authors: darylknight samhibberd

repo: fruitstudios/linkit


text:
[#FLAT-460] Change twitter share text

https://sourceclear.atlassian.net/browse/FLAT-460

:ok:

authors: ArthurZaharov RamilGilmanov

repo: fs/security-headers


text:
Alteração em lucioweb.php

Solicitação de request com as alteraçãoes de lucioweb.php.

Solicitação de pull request.


text:
PSeq.exists2 occasionally is incorrect

The following will occasionally return false:
open System
open System.Linq
open System.Threading

type pseq<'T> = ParallelQuery<'T>

let inline toP (s : seq<'T>) =
    match s with
    | null -> nullArg "s"
    | :? pseq<'T> as p ->  p
    | _ -> s.AsParallel()

let exists2 (f : 'T -> 'U -> bool) s1 s2 =
    ParallelEnumerable.Any(ParallelEnumerable.Zip(toP(s1), toP(s2),Func<_,_,_>(f)), Func<_,_>(id))

let funcInt x y = (x+y)%3=0
let Intexists2Seq1 =  seq [1;3;7]
let Intexists2Seq2 = seq [1;6;3]

exists2 funcInt Intexists2Seq1 Intexists2Seq2

Fixed by https://github.com/fsprojects/FSharp.Collections.ParallelSeq/pull/6

I should have made a note.  There was a problem with the fix, so I rolled it back.

Ah ok, thanks!

@forki @pblasucci Maybe one of you can help me with this.  I tracked down the cause of the issue (finally had a couple free days).  The reason exists2 occasionally returns false is that IEnumerable.AsParallel will wrap an enumerable as a parallel enumerable which assumes the elements of the enumerable is unordered.   See here for details.
Assuming we want pseq to have the same semantics as ParallelEnumerable, I think this means that the test is incorrect.  In order for PSeq to work the same as ParallelEnumerale we'll need to add a couple methods something like this:
let asOrdered = toP >> ParallelEnumerable.AsOrdered
let asUnordered = toP >> ParallelEnumerable.AsUnordered

and then change the test from this  to something like this (this isn't the only test which will need to be updated):
// string Seq
let resultStr = PSeq.zip (seq ["str3";"str4"] |> PSeq.asOrdered) (seq ["str1";"str2"] |> PSeq.asOrdered)
let expectedStr = seq ["str3","str1";"str4","str2"]
VerifyPSeqsEqual expectedStr resultStr

Additionally, I will add some notes in the examples and documentation so the semantics are more obvious.
If that is amenable to everyone, I will write something up and create a PR for review.

@mydogisbox Yes, this makes sense.

I've updated the integer case of this test as well

authors: dsyme mydogisbox


text:
TypeScript bindings

To integrate Fable-generated code with an ES2015 project is a breeze. Plain simple. It just works.
However, the same cannot be said for TypeScript projects.

"Typings... Typings everywhere!"
-- The Rime of the Ancient TypeScripter

fable-core requires a .d.ts file. Has anyone already made one? (I can work on it)

The same for every .js file created by Fable. Could the compiler generate it automatically for us? How hard it will be?

Hmm, I don't think anybody has started a .d.ts for fable-core (definitely not me 😉) Actually at the beginning I was thinking to release fable-core also as a JS library (that's why List methods are both instance and static) but I don't think it's feasible now because a) besides List, most methods are static which is not idiomatic in JS (e.g., Observable module vs RxJS) and b) there're many holes in fable-core: methods that are missing because they're inlined in the Replacements module. Do you want to use the .d.ts to call fable-core from TypeScript? Are you doing it now from JS?

Some people already requested automatic d.ts generation from F# files and I've thought about it a couple of times, but haven't started any work on it yet. I guess it shouldn't be too difficult though, at least much easier than going the opposite direction from TypeScript (and all its weird type definitions) to F#. Only a bit of care must be taken for naming as I recently allowed root members with non-valid JS identifiers.

Do you want to use the .d.ts to call fable-core from TypeScript?

Exactly.

Are you doing it now from JS?

Yes. I need it in some cases when integrating existing JS code with Fable-generated code (e.g. to create a List and pass it as an argument to a F#-translated function).
In an ES2015 project this is very straightforward. A simple import * from 'fable-core/es2015' and we're done.
But for a TypeScript project this also requires a .d.ts file. Without one the compiler doesn't recognize the imported file as a module at all.
For now I did some dummy declarations only for the types I need, e.g.:
// es2015.d.ts
export var Array: any;
export var List: any;

just to keep the compiler happy.
I will be playing a bit more with it. Let's see what happens :)

I thought the TypeScript was able to read an ES2015 module even without the type definitions, it seems I was wrong :wink:
I wrote a very simple script to read the (static) members of fable-core modules for a double check in the Replacements module, maybe something similar could be used to generate the d.ts.
Another solution is, like import/core/es2015.js is used now as the basis to generate the versions with other module systems, we could use a .ts file instead with the type definitions for each function that can be read from TypeScript. What do you think?

I thought the TypeScript was able to read an ES2015 module even without the type definitions

Me too! Until you use it and start to see dozens of "cannot find module ..." :sweat_smile:

maybe something similar could be used to generate the d.ts.

It will solve only part of the problem. Any automated solution based on a .js file could at most generate a "skeleton" file. It will yet require some human intervention to add the types. E.g., in the line
export var List = function List(head, tail)
We have no (automated) means to know about the expected type of head and tails arguments for this function. Nor about its return value.

we could use a .ts file instead with the type definitions for each function

Hm... Yes! This would indeed be better. Using a .ts file carries "more expressiveness" than the current .js (ES2015) one. It would also improve fable-core documentation in some way.
HOWEVER... it will make the build system more complex (it will require TypeScript to build Fable) and also the maintenance of fable-core. Any modification in fable-core would require a TypeScript connoisseur to make the change.
Sincerely: unless you are very comfortable with TypeScript I would recommend against this and just keep a separate .d.ts file for now. It is a fantastic language, but it can give you wrinkles sometimes... :smile:

Not a very good practice but the current CoreLib build target already requires Babel to be installed globally so I guess replacing babel with tsc wouldn't complicate things that much.
I haven't worked that much with TypeScript but I'm comfortable with the language and given the fact that advanced F# users (that is, potential Fable contributors) usually know well Microsoft technologies, probably they can handle TypeScript. Also, maintaining a different .d.ts has its own complications: you still need to know TypeScript anyways and you must be careful to keep it in sync with the JS code.
In conclusion, I'd be in favour of writing fable-core in Typescript (shouldn't be much harder than adding the type annotations to the function arguments) but unfortunately I don't have time for that at the moment. If you can start working on that and send a PR it'll be fantastic!

If you can start working on that and send a PR it'll be fantastic!

Already working on it ;)

Please see #236. I did a small declaration (for List functions only) just to assess the work needed.
The declarations are far from the ideal. They can be much more strict (using generics, less "any" types, etc). I made them quickly, just to make it work.
I will work now in the changes needed to compile es2015.js using TypeScript instead of Babel. Then we can compare both options (keeping a .d.ts separately vs build it entirely from TypeScript).

I panic whenever two files must be kept in sync without anything that forces that in the build process 😉  so I'd still be in favour of writing fable-core directly in TypeScript.
About generating .d.ts automatically, maybe we can use this Babel plugin. I just had a quick look so I'm not sure if it's usable for us, but in any case it cannot be used at the moment as Fable doesn't output type annotations. We can do that but we'll have to modify the Fable AST as it's very loosely typed and much of the type information is lost at the moment when passing from F# to Fable.

I surely understand ;)
I'm working on a "mini-fable-core.ts" right now. I believe I can push a first version soon. Then we can discuss the possible options (classes, interfaces, namespaces, etc.)

Initial proof-of-concept to port es2015.js to TypeScript ready.
It is far from complete. List and (partial) Seq classes only.
To build: From project root folder, run:
tsc src/fable/Fable.Core/es2015-mini.ts --target ES2015 --outDir src/fable/Fable.Core --declaration
This will create
src/fable/Fable.Core/es2015-mini.js
src/fable/Fable.Core/es2015-mini.d.ts

Please, compare the generated es2015-mini.js file with the current es2015.js and tell me what you think (any problems? Something strange? Anything that could cause problems later?).
BTW: I spent the last hour trying to compile the generated .js file with Babel (to make it more similar to the current es2015.js) and... I failed miserably :smile: -- So... I'll let this to the pros. Currently, my experience with Babel transformations is a very round number nearing to zero. ;)
Also: please note that the TSC compiler target must be ES2015. Any other target and the compiler will not recognize iterators and generators. This will hopefully change in TypeScript 2.0. But, for now, we will probably need Babel if the output of TSC isn't enough.
If no problems arise, I can proceed to the conversion of the remaining es2015.js file. It will probably take several days but it surely can be done.

When compiling with Babel you need to pass the plugins you want to use, and they can be a lot to convert from ES2015 to ES5 for example (that's why they usually use presets). In the FableCore build target only modules are transformed: note there're actually no other ES2015 features in es2015.js.
Oh my, TypeScript cannot compile generators to ES5? Come'n Microsoft! Anyways, as said above, iterators are created with no ES2015 syntax in es2015.js so if you just copy the code as is it should work.
It'd be nice if you try to keep as many lines as common between es2015.js and the typescript code (basically the body of the functions). This way we can compare the files and be sure there've been no typos, etc.

Yeah! I'm aware of Babel plugins and presets. But I couldn't find a combination to output the .js like the current one (i tried with the "ES2015" preset and also with some combinations of plugins -- like the ones used in Fable source). It was probably due the sleep deprivation :smile: I will try again, later.

It'd be nice if you try to keep as many lines as common between es2015.js and the typescript code (basically the body of the functions).

Agreed! I started this way. However, after several revisions of the code I did choose to make some minor "syntatic" changes (like changing function delegates to lambdas, to use const/let instead of var, etc). All changes which should not affect the output after being transpiled to ES5.
My idea is to write the source in the most TypeScript-way, to enjoy the benefits of the language, but which -- after the transpile -- can get to something very similar to the current fable-core.js (ideally, the same). That's what I failed to got with Babel (but, as I said, I will try again).

Found it!
The problem wasn't the combination of Babel plugins but its options.
The loose option in transform-es2015-classes plugin is exactly what I was looking for!
TypeScript code:
export class Seq<T> {
  static fold<T, ST>(f: (previousValue: ST, currentValue: T, currentIndex?: number) => ST, acc: ST, xs: Iterable<T>): ST {
    if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {
      return (xs as Array<T>).reduce(f, acc);
    } else {
      let cur: IteratorResult<T> = null;
      for (let i = 0, iter = xs[Symbol.iterator](); ; i++) {
        cur = iter.next();
        if (cur.done) {
          break;
        }
        acc = f(acc, cur.value, i);
      }
      return acc;
    }
  }

  static foldBack<T, ST>(f: (currentValue: T, previousValue: ST, currentIndex?: number) => ST, xs: Iterable<T>, acc: ST): ST {
    const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs as Array<T> : Array.from(xs);
    for (let i = arr.length - 1; i >= 0; i--) {
      acc = f(arr[i], acc, i);
    }
    return acc;
  }
}

TSC |> Babel --preset ES2015 with ["transform-es2015-classes", { "loose": true }]:
var Seq = exports.Seq = function () {
    function Seq() {
        _classCallCheck(this, Seq);
    }

    Seq.fold = function fold(f, acc, xs) {
        if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {
            return xs.reduce(f, acc);
        } else {
            var cur = null;
            for (var i = 0, iter = xs[Symbol.iterator]();; i++) {
                cur = iter.next();
                if (cur.done) {
                    break;
                }
                acc = f(acc, cur.value, i);
            }
            return acc;
        }
    };

    Seq.foldBack = function foldBack(f, xs, acc) {
        var arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);
        for (var i = arr.length - 1; i >= 0; i--) {
            acc = f(arr[i], acc, i);
        }
        return acc;
    };

    return Seq;
}();

Current fable-core.js:
  var Seq = exports.Seq = {};
  // ...
  Seq.fold = function (f, acc, xs) {
    if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {
      return xs.reduce(f, acc);
    } else {
      for (var i = 0, cur = null, iter = xs[Symbol.iterator]();; i++) {
        cur = iter.next();
        if (cur.done) {
          break;
        }
        acc = f(acc, cur.value, i);
      }
      return acc;
    }
  };
  Seq.foldBack = function (f, xs, acc) {
    var ar = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);
    for (var i = ar.length - 1; i >= 0; i--) {
      acc = f(ar[i], acc, i);
    }
    return acc;
  };
  // ...

Now THAT'S what I'm talking about. :wink:
As you can see, even making heavy use of TypeScript features (classes, generic types, etc) we can yet produce the same output which ES2015.js |> Babel does today to generate fable-core.js.
I will push some more changes soon, including this process in the build script. Then we can better assess the results.

Nice! Now I remember there was something about that in Babel Discuss 😅

Updated #240
build FableCore now compiles TypeScript sources. You can compare the output (fable-core.tsc.js, yet very incomplete) with the official fable-core.js.
Important: you'll need to run npm install babel-preset-es2015 from src/fable/Fable.Core folder. I had to put a .babelrc into this folder since I can't find a way to pass plugin options via Babel CLI.
This is temporary and will be fixed in the future.
I will add some more classes into fable-core.tsc.ts soon to get a better picture of the change. For now, it seems very promising. I hope we don't hit a bump :sweat_smile:

BTW: I fixed a minor glitch when running build FableCore on Windows. You may wish to cherry-pick just this one https://github.com/fsprojects/Fable/pull/240/commits/0e2c1fc7e6dd6e4e90b8cac7196f379662c0a232 into master. :v:

Tomas also found this problem and sent a PR ;) I'm on Windows now too and I'm trying to fix things again to be easily open Fable on VS but I've found a problem that I'm trying to fix.
About passing Babel plugins via CLI, it's possible but they're always resolved locally. My dirty fix for that was to pass the plugins installed in build/fable.

Hahahah. No. Forget about it. @tpetricek won the race with  #241 :joy:

About passing Babel plugins via CLI, it's possible

Sure! However, the problem isn't the PLUGIN but its OPTIONS :wink:. Please see:
{
  "presets": [
    "es2015"
  ],
  "plugins": [
    "transform-es2015-modules-umd",
    [
      "transform-es2015-classes",
      {
        "loose": true
      }
    ]
  ]
}

I tried to keep everything like you did, but I couldn't find a way to pass that "loose": true via Babel cli. :cry:

Two PR for the same problem in the same day and now two comments about it at the almost same time. Must be some record. :sweat_smile:

Latest changes merged in #240
Everything like before. Same instructions apply. Just replace src/fable/Fable.Core with src/fable/Fable.Core/npm where applicable :)

Added some more types in #240. This time choosing to keep the generated fable-core.tsc.ts as similar as possible to fable-core.js (mostly "copy & paste" work) instead of trying to use Typescript capabilities to their fullest extent.

Thanks! I'll have a look later... I think I need to take a rest from Fable this weekend ;) Sorry for so many changes in the build process, I'm trying to find the best structure so it's easier for other people to contribute. Hopefully it should be fine now :+1:

New push in #240.
Full implementation of fable-core.js in TypeScript ready! Build now generates fable-core.js from TypeScript sources instead es2015.js.
(the original code, built from es2015.js, is compiled into fable-core.babel.js for comparisons)
Problem: The tests are failing with an weird error ("TypeError: Cannot assign to read only property 'length' of function Seq()") albeit the body of Seq.length function is the same from the original code. It seems like a scope problem. I'll come back to it tomorrow. Just pushing it to report.
Have a great weekend!

Latest update in #240 -- All tests passing now! :tada:
About the length problem: A static 'length' method causes problems in JavaScript. In the current version TypeScript compiles the code but it fails in runtime. In the future the compiler will probably give a compile-time error. So I changed the method name to _length and put a replacement to it in Fable compiler.
I also did some minor improvements in some tests to catch a few quirks I was getting.
From this one I believe it would be possible to start using TypeScript sources to generate the official fable-core.js. There is yet a ton of things to improve in the sources (since the focus until now was to keep the output the most similar possible to the current es2015.js output). But I will wait for your approval before to start them.
If you choose to merge this, please consider the following:

The build script is building both versions: TypeScript and ES2015.

The latter should be removed in the final merge.

I would recommend to rename fable-core.tsc.ts to fable-core.ts.
The TypeScript output requires a Babel transformation which currently uses a .babelrc file in src/fable/Fable.Core/npm and needs a npm install babel-preset-es2015 in this same folder. All of this, of course, very far from ideal. It will require some restructuring here.

Alternatively: this can be entirely removed if we give up on the use of loose option in transform-es2015-classes. This way we could just go back to passing babel arguments via command line and use node_modules from /build/fable folder.

Fantastic work! I'll check it more carefully but it's looking good so far :+1:
Though, to be honest, I feel a bit uneasy if you had to tweak the tests to make them pass, as this can reveal fails in the compilation process. What were exactly the quirks you were getting?
Also, about length, that's unfortunate, but since the underscore is usually used for intended private members in JS, I would change the name to something like count, what do you think?

I feel a bit uneasy if you had to tweak the tests to make them pass,

Don't worry :wink:. I just expanded them in some cases (like in .collect tests) or added more checks to pinpoint what are going wrong in my version (like in TimeSpan constructors).
These changes were made only to help me to find problems in my port. Not to compromise the tests :sweat_smile:.  You can test them against master just by cherrypicking https://github.com/fsprojects/Fable/pull/240/commits/db0a0e5a1069ca42814b5f9809efaf7fc595e032

Also, about length, (...) I would change the name to something like count,

Perfect! :+1:

On a second though, we should not remove the es2015.js version.
Doing this would be in detriment of anyone who wants to integrate existing ES2015 code with Fable (like, for example, myself :smile:).
I propose we keep the files as follow:

fable-core.ts (source)

es2015.js (Created from fable-core.ts |> tsc --target ES2015)

fable-core.js (Created from es2015.js |> babel --plugins ...umd)

fable-core.min.js (Created from fable-core.js |> uglifyjs)

commonjs.js (Created from es2015.js |> babel --plugins ...commonjs)

Hmmm, still I'd prefer if you add to the tests but don't replace anything. This is because so far I had many surprises of apparently trivial changes in the tests that revealed subtle problems with the compilation. I'll add some comments to you PR but in general I sleep better if I don't see red in the tests, only green... both for the results and the git diffs :wink:

I sleep better if I don't see red in the tests, only green... both for the results and the git diffs

Hahaha... Got it! :smile:
You are absolutely right. I did remove the code under the assumption my new code would cover the old one. I'm fixing this right now.

Thanks! About the file structure, I agree with that :+1:
Only thing is: at what point are ES2015 features (besides modules) transformed? When converting from fable-core.ts to es2015.js or from es2015.js to fable-core.js. I ask this because the purpose of es2015.js was originally to be used with Webpack 2 for tree shaking but still being compatible with environments not compliant with ES2015 syntax.

or from es2015.js to fable-core.js.

This one.
TypeScript are being told to target ES2015. In this target, as a rule of thumb you can think of it more a "types enforcer" than a "coding generator".
The "heavier" transformations (from ES2015 to ES5) are made by Babel plugins.

Closing the issue as the PR is already merged. Please feel free to send additional PRs to improve the definitions.
Thanks a lot for your contribution!

authors: alfonsogarciacaro fdcastel

repo: fsprojects/Fable