Regression in TaxBrain file upload logic

The following message was received from TaxBrain when uploading reform and assumption files that have been successfully uploaded for many months (see the history of the tax-calculator/file-upload-tests/README.md file).  First the error and then the uploaded files.

The uploaded files are r1.json and a0.json in the tax-calculator/file-upload-tests directory.  The above error is generated even though the START YEAR parameter on the TaxBrain file-upload page is set to 2013, which means I was asking for results for the ten years from 2013 through 2022.
It would seem the problem is with TaxBrain because using the taxcalc 0.9.0 package on my local computer runs just fine:
iMac2:file-upload-tests mrh$ conda list taxcalc
# packages in environment at /Users/mrh/anaconda:
#
taxcalc                   0.9.0                    py27_0    local

iMac2:file-upload-tests mrh$ tc puf.csv 2022 --reform r1.json --assump a0.json
You loaded data for 2009.
Tax-Calculator startup automatically extrapolated your data to 2022.

iMac2:file-upload-tests mrh$ ls -l puf-22-r1-a0.csv
-rw-r--r--  1 mrh  staff  8802722 Jul  2 17:24 puf-22-r1-a0.csv
iMac2:file-upload-tests mrh$

And the full set of local tests runs just fine:
iMac2:file-upload-tests mrh$ ./cli-results.sh
STARTING WITH CLI-RESULTS : Sun Jul  2 17:08:08 EDT 2017
outfile,inctax,paytax= puf-22-r1-a0.csv 1823.04  1466.41
outfile,inctax,paytax= puf-22-r1-a1.csv 1775.99  1439.72
outfile,inctax,paytax= puf-22-r1-a2.csv 1800.40  1454.31
FINISHED WITH CLI-RESULTS : Sun Jul  2 17:09:22 EDT 2017

@MattHJensen @PeterDSteinberg @brittainhard @jbcrail

@martinholmer will take a look at this sometime today.

@brittainhard said:

will take a look at this [#578] sometime today.

Thanks.  Now that we have main channel version of taxcalc 0.9.0 package, I can confirm that using that package on my computer produces results without error.

@martinholmer looking at this, the source is definitely taxcalc and not webapp.
The main things I have noticed are this:

The error shows up regardless of what year you select for the file upload.
Webapp uses run_nth_year_taxcalc_model and thendropq_calculate. It does not use TaxCalcIO or the CLI. What would be causing the discrepancy, I don't know.
In growfactors.csv, the max year is indeed 2026.
dropq_calculate uses default arguments for Growfactors, and so is using this file.

Based on this, I think the place to look is in dropq_calculate in dropq_utils.py, and not in webapp. Let me know if you disagree.

@brittainhard said:

Looking at this [TaxBrain issue #578], the source [of the TaxBrain crash] is definitely taxcalc and not webapp.

If that's the case, I'll be happy to fix Tax-Calculator.  But I need from you a bug report that shows the error being generated by Tax-Calculator (not TaxBrain) code.  I suggest the best way to do this is for you to create a Tax-Calculator pull request that adds a new test to the test_dropq file, and show that this new test fails for the same reason as TaxBrain failed in issue #578.
@MattHJensen @PeterDSteinberg

@brittainhard,  Just to make my view about the #578 bug clear:  I think the four things you noticed do not provide any information about the location (taxcalc vs webapp) of the fatal TaxBrain error reported in issue #578.   I do agree with you that the error could be coming from taxcalc, or it might be coming from webapp code, I don't know.  Our problem is we don't know where to look for the coding problem.  My suggestion (to create a new test in test_dropq.py that generates the same error as generated by TaxBrain) is meant to find out whether or not your hunch about the location of the code is correct.  You should be able to create such a failing test easily if your hunch is correct.  If you can't create such a failing test, then it seems to me that would point to the webapp code as the location of the bug.

@martinholmer i'll set up a PR for that test.

@brittainhard said six days ago in #578:

I'll set up a [Tax-Calculator] PR for that test [that shows a bug in dropq].

I have the time to fix that bug now before the next release.  Can you submit a test that produces the error observed on TaxBrain?
The dropq code has complete (100%) code coverage, but it may be that the tests are not strong enough to detect the bug you believe is in the dropq code.

@martinholmer My schedule is very tight right now. Currently preparing for the presentation tomorrow. I will get to it asap. Can you try to replicate this bug on your end?

@brittainhard, why don't you work on the replication w tax-calculator locally (not via webapp) after the presentation is over with. Could be valuable experience working w tax-calculator/dropq. Also, if Martin looks into this, he could also end up on a wild goose chase if the bug is actually in webapp-public.

@MattHJensen sounds good.

I tried to upload the Clinton2016.json reform file and received the following error:

@hdoupe My first thought is to double check you have the latest reform file format.  There are changes periodically and I have in the past thought I found a bug, but then realized I was using an out-of-date version of the reforms despite appearing to be what I wanted.  Please disregard if you're sure you're on the right version.
@MattHJensen - it would be good to put standard upload tests like Clinton/Trump tax plans in this Tax-Calculator folder or elsewhere standardized if that has not been done already.  Developers affecting the reform file format should be aware they need to update the example reforms we commonly use.

@hdoupe said on July 19, 2017:

I tried to upload the Clinton2016.json reform file and received the following error:
500 Internal Server Error!

That's interesting because this would seem to be yet another regression in TaxBrain.
When I tried what you just did 17 days ago, the upload of just a reform file worked fine.
What didn't work then was uploading both a reform and an assumption file.
So, even though TaxBrain is still marked as the same version as it was then (0.9.0), it would seem as if somebody has "updated" TaxBrain without testing it.  So, now we have an even more broken version of TaxBrain being presented to the public.
@MattHJensen @PeterDSteinberg @brittainhard

@martinholmer @hdoupe Please post the contents of the reform files in question.  Is the reform file system also broken for the Trump reform commonly used?  If so, please post broken and working Trump/Clinton reform files or email them to the three Continuum staff.  It's hard to follow up when there are changing versions in question, changing reforms specs, and potentially out-of-date files being tested against new code.

// Title: Select Provisions from the Clinton Tax Plan
// Reform_File_Author: Cody Kallen
// Reform Reference: https://www.hillaryclinton.com/briefing/factsheets/2016/01/12/investing-in-america-by-restoring-basic-fairness-to-our-tax-code/
// Reform Description:
// -  4% surcharge on AGI above $5 million ($2.5 million for married filing separately) (1)
// -  Establishment of the "Fair Share Tax" at a 30% rate (aka the Buffett rule) (2)
// -  Limit the tax value of itemized deductions to 28% (3)
// -  Expansion of the Child Tax Credit and Additional CHild Tax Credit for children under 5 (4)
// -  Including more business income in the base for the Net Investment Income Tax (5)
// Reform_Parameter_Map:
// -  1: _AGI_surtax*
// -  2: _FST_AGI_trt
// -  3: _ID_BenefitCap*
// -  4: CTC_c_under5_bonus, ACTC_rt_bonus_under5family
// -  5: NIIT_PT_taxed
{
"policy": {
"_AGI_surtax_trt":
{"2017": [0.04]},
"_AGI_surtax_thd":
{"2017": [[5.0e6, 5.0e6, 2.5e6, 5.0e6, 5.0e6]]},
"_FST_AGI_trt":
{"2017": [0.3]},
"_ID_BenefitCap_Switch":
{"2017": [[true, true, true, true, true, true, false]]},
"_ID_BenefitCap_rt":
{"2017": [0.28]},
"_CTC_c_under5_bonus":
{"2017": [1000]},
"_ACTC_rt_bonus_under5family":
{"2017": [0.3]},
"_NIIT_PT_taxed":
{"2017": [true]}
}
}
// Note: Due to lack of detail, data, or modeling capability, many provisions cannot be scored.
// These omitted provisions include:
// -  New structure on capital gains taxes:
//    -  39.6% if held less than 2 years
//    -  36% if held 2-3 years
//    -  32% if held 3-4 years
//    -  28% if held 4-5 years
//    -  24% if held 5-6 years
//    -  20% if held 6 years or longer
// -  Limit contributions to tax-deferred and tax-free retirement accounts
// -  Limit tax benefits of like-kind exchanges
// -  Reduce estate tax exemption to $3.5 million ($7 million for couples)
// -  Progressive estate tax rates, with top rate of 65 percent
// -  Tax unrealized gains at death for high-income taxpayers
// -  Tax carried interest at ordinary tax rates
// -  A 20% credit for caregiver expenses
// -  Up to $5000 in tax relief for excessive health care costs
// -  Financial risk fee on large banks
// -  Tax on high-frequency trading
// -  Expand small business expensing (Section 179)
// -  Expand cash expensing for small businesses
// -  Expand start-up deduction, create a small business deduction
// -  Expand ACA credit for small businesses
// -  Create business tax credits for profit-sharing and apprenticeships
// -  Repeal the Cadillac Tax on high-cost health plans
// -  New rules to prevent corporate inversions
// -  Limit net interest deduction to share in consolidated financial statements
// -  "Exit tax" on US multinationals that become foreign residents

This is the Clinton2016.json refrom file as found in the Tax-Calculator repo

@PeterDSteinberg,  All the reform files that are under discussion in TaxBrain issue #578 are in one of two directories in the Tax-Calculator repo:
tax-calculator/file-upload-tests

and
tax-calculator/taxcalc/reforms

None of these reform files has changed over the course of the past several months.  The only thing that has changed is TaxBrain's (in)ability to handle them.

@martinholmer @hdoupe @PeterDSteinberg the app hasn't been rebuilt in a while. I think I found the thing that was causing that 500 error. Going to do a push to the test app with the Clinton reform file.

@hdoupe try putting that file in on the test app, I got it to work by doing a push to the test app: http://ospc-taxes7.herokuapp.com/taxbrain/1355/
Going to update the main app. Can you send me a link of that failed file upload with the 500 error?

@brittainhard I just tried it on the test app and got the following error
ospc-taxes7.herokuapp.com/taxbrain/file/?start_year=2017

Here's the link that is showing above the error page. It will just take you back to the file upload page so I don't think it will help too much.
https://www.ospc.org/taxbrain/file/?start_year=2017

@brittainhard  That was produced by doing the quick calculate option.  I'm trying theshow me the results option now.

@brittainhard The additional_data keyword is supplied in line 262 of file_input function in views.py:
 submitted_ids, max_q_length = dropq_compute.submit_dropq_small_calculation(
     reforms,
     int(start_year),
     is_file=True,
     additional_data=assumptions
)

when dropq_compute.submit_dropq_small_calculation does not have a keyword additional_data.

@brittainhard The full calculation works.
http://ospc-taxes7.herokuapp.com/taxbrain/1358/

@hdoupe thanks, I'm just about to put up a PR for that :).

@hdoupe @martinholmer fix for quick calc is up on the test app. Looking into the other issue now.

@martinholmer I took another dive into the code and I ended up in taxcalc again I noticed this line:
https://github.com/open-source-economics/Tax-Calculator/blob/master/taxcalc/policy.py#L52
It looks like its setting the default max years to 14 instead of 13, which may account for why the app is trying to calculate for year 2027. I fooled around with those values and only got more errors.
Can you take a second look there? I'm still tracking down the bug.

@brittainhard said about TaxBrain bug report #578, which was filed over three weeks ago:

I took another dive into the code and I ended up in taxcalc again I noticed this line:
https://github.com/open-source-economics/Tax-Calculator/blob/master/taxcalc/policy.py#L52

Line 52 in the policy.py file is the last line of the following lines:
    DEFAULTS_FILENAME = 'current_law_policy.json'
    JSON_START_YEAR = 2013  # remains the same unless earlier data added
    LAST_KNOWN_YEAR = 2017  # last year for which indexed param vals are known
    LAST_BUDGET_YEAR = 2026  # increases by one every calendar year
    DEFAULT_NUM_YEARS = LAST_BUDGET_YEAR - JSON_START_YEAR + 1

@brittainhard continued:

It looks like its setting the default max years to 14 instead of 13, which may account for why the app [that is, TaxBrain] is trying to calculate for year 2027. I fooled around with those values and only got more errors.
Can you take a second look there? I'm still tracking down the bug.

I'm mystified by your statement in several ways.
(1) The current version of Tax-Calculator can compute taxes for 2013, 2014, ..., 2025, and 2026.  So, if I count on my fingers the number of years for which it can compute taxes, I get 14, which is the value of DEFAULT_NUM_YEARS.  Why in the world do you think its values should be 13?  Please explain.
(2) Given that we're looking for the cause of a TaxBrain bug that appeared just recently, why in the world do you think a statement (line 52) which has not changed in two years can be the cause?  Please explain.
(3) GIven that you said 19 days ago in response to my request for a simple Tax-Calculator test that shows how calling a dropq method causes the reported TaxBrain error:

I'll set up a PR for that test

I don't understand why you "took another dive into the code and I ended up in taxcalc again".
Where is that promised test?
@MattHJensen @hdoupe

@hdoupe,  Does the TaxBrain error reported at the beginning of issue #578 still occur in the version of TaxBrain you are testing?

@martinholmer Yes, the error is still there:
http://ospc-taxes7.herokuapp.com/taxbrain/1373/
However, it appears to work when it does the quick calculation
http://ospc-taxes7.herokuapp.com/taxbrain/1374/
@brittainhard

@hdoupe @martinholmer the issue is that taxcalc is trying to calculate beyond the year 2026 when the limit is 2027. That reform file is causing the app to try to calculate beyond 2027, but quickcalc works because it is only calculating one year.

@hdoupe said about the TaxBrain error reported over three weeks ago in issue #578:

Yes, the error is still there [in the 0.9.1 test version of TaxBrain]:
http://ospc-taxes7.herokuapp.com/taxbrain/1373/

Thanks for the quick response.

@brittainhard said

That reform file is causing the app to try to calculate beyond 2027, but quickcalc works because it is only calculating one year.

Ah, thanks for pointing that out.

@brittainhard said about the TaxBrain error reported in #578:

The issue is that taxcalc is trying to calculate beyond the year 2026 when the limit is 2027. That reform file is causing the app to try to calculate beyond 2027, but quickcalc works because it is only calculating one year.

The last year for which Tax-Calculator can compute taxes is currently 2026.  So, I don't understand you statement "when the limit is 2027."  What do you mean by that?
Why don't you show us the dropq function call in the TaxBrain code that causes this error and show us the value of each parameter passed to that dropq function.   I don't understand why you didn't supply that information weeks ago when you came to the conclusion that the bug is in Tax-Calculator code.
@MattHJensen @hdoupe @PeterDSteinberg

@martinholmer I think it's a good idea to give you my understanding of what the problem is.
That reform file has a structure that is unlike those of many other sample files. It has inputs for multiple years instead of one, and contains inputs for years that are beyond the default max input year of TaxBrain, which is 2017.  For example, when you add inputs through the form at /taxbrain, you cannot add inputs for any year beyond 2017. When it tries to calculate data starting at any year beyond 2017 it fails because the growthfactors.csv file only has data up to 2026, as I mentioned before.
In my opinion, it is not possible to add any test that can prove which side of this application the bug is coming from. It is coming from both sides. I can supply a pickle file which does cause run_nth_year_taxcalc_model to fail, which I have tested locally. However, to use that file would prove little, since the data is first generated by TaxBrain.
I think we need a good discussion on how to handle this problem. It is not straightforward and there and many factors to consider. This project, like any math-oriented modeling web application, involves many repositories and interfaces working together. We're all limited on time and need to make sure we are doing efficient coordination to make each other aware of what's going on in each repo/interface and how those changes interact in the web application that ties all the pieces together.

@brittainhard said about the TaxBrain bug reported in #578 (with my emphasis):

I think it's a good idea to give you my understanding of what the problem is.
That reform file has a structure that is unlike those of many other sample files. It has inputs for multiple years instead of one, and contains inputs for years that are beyond the default max input year of TaxBrain, which is 2017. For example, when you add inputs through the form at /taxbrain, you cannot add inputs for any year beyond 2017. When it tries to calculate data starting at any year beyond 2017 it fails because the growthfactors.csv file only has data up to 2026, as I mentioned before.

Given that that boldface statement is clearly false, I'm having a difficult time putting much credence in your understanding of the problem in #578.
@brittainhard also said:

I can supply a pickle file which does cause run_nth_year_taxcalc_model [dropq function] to fail, which I have tested locally.

Excellent!   Given that the pickle documentation says the following, please do post the pickle file contents here.
By default, the pickle data format uses a printable ASCII representation.
This is slightly more voluminous than a binary representation. The big
advantage of using printable ASCII (and of some other characteristics
of pickle‘s representation) is that for debugging or recovery purposes
it is possible for a human to read the pickled file with a standard
text editor.

@hdoupe said after analyzing the "celery log" that traces TaxBrain operation leading up to the #578 bug:

There are two issues here:

In webapp-public/deploy/taxbrain_server/celery_tasks.py, first_budget_year is passed to dropq_task as None instead of 2013 (or whatever first budget year is selected). The result is that first_year is set to a year listed in the reform. So, in this case, it is set to 2019 instead of 2013. Why is that happening?

In webapp/apps/taxbrain/compute.py, it looks like NUM_BUDGET_YEARS is set to 10 by default:
NUM_BUDGET_YEARS = int(os.environ.get('NUM_BUDGET_YEARS', 10))
Is this the case? If so shouldn't actually be 2026 - first_budget_year?

I'm sure I'm missing something here and would appreciate any feedback.

@hdoupe,  Thanks for your efforts to unravel the cause of the bug reported in TaxBrain #578.
The "celery log" is still secret, so I have no way of providing feedback about whether or not your interpretation of the "celery log" is correct.  So, my comments here are going to assume that your two observations are accurate.  I'll leave it up to @brittainhard and @PeterDSteinberg, who have access to the "celery log", to determine the veracity of your two observations.
It seems as if the problem is in TaxBrain as described in your first observation.  By way of background, the standard in a full (not quick) run is to show tax results for ten "budget" years with the first year being the one selected by the user on the form.  The TaxBrain forms currently offer a start year choice of 2013, 2014, 2015, 2016 or 2017, so taxes can be computed for all ten years even if 2017 is selected (because currently Tax-Calculator can calculate taxes in 2026 at the latest).  This information was discussed by @brittainhard and @MattHJensen during late May in TaxBrain issue #557.
So, currently the largest legal first_budget_year (when num_budget_years is ten) is 2017.  If your analysis of the secret "celery log" is correct, then the logic of TaxBrain needs to be fixed.  The first_budget_year has nothing to do with the earliest reform year in the reform JSON file, it is the value selected by the user on the file-upload page.  So, the following code, which was merged into the TaxBrain master branch as part of pull request #556 on or around July 1, 2017, is incorrect:
def dropq_task(year, user_mods, first_budget_year, beh_params, tax_data):
    print("user mods: ", user_mods)
    # The reform style indicates what kind of reform we ran.
    # A list of size 1 with 'True' indicates a standard TaxBrain run
    # A list of size > 1 indicates a file-based reform was run, where each
    # index indicates whether the reform dictionary was non-empty
    # The four reform dictionaries from file-based reforms are:
    # policy, behavior, growth, consumption (in that order)
    reform_style = [True]
    if first_budget_year is not None:
        first_year = int(first_budget_year)
    else:
        first_year = int(user_mods.keys()[0])

Passing a first_budget_year of None should raise an error here.  And as I explained above the None value action first_year = int(user_mods.keys()[0]) is conceptually wrong and is what is causing the TaxBrain #578 bug.
The strange thing about this is that a few months ago TaxBrain did not have this problem; the problem seems to have been introduced in the massive set of #556 changes.
I don't think your second observation is a problem as long as first_budget_year is not too large.
Does my analysis of the situation seem sensible?  If not, what questions do you have?

@martinholmer said in the discussion of #578 comment by @hdoupe:

I don't think your second observation is a problem as long as first_budget_year is not too large.

This is incorrect.  What @hdoupe suggested is correct.  Here is what he said:

In webapp/apps/taxbrain/compute.py, it looks like NUM_BUDGET_YEARS is set to 10 by default:
NUM_BUDGET_YEARS = int(os.environ.get('NUM_BUDGET_YEARS', 10))

Is this the case? If so, shouldn't actually be 2026 - first_budget_year?

Background on dropq function arguments start_year and year_n
The dropq_calculate function advances the Calculator objects to start_year and then increments the year of the two Calculator objects year_n times.  This is the way dropq has worked from the beginning years ago.
So, if start_year is 2017 and year_n is 2, taxes are calculated for 2019.  And therefore, if start_year is 2017 and year_n is 10, dropq will try to increment the year ten times beyond 2017, which will cause an error because the tenth increment will move to 2027 and that is greater than Policy.LAST_BUDGET_YEAR (currently set at 2026).
In TaxBrain what is the value of the environment variable NUM_BUDGET_YEARS?
Is NUM_BUDGET_YEARS passed to dropq as year_n?
So, in conclusion, there appear to be two separate bugs in TaxBrain logic corresponding to the two observations made by @hdoupe.
Those reading this discussion would benefit from reading Tax-Calculator pull request 1495, which adds dropq logic to check for start_year and year_n values that are inconsistent with the Policy.JSON_START_YEAR or Policy.LAST_BUDGET_YEAR constants.
@MattHJensen @hdoupe @PeterDSteinberg @brittainhard

@hdoupe has shared the complete "celery.log" mentioned earlier in the discussion of TaxBrain issue #578.  Issue #578 reported a TaxBrain crash, the source of which has been in doubt for weeks.  It is important to stress that the reported TaxBrain crash occurs when doing a reform file upload that worked correctly for many months before the recent TaxBrain changes that are incorporated in the First Stable Release.
Selected information from the celery.log, which will be shown below, indicate clearly that the cause of the crash is new TaxBrain code that misuses the unchanged dropq functions in Tax-Calculator.
Here are the parameters being passed by TaxBrain to dropq:
$ grep -A1 "keywords to dropq" celery.log

[2017-07-27 09:14:03,607: WARNING/MainProcess] keywords to dropq
[2017-07-27 09:14:03,607: WARNING/MainProcess] {'start_year': 2019, 'user_mods': {u'growdiff_response': {}, u'consumption': {}, u'growdiff_baseline': {}, u'behavior': {}, u'policy': {2018: {u'_SS_Earnings_c': [400000], u'_II_em_cpi': False, u'_II_em': [8000]}, 2019: {u'_SS_Earnings_c': [500000], u'_ALD_InvInc_ec_rt': [0.2]}, 2020: {u'_SS_Earnings_c': [600000], u'_II_em_cpi': True}}, u'gdp_elasticity': {}}, 'year_n': 0}
--
[2017-07-27 09:15:07,192: WARNING/MainProcess] keywords to dropq
[2017-07-27 09:15:07,192: WARNING/MainProcess] {'start_year': 2019, 'user_mods': {u'growdiff_response': {}, u'consumption': {}, u'growdiff_baseline': {}, u'behavior': {}, u'policy': {2018: {u'_SS_Earnings_c': [400000], u'_II_em_cpi': False, u'_II_em': [8000]}, 2019: {u'_SS_Earnings_c': [500000], u'_ALD_InvInc_ec_rt': [0.2]}, 2020: {u'_SS_Earnings_c': [600000], u'_II_em_cpi': True}}, u'gdp_elasticity': {}}, 'year_n': 2}
--
[2017-07-27 09:15:45,075: WARNING/MainProcess] keywords to dropq
[2017-07-27 09:15:45,077: WARNING/MainProcess] {'start_year': 2019, 'user_mods': {u'growdiff_response': {}, u'consumption': {}, u'growdiff_baseline': {}, u'behavior': {}, u'policy': {2018: {u'_SS_Earnings_c': [400000], u'_II_em_cpi': False, u'_II_em': [8000]}, 2019: {u'_SS_Earnings_c': [500000], u'_ALD_InvInc_ec_rt': [0.2]}, 2020: {u'_SS_Earnings_c': [600000], u'_II_em_cpi': True}}, u'gdp_elasticity': {}}, 'year_n': 4}
--
[2017-07-27 09:16:21,640: WARNING/MainProcess] keywords to dropq
[2017-07-27 09:16:21,640: WARNING/MainProcess] {'start_year': 2019, 'user_mods': {u'growdiff_response': {}, u'consumption': {}, u'growdiff_baseline': {}, u'behavior': {}, u'policy': {2018: {u'_SS_Earnings_c': [400000], u'_II_em_cpi': False, u'_II_em': [8000]}, 2019: {u'_SS_Earnings_c': [500000], u'_ALD_InvInc_ec_rt': [0.2]}, 2020: {u'_SS_Earnings_c': [600000], u'_II_em_cpi': True}}, u'gdp_elasticity': {}}, 'year_n': 7}
--
[2017-07-27 09:16:53,262: WARNING/MainProcess] keywords to dropq
[2017-07-27 09:16:53,262: WARNING/MainProcess] {'start_year': 2019, 'user_mods': {u'growdiff_response': {}, u'consumption': {}, u'growdiff_baseline': {}, u'behavior': {}, u'policy': {2018: {u'_SS_Earnings_c': [400000], u'_II_em_cpi': False, u'_II_em': [8000]}, 2019: {u'_SS_Earnings_c': [500000], u'_ALD_InvInc_ec_rt': [0.2]}, 2020: {u'_SS_Earnings_c': [600000], u'_II_em_cpi': True}}, u'gdp_elasticity': {}}, 'year_n': 8}

$

We identified earlier in the #578 discussion the TaxBrain bug that sets start_year to 2019, so there is no need to discuss that bug further.
Given that TaxBrain is incorrectly setting the value of start_year to 2019, then whenever year_n is greater than 7, TaxBrain is calling for tax calculation in a year after 2026, which is currently the last year for which Tax-Calculator can compute taxes.  That is why the last entry in the log is for year_n equal to 8.  Passing start_year=2019 and year_n=8  to dropq will definitely cause an error.  So, the celery.log shows the TaxBrain crash is caused by a misuse of the dropq functions in the new TaxBrain code.  There was no such misuse of dropq in the older code, which is why this TaxBrain crash appeared only in the last month or so.
So, the first question is whether or not the TaxBrain developers from Continuum Analytics agree with this analysis of the cause of the TaxBrain crash.  And if they agree, the next question is when can the TaxBrain code be fixed.
As I said earlier in the #578 discussion, the recently merged Tax-Calculator pull request 1495 has tried to improve dropq checking of passed start_year and year_n values.  See the new test of this checking capability to see what kind of start_year/year_n pairs are illegal.  It is important for everybody to understand, for example, why passing start_year=2017 and year_n=10 to dropq functions is illegal.
@MattHJensen @hdoupe @PeterDSteinberg @brittainhard

I'm very glad to see progress on this issue, and thanks to @hdoupe, @martinholmer, and @brittainhard  for digging into this bug report.
I do have a few suggestions that may help speed up discussions in the future.

Straightforward statements of disagreement are very helpful, and I think we are all thick skinned enough to not need sugar coating. BUT there is no need to make disagreements or critiques gratuitously harsh. Emotional responses —especially during disagreements — disincentives people from communicating openly and reduces the likelihood that we get to the source of disagreements. (No complaints from me about ecstatic praise!)
When a downstream project maintainer thinks there is a bug is in a dependency (upstream project) — s/he should either open a PR to that upstream project with a failing test or paste into an issue the input and unexpected output that demonstrate the potential bug in the upstream project. This never happened in this discussion, but it would have been valuable at the very beginning.

@martinholmer @hdoupe @MattHJensen @PeterDSteinberg
Looking at the pickle file, the size is over 500mb. This is most likely because it contains a serialized DataFrame object. Including that in a PR would be undesirable for a number of reasons.
After having taken a second look at the problem, I believe the solution is to fix the code in webapp. To this end, I am going to create a PR which will set up a failing test that we can work from towards a fix. This PR should be up shortly.
Let me know if you have any questions.

@brittainhard said:

Looking at the pickle file, the size is over 500mb. This is most likely because it contains a serialized DataFrame object. Including that in a PR would be undesirable for a number of reasons.

Yes, your view is very sensible.

After having taken a second look at the problem, I believe the solution is to fix the code in webapp. To this end, I am going to create a PR which will set up a failing test that we can work from towards a fix. This PR should be up shortly.

Great!  Let us know if any questions come up that you think we could answer quickly.

Closed by #593


Flowtype definitions?

Does anybody know if there are any co Flowtype definitions around?
If not, I will probably tackle this inside the flow-typed project...
Would be cool to have some flowtype & co users for testing!

You may want to take a look at Flow's blog post on using generators with Flow and the limitations that are there.

Did anything become of this? I just started using both co and Flow, and I'm having trouble getting Flow to typecheck my yielded variables correctly.

Ever since the interest for this was very low, so I focused on other stuff... in the mid of November, I will probably use co more often (or other CSP libraries doing similar things)... problem is that it is very hard to have a very nice UX & type-safetiness for yield and next values... although yield is usually easier than next... if you want we could work on it on a flow-typed fork?


can't change encode with text files

VS Code version: Code 1.37.1 (f06011ac164ae4dc8e753a3fe7f9549844d15e35, 2019-08-15T16:17:55.855Z)
OS version: Windows_NT x64 10.0.18362
Steps to Reproduce:

make a new file, start with some 0x00 bytes, after those are really text
open it, vscode will mind you this file is bin file, you need to click and open it:

then you can't change this file's encoding:

I only changed two bytes

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-6650U CPU @ 2.20GHz (4 x 2208)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwareoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_deferred_display_list: disabled_offskia_renderer: disabled_offsurface_synchronization: enabled_onvideo_decode: enabledviz_display_compositor: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
7.93GB (1.48GB free)

Process Argv

Screen Reader
no

VM
50%

Extensions (17)

Extension
Author (truncated)
Version

rainbow-brackets
2gu
0.0.6

blamer-vs
bea
0.5.0

love
bsc
0.3.6

vscode-markdownlint
Dav
0.30.1

xml
Dot
2.5.0

gitlens
eam
9.9.3

diff-tool
jin
0.0.1

svn-scm
joh
1.54.4

luacoderassist
liw
2.3.3

vscode-language-pack-zh-hans
MS-
1.37.5

python
ms-
2019.8.30787

cpptools
ms-
0.25.0

csharp
ms-
1.21.1

vsliveshare
ms-
1.0.721

indent-rainbow
ode
7.4.0

code-settings-sync
Sha
3.4.2

vscode-hexdump
sle
1.7.2

@chenxuuu what encoding is that that uses 0x00 bytes? We use that to detect binary files. If you need to use these bytes, set a UTF16 LE or BE BOM.

@bpasero
problem is, in old version, I can change those files' encoding, but I can't do this in new version
my serial port logs may start with any data, include 0x00 or 0x40-0xff

Great catch, I pushed a fix for that.


durable-objects-websocket example doesn't have tailwindcss/windicss

The example durable-objects-websocket doesn't have tailwind/windicss deps installed, but it does use classes and styles from it.

I can put up a PR if given a preference tailwindcss or windicss?

Heyy really thanks for this PR.. but i think what we might do, and you can update your PR for this.. is just styling our examples with root.css files so people can move off them easily. We will have a windicss starter, but putting it in a websocket example makes it tough to make the examples flexible. Does that make sense?


Sorting issue in Scene05

@BlackMATov  Seems like the sorting for the moving cube is not correct. Check screenshot below:

@BlackMATov Seems like the sorting for the moving cube is not correct. Check screenshot below:

Hello! Yes, it looks wrong, but if it happens outside the camera view it's ok. Objects are not sorted outside the camera to optimize the sorting process.

Although I looked more closely. it still looks normal, in this demo scene this cube is moving which can be a little confusing. try playing with the scenes a little simpler :-)

@BlackMATov Today I double check the scene, it turns out the the blue cube's position z is higher than the moving cube. Thanks for your reply.


Normal PHP behavoiur
What is the actual behavior?
/var/www/html # php -i
Segmentation fault (core dumped)

Not fixed, but avoided, by #83
Until we do have a proper fix, we decided at SIG to disable the extension in case of conflict.

Using main, I was able to have both blackfire and opentelemetry running without segfault. I think we can say that this is fixed by #102 and I will remove the conflict configuration to enable blackfire to run alongside opentelemetry.


Add vDPA support

vDPA devices can be exposed to Pods in two different ways:
If they are bound to the virtio_vdpa driver, they are exposed as normal netdevs
If they are bound to the vhost_vdpa driver they are exposed as vhost-vdpa devices. These are char devices that support the vhost-vdpa extensions to the vhost uAPI
The implementation of the vDPA support is done by implementing the DeviceInfoProvider interface.
A new string field is added to the 'NetDeviceSelectors': vdpaType. It can optionally have two values: vhost or virtio. This selector is used to determine the way the devices are exposed to the Pods as well as to filter the discovered devices based on their vdpa driver.
For the low level vdpa bus handling, we depend on github.com/redhat-virtio-net/govdpa a golang library to interact with the vdpa subsystem.
This PR also adds support for writing the vdpa DeviceInfo file as per the specification.
Fixes: #305

Still in WIP state because I'd like to post a PR on the SRIOV-CNI with some code that is needed to test the E2E solution.
But reviews and comments can begin.
One specific design decision that I'm not 100% sure about the selector value, current state is:
{ ...
"vdpaType": "vhost"
or
"vdpaType": "virtio"
...}

We could use vdpaDriver: ["vhost_vdpa" , "virtio_vdpa"]. I finally went with the former in the hope of:

Avoid redundancy of the "_vdpa" part
Convey the message that this is not only a selector (i.e: a filter) based on the vDPA driver. It also modifies the way the device is exposed.

The not so good side of this is: we have to add some vdpaType to vdpaDriver boilerplate code here and there
WDYT?

Works in combination with https://github.com/k8snetworkplumbingwg/sriov-cni/pull/163

@amorenoz just to understand the scope, this vDPA support is for SR-IOV + vDPA, it will/can not be used for SF/ADI vDPA, correct?

Correct, this PR implements SR-IOV + vDPA
SF/ADI is a different story: will it even be supported by DevicePlugin?

@amorenoz just to understand the scope, this vDPA support is for SR-IOV + vDPA, it will/can not be used for SF/ADI vDPA, correct?

Correct, this PR implements SR-IOV + vDPA
SF/ADI is a different story: will it even be supported by DevicePlugin?

@amorenoz just to understand the scope, this vDPA support is for SR-IOV + vDPA, it will/can not be used for SF/ADI vDPA, correct?

Correct, this PR implements SR-IOV + vDPA
SF/ADI is a different story: will it even be supported by DevicePlugin?

Haven't discussed this, my understanding is perhaps not.

@amorenoz just to understand the scope, this vDPA support is for SR-IOV + vDPA, it will/can not be used for SF/ADI vDPA, correct?

Correct, this PR implements SR-IOV + vDPA
SF/ADI is a different story: will it even be supported by DevicePlugin?

Haven't discussed this, my understanding is perhaps not.

/cc @martinkennelly

/cc @martinkennelly

That is one strange CI error. Has anyone seen this before?
Resource manager
/home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/cmd/sriovdp/manager_test.go:48
discovering devices

  /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/pkg/mod/github.com/onsi/ginkgo@v1.12.0/extensions/table/table.go:92

    no devices [It]

    /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/pkg/mod/github.com/onsi/ginkgo@v1.12.0/extensions/table/table_entry.go:43

    Unexpected error:

        <*errors.errorString | 0xc0004c5990>: {

            s: "discoverDevices(): error getting PCI info: gzip: invalid header",

        }

        discoverDevices(): error getting PCI info: gzip: invalid header

    occurred

    /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/cmd/sriovdp/manager_test.go:315

------------------------------

That is one strange CI error. Has anyone seen this before?
Resource manager
/home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/cmd/sriovdp/manager_test.go:48
discovering devices

  /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/pkg/mod/github.com/onsi/ginkgo@v1.12.0/extensions/table/table.go:92

    no devices [It]

    /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/pkg/mod/github.com/onsi/ginkgo@v1.12.0/extensions/table/table_entry.go:43

    Unexpected error:

        <*errors.errorString | 0xc0004c5990>: {

            s: "discoverDevices(): error getting PCI info: gzip: invalid header",

        }

        discoverDevices(): error getting PCI info: gzip: invalid header

    occurred

    /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/cmd/sriovdp/manager_test.go:315

------------------------------

That is one strange CI error. Has anyone seen this before?
Resource manager

/home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/cmd/sriovdp/manager_test.go:48

  discovering devices

  /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/pkg/mod/github.com/onsi/ginkgo@v1.12.0/extensions/table/table.go:92

    no devices [It]

    /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/pkg/mod/github.com/onsi/ginkgo@v1.12.0/extensions/table/table_entry.go:43

    Unexpected error:

        <*errors.errorString | 0xc0004c5990>: {

            s: "discoverDevices(): error getting PCI info: gzip: invalid header",

        }

        discoverDevices(): error getting PCI info: gzip: invalid header

    occurred

    /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/cmd/sriovdp/manager_test.go:315

------------------------------

I think @martinkennelly mentioned this in last resource mgmt meeting, he might be working on the fix (to update ghw lib).
@adrianchiris suspected this might be due to the VM image update in travis.

That is one strange CI error. Has anyone seen this before?
Resource manager

/home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/cmd/sriovdp/manager_test.go:48

  discovering devices

  /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/pkg/mod/github.com/onsi/ginkgo@v1.12.0/extensions/table/table.go:92

    no devices [It]

    /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/pkg/mod/github.com/onsi/ginkgo@v1.12.0/extensions/table/table_entry.go:43

    Unexpected error:

        <*errors.errorString | 0xc0004c5990>: {

            s: "discoverDevices(): error getting PCI info: gzip: invalid header",

        }

        discoverDevices(): error getting PCI info: gzip: invalid header

    occurred

    /home/travis/gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/.gopath/src/github.com/k8snetworkplumbingwg/sriov-network-device-plugin/cmd/sriovdp/manager_test.go:315

------------------------------

I think @martinkennelly mentioned this in last resource mgmt meeting, he might be working on the fix (to update ghw lib).
@adrianchiris suspected this might be due to the VM image update in travis.

Couldn't reproduce consistently locally so doesn't seem like ghw issue. I was hoping it was transient error so gave up. @adrianchiris suggested upgrading to bionic (18.04) VM.

Couldn't reproduce consistently locally so doesn't seem like ghw issue. I was hoping it was transient error so gave up. @adrianchiris suggested upgrading to bionic (18.04) VM.

Couldn't reproduce consistently locally so doesn't seem like ghw issue. I was hoping it was transient error so gave up. @adrianchiris suggested upgrading to bionic (18.04) VM.
Ill post a test PR with updated travis file to see if it fixes it.
Edit: Updating travis VM failed.
I looked at the Ghw code and it seems to fetch pci-ids file in gzip format from a network location if it cannot find pci ids file locally: https://github.com/jaypipes/pcidb/blob/98ef3ee36c69f20650fe7855047ad042338c6983/discover.go#L36 referenced by const PCIIDS_URI. If this fails, you'd see the error shown by @amorenoz

Hi folks! Hey, please check out this PR from @pearsonk in the pcidb library that addresses systems that store the PCIIDS file in gzip-format:
https://github.com/jaypipes/pcidb/pull/23
I plan to merge that today along with some other PRs from @martinkennelly and cut a new release for pcidb and the upstream ghw project today.
Best,
-jay

Couldn't reproduce consistently locally so doesn't seem like ghw issue. I was hoping it was transient error so gave up. @adrianchiris suggested upgrading to bionic (18.04) VM.
Ill post a test PR with updated travis file to see if it fixes it.
Edit: Updating travis VM failed.
I looked at the Ghw code and it seems to fetch pci-ids file in gzip format from a network location if it cannot find pci ids file locally: https://github.com/jaypipes/pcidb/blob/98ef3ee36c69f20650fe7855047ad042338c6983/discover.go#L36 referenced by const PCIIDS_URI. If this fails, you'd see the error shown by @amorenoz

Hi folks! Hey, please check out this PR from @pearsonk in the pcidb library that addresses systems that store the PCIIDS file in gzip-format:
https://github.com/jaypipes/pcidb/pull/23
I plan to merge that today along with some other PRs from @martinkennelly and cut a new release for pcidb and the upstream ghw project today.
Best,
-jay

/cc @fromanirh you might be interested in this repo/PR as well

/cc @fromanirh you might be interested in this repo/PR as well

Hi @adrianchiris @zshi-redhat. I've rebased on top of master and fixed the conflicts. What do you think about merging this PR?

Updated to pull govdpa from NPWG organization

@adrianchiris , do you have any further comments on this PR?

Thanks @Billy99

@adrianchiris if you want to try this PR, I've tested it with linux v5.14.

@amorenoz  planning to look at it today, sorry for the delay

@adrianchiris at your convenience, PTAL

@zshi-redhat @SchSeba PTAL
Its been a long ride with this PR :)

/cc @bn222

@zshi-redhat do you have any further comments on this PR?


[Star Wars Saga Edition] Bugfix for Armor Check and Encumbrance with skills; Added no XP houserule

Submission Checklist
Required

[x] The pull request title clearly contains the name of the sheet I am editing.
[x] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[x] The pull request makes changes to files in only one sub-folder.
[x] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

Changes / Description

Perception, Pilot, and Ride all added an armor check penalty if not proficient, and encumbrance if overloaded. This has been changed to not apply anymore.
Added a house rule to remove XP from the sheet, since many groups do not use it.

Character Sheet Info Roll20 Internal Use only.


CORE-12872 rename net.cordapp to com.r3.corda

CORE-12872 Rename net.cordapp... packages to com.r3.corda...

Just to check you did a find and replace and also searched for all packages with net.cordapp in it?

I went through the gradle modules that ugrep -rin --exclude-dir={.git,logs} net.cordapp found.
I used intellij's refactoring for the module renames.
Then used these two for the remaining:
sed -i ''  -e 's/net.cordapp/com.r3.corda/g' $( ugrep -rinl --exclude-dir={.git,build,logs} net.cordapp|grep -v bin)
sed -i ''  -e 's/com.r3.corda.bundle/com.r3.corda.testing.bundle/g' $( ugrep -rinl --exclude-dir={.git,build,logs} com.r3.corda.bundle|grep -v bin)

(com.r3.corda.bundle seemed to be a bit too generic. So I added testing to it.)
Then I needed to regenerate the two bin files in the serialization-amqp integration tests.
(And there was an unused import somewhere around the dog files.)
And the end result:
ugrep -rin --exclude-dir={.git,logs} net.cordapp|wc
       0       0       0


Update Production Build Guide

Rework and simplify the production build guide to address some of the issues discussed in #1100 as well as just doing some general cleanup of titles and whatnot.
Also sneaking a UI/UX fix for the contributors section in here...

to...

This puts some space between rows and prevents them from being overlapped by the gitter button.

@bebraw thanks for the review, yeah on a normal day I would push it separately but I was trying to hit a lot of things last night. It is somewhat related to this PR as the guide I edited has a ton of contributors.


Release v0.02

Changelogs

Changes & Fixes

Changed camera rotation system.
Changed rendering method, allowing for entity selection
Rewrote entirely the input system. Navigating in 3D space is now less messy, and inputs won't be detected for movements if the 3D View is not focused.
Fixed overlay showing wrong camera position (inverted)
Fixed

New features

Clicking on an entity will select it and allow for multiple actions. The selected entity is highlighted by a re-drawing it as wireframe over it.
New Instance Properties frame allows to move, rotate, rescale and teleport camera to entities. It also gives the name of the entity and its internal instance ID.
New Entities Explorer frame allows to search through entities and find a precise moby. Clicking on an element will select it.
New logo, made by @Nooga !
New Resources Manager, allowing for future implementation of internal models and textures, such as icons and arrow-models (for displacement, rotation and rescale)
Added shortcuts support.

Known issues

Item selection from 3D View by clicking on objects is very approximate. The cause is known, I just have no better solutions yet.
Frames docking positions don't save, neither after closing it, nor after relaunching the app. Sadly I can't do anything for that (limited by the version of the library)
Ties can be selected but can't be moved. Should be fixed in a future release.
UFrags can't be selected. Will be fixed in next version.

Hi, I'm sorry but I don't think I made this logo :D

Hi, I'm sorry but I don't think I made this logo :D

Yes it's another nooga, but Github's dooky mention system 👌


EOF error when using reader

While you're using a reader for i.e. an image you'll receive an EOF from go's io package which leads to pdf creation error

Thanks, @daill!


Add gitignore

I think this project should have .gitignore.
I generated one through the npx gitignore node, and added some svelte and ignore files dedicated to this project.

If I've missed any documentation that should have prompted my git to ignore these files, please let me know.

The project actually have a .gitignore
I don't know why It doesnt appears in the code base, I suppose it got itself ignored. I'll add back update version merged with yours asap

I'm glad to hear you have a .gitignore ready.
By the way, the db.sqlite path in the .dockerignore file might need updating as well. I'm not sure if you've noticed, but the current path seems incorrect.

damnit didn't notice before!
thank you i'll fix it right away


[libxml2] build failure - absolute paths

Operating system
Linux
Compiler
GCC
Steps to reproduce the behavior
vcpkg install libxml2:x64-linux-dynamic

Failure logs
Building libxml2[core,iconv,lzma,zlib]:x64-linux-dynamic...
warning: -- Using community triplet x64-linux-dynamic. This triplet configuration is not guaranteed to succeed.
-- [COMMUNITY] Loading triplet configuration from: /home/adrian/Work/doctotext/vcpkg/triplets/community/x64-linux-dynamic.cmake
-- Downloading https://gitlab.gnome.org//GNOME/libxml2/-/archive/v2.11.5/libxml2-v2.11.5.tar.gz -> GNOME-libxml2-v2.11.5.tar.gz...
-- Extracting source /home/adrian/Work/doctotext/vcpkg/downloads/GNOME-libxml2-v2.11.5.tar.gz
-- Applying patch disable-docs.patch
-- Applying patch fix_cmakelist.patch
-- Using source at /home/adrian/Work/doctotext/vcpkg/buildtrees/libxml2/src/v2.11.5-f34ef8c26d.clean
-- Configuring x64-linux-dynamic
-- Building x64-linux-dynamic-dbg
-- Building x64-linux-dynamic-rel
-- Fixing pkgconfig file: /home/adrian/Work/doctotext/vcpkg/packages/libxml2_x64-linux-dynamic/lib/pkgconfig/libxml-2.0.pc
-- Fixing pkgconfig file: /home/adrian/Work/doctotext/vcpkg/packages/libxml2_x64-linux-dynamic/debug/lib/pkgconfig/libxml-2.0.pc
-- Installing: /home/adrian/Work/doctotext/vcpkg/packages/libxml2_x64-linux-dynamic/share/libxml2/copyright
-- Fixed rpath: /home/adrian/Work/doctotext/vcpkg/packages/libxml2_x64-linux-dynamic/debug/lib/libxml2.so.2.11.5 ($ORIGIN)
-- Fixed rpath: /home/adrian/Work/doctotext/vcpkg/packages/libxml2_x64-linux-dynamic/lib/libxml2.so.2.11.5 ($ORIGIN)
-- Performing post-build validation
warning: There should be no absolute paths, such as the following, in an installed package:
/home/adrian/Work/doctotext/vcpkg/packages/libxml2_x64-linux-dynamic
/home/adrian/Work/doctotext/vcpkg/installed
/home/adrian/Work/doctotext/vcpkg/buildtrees/libxml2
/home/adrian/Work/doctotext/vcpkg/downloads
Absolute paths were found in the following files:
/home/adrian/Work/doctotext/vcpkg/packages/libxml2_x64-linux-dynamic/bin/xml2-config
/home/adrian/Work/doctotext/vcpkg/packages/libxml2_x64-linux-dynamic/debug/bin/xml2-config
error: Found 1 post-build check problem(s).
Additional context
I check several vcpkg tagged versions and HEAD. It seems that last version that works is 2023.04.15.

It seems that it is installed after this (I hope correctly) but "error" is reported during post-building checks. Please advice how to update issue category if required. Thank you.

Great, thanks!


Replaced failedRequests SLA assertion with maxErrorPercentage.

Replacing assertion for maximum number of failed requests with maximum request error percentage.

Note: This breaks backwards compatibility because the sla-failed-requests parameter is no longer available.


Add MDMMotionCurveFromTimingFunction.

Makes it easier to create a motion curve from a timing function.

Gentle ping.


Ambigous custom prefixes

Custom prefixes can be ambiguous without any special character at the end.
[Document(StorageType = StorageType.Json, Prefixes = new[] { "customer" })]
public class Customer
{
    [Indexed] public string Data { get; set; }
}

[Document(StorageType = StorageType.Json, Prefixes = new[] { "customerDetail" })]
public class CustomerDetail
{
    [Indexed] public string Data { get; set; }
}

In the above case, all CustomerDetail will be indexed as Customer. A workaround is to add a : (colon) at the end. This will result in keys such as customer::<id> and customerDetail::<id>.

When default prefixes are used, then a : (colon) is added to the full name of the type.
When a custom prefix is defined, then the value is used as is.

https://github.com/redis/redis-om-dotnet/blob/71c21738a357792fb18ecbcee7b5a002f3576f25/src/Redis.OM/Modeling/RedisIndex.cs#L55-L64

This has been a question we've received a few times. IMO the library is operating correctly and to make this change would be a break. However I think ultimately the correct work-around will be allowing folks to set these properties at run-time as well as in the pre-defined model definition.


incompatibility issues with mods that add new sounds

hello, i noticed that sounds from some mods play randomly with this mod. for example, sounds of demogorgon spawning from StrangerThingsMod play when the ship lands with this mod, when it shouldn't obviously. and also sounds from FacilityMeltdown play randomly, whether in orbit or when i land. i have a video example here of StrangerThingsMod demogorgon spawn sound.
https://github.com/no00ob/LCSoundTool/assets/133137232/7c0424cd-615d-4ef3-8d3c-1b9480c1e3f9

i confirmed the issue by downloading only lethalresonance, StrangerThingsMod, and their dependencies. i also tried with FacilityMeltdown.

Hey, thanks for reporting. I will take a look for the next update, but it sounds like these issues could be something on the other mods end that I can not fix and you would have to ask the other mod authors to make sure their custom audio is setup in a way which works well with my mod.

hi, np. alright i'll report this to them.

hey creator of facility meltdown here! had this issue linked in my discord thread. i've created a custom api for moons to add custom music (look here for the implementation but i think for this use case you'll have to publicize the mods dll and override Assets.defaultMusic. assets.cs

Hey, awesome to hear! My mod should in theory require no extra work, but it depends on how your or other mods setup their audio on the Unity side. How does your mod implement the audio when it comes to Unity audio sources? Do they get created and setup at runtime? About the only thing my mod might mess up is that it tries to add it's own custom component to audio sources with playOnAwake set to true, to take over their playback, but other than that it should work without any extra work. If you wanna further discuss compatibility you can contact me through discord @no00ob.


Incorporate Ask on Order Entry (AOE) Questions into MVP

Alicia and I met with Alex Ganim to walk through the mock ups. From a CDC optics perspective, it is very important that the MVP include the federally-required data fields (she is going to send me a file with those data fields and I will drop it here). Some of these fields are things that don't change (e.g. race) and some of them do change (e.g. pregnant/not pregnant, symptoms). Based on research, nursing homes we spoke w/ do not currently collect this information from their staff at all, so when we include these fields, they should be optional.
Our feedback: These fields are important but they may not be a v1 feature. Alex suggested that if these are not part of v1, we need to at least acknowledge these fields and have an answer on when they will be included (which should be soon after, like v2).
Compromises we discussed if this is not included in v1, starting with the most preferred from CDC perspective:

Include these data elements for real in v2, but grayed out / as a placeholder in v1
Design a workflow for collecting these data elements (mock ups only) to demonstrate momentum/commitment to adding them in v2

My open questions:

This could be achieved a couple of ways (below). Which one is more feasible from an engineering perspective for v2? Which one is more user-friendly (for patients and administrators)?

Pre-test survey (like we designed previously in the mock ups)
In-person collection by test administrator at time of test
Any other ideas?

This page from a research team in Rhode Island is likely a good starting point: https://thepolicylab.github.io/covid-forms/data-standard.html (also they've already put a bunch of that stuff into use on pages in the repo)

Materials from Alex about the reporting requirements below!
Guidance: https://www.hhs.gov/answers/is-additional-information-including-technical-specifications-available-to-support-laboratories-with-implementation/index.html
Reporting requirement specifications: https://www.hhs.gov/sites/default/files/hhs-guidance-implementation.pdf
https://www.hhs.gov/sites/default/files/non-lab-based-covid19-test-reporting.pdf
Flat CSV File – housed on APHL’s website, row 7: https://app.smartsheet.com/b/publish?EQBCT=fab9882490c0481d924bf8e728be757e

@katiealoisi should this get closed or is there more work to do here?

This seems like a dupe with #56.  I suggest we close this ticket.

Sounds good!


Http api 1.0 rc changes

Changes the Connection model to the agreed on HTTP API breaking changes as outlines here
adds tests for all changes
adds sinon.js for mocking
changed path describing keys to camelCase
added constant.js (similar to conftest.py)
added integration tests that run against bdb
updated ascribe-eslint package
[x] test and fix asset endpoint
[x] test and fix outputs endpoint

More info:

Fixes #48

Add integration test for asset endpoint :diamond:

:(

Please note that in Connection.js I broke the interface to use camelCased parameters for some methods already.
It will require me to fix the rest of those before releasing a 1.0 compatible release.

Codecov Report

Merging #39 into master will increase coverage by 18.16%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #39       +/-   ##
==========================================
+ Coverage   50.53%   68.7%   +18.16%
==========================================
  Files          21      21
  Lines         279     278        -1
==========================================
+ Hits          141     191       +50
+ Misses        138      87       -51

Impacted Files
Coverage Δ

...saction/serializeTransactionIntoCanonicalString.js
100% <ø> (ø)
:arrow_up:

src/connection/index.js
93.54% <100%> (+65.42%)
:arrow_up:

src/baseRequest.js
75% <0%> (+21.42%)
:arrow_up:

src/format_text.js
36.36% <0%> (+27.27%)
:arrow_up:

src/stringify_as_query_param.js
90% <0%> (+60%)
:arrow_up:

src/sanitize.js
73.68% <0%> (+63.15%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8cde6df...b883e1f. Read the comment docs.

Apart from the first test in test/connection/test_connection.js, I'm not sure I understand how the rest of the tests in the same file work.

They check if for given input parameters, the tested function calls the request method correctly.
Example:
Call getBlocks(transactionId='abc', status='VALID`)
return {
  query: {
    transaction_id: 'abc',
    status: 'VALID'
  }
}

I think hard-coding Alice's pubkey (and outputs) is not a good idea since tests run in parallel. In this case we can have problems processing the unspents—e.g. I want to create a test where I transfer something from Alice to Bob. If Bob's pubkey is constant, tests can influence each others and assertions like:
unspentst-1(Bob) = unspentst(Bob) + 1
can easily fail.

OK, I can fix this.

remove extra parenthesis :nail_care:

https://github.com/ascribe/javascript/issues/56

Why is it connection/index.js rather than just connection.js?

Why is it connection/index.js rather than just connection.js?

https://github.com/bigchaindb/js-bigchaindb-driver/issues/57


Add NEST v3.8_rc2

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

v3.8 has been released and will be adopted with PR #116. Therefore this PR will be closed.


Implementing Password Grant - Invalid Credentials

First, I did everything Credentials_Grant as guided in documentation, seeded oauth_clients table with dummy data and using Postman, I was able to get access token.
Now, I am trying to implement Password_Grant. I did everything docs said. I replaced grant_type => client_credentials with grant_type => password, created PasswordVerifier.php and OAuthController.php. Also created User table and User Model, and seeded my table with dummy data.
Now when I try to Post using Postman,
grant_type => password
client_id => Test1
client_secret => secret
username => User1
password => secret, even though they are correct, I am receiving Invalid Credentials error with 200 response.
What am I doing wrong?
Also I have another question. Where do I need to store client_id and client_secret? I migrated ouath_clients table with dummy data, but still couldn't figure out in my head how to call them and compare them before or after validating user inputs.

PasswordVerifier.php

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;

class PasswordVerifier
{

public function verify($username, $password)
{
    $credentials = [
    'username'    => $username,
    'password' => $password,
    ];

    if (Auth::once($credentials)) {
        return Auth::user()->id;
    }

    return false;
}

}

OAuthController.php

<?php

class OAuthController extends Controller
{
    /**
    * The oauth authorizer instance.
    *
    * @var \LucaDegasperi\OAuth2Server\Authorizer
    */
private $auth;

public function __construct(Authorizer $auth)
{
    $this->auth = $auth;
}

    /**
    * Issue a new access token.
    *
    * @return array
    */
public function token()
{
    return new JsonResponse(['data' => $this->auth->issueAccessToken(), 200]);
}

}

User Model

<?php

namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
    use Authenticatable, CanResetPassword;

    protected $table = 'users';

    protected $fillable = [
        'username',
        'password',
    ];

    protected $hidden = ['password'];

}

Route.php

$app->post('/oauth/access_token', function() use ($app) {
   return response()->json($app->make('oauth2-server.authorizer')->issueAccessToken());
});

I found my problem. I should've put bcrypt('password') while seeding my db

Glad you solved it.

I'm having the same problem, my table users is was fed password using bcrypt and still the error persists. Already checked several times the User and Password I'm trying to authenticate and everything is correct, however the return is still invalid credentials.


Add a few optional text heap APIs to support esp32s3

Summary
esp32s3's Internal SRAM 1 and External Memory have two separate mappings for instructions and data.
expected merge order:
https://github.com/apache/nuttx/pull/12355
https://github.com/apache/nuttx-apps/pull/2395
https://github.com/bytecodealliance/wasm-micro-runtime/pull/3439
Impact
Testing

@tmedicci please take a look


Create a security policy

Describe the solution you'd like
A security policy is needed to have an official reference of the python versions supported by the library and also to point out official reports.
Additional context
Github is one methane automatized to this work.

Deployment made in commit https://github.com/Otoru/jaspion/commit/90c8ef9e6466ded278e7720b28a7a21fa83bb62d


updated the documentation to reflect accurate setting

Let me know if you have any questions.

Hi, thanks for the PR.
This setting is used verbatim in the settings.py template. Are you certain that using bona fide boolean values is sound in this context?
If so, then this should be reflected in the strings documentation as well.

Puppet wants the value without the quotes. If you see params.pp, it is setting the value to:
$puppetdb_ssl_verify = false
I have updated the strings documentation above.
Let me know if you have any other questions/comments.

Good point about params! So yes, I'm in favor.
Come to think of it, I do have one last wishlist item: Could you add the parameter to the validate_bool list in the main class? With that in, this will be good to merge.

Done

@mkinney would you very much mind squashing those three commits down to one?
(if it's too hard to do, because you started working master, you may consider re-submitting this pr, using the github flow workflow).


route: Add DeleteV4 helper function

Add DeleteV4 to delete an IPv4 route. Differently from Delete, DeleteV4 does not discard Priority, Local, Type, MTU and Scope fields when sending the deletion request via netlink.

/test

/test

/test


Dead Links in README under 'Third-party Modules'

Three (3) referenced repos seem not to exist (404 returned):

socket.io (https://github.com/scalajs-io/socket.io)
socket.io-client (https://github.com/scalajs-io/socket.io-client)
kafka-rest (https://github.com/scalajs-io/kafka-rest)

thanks, I'll update them.

I'm sure you're busy with other things ... but any ETA on this?

Sorry to be that guy, but... Is there any news on this?

LOL, no worries. Yes, I've been slacking a bit... I hope to have the issue resolved by this Sunday night (8/27).

knock knock

I've removed the broken links.
My socket.io binding will be replaced by the (soon to be released) engine.io binding.


DESC meeting session

@drphilmarshall @wmwv I added a session I labeled as "Twinkles 1" to the agenda for the March meeting.  The agenda was filling up.  If you don't want a session, please let me know and I'll either delete it or leave it up to @cwwalter if he thinks a join CS/SS session would be of use.

Thanks Simon. I think this is a good idea. I'm not sure what the SS WG
plans are, but we'll have plenty of results  to show and discuss, and
enough plans to make, to warrant a whole session.
On Tue, Jan 26, 2016 at 5:15 PM, SimonKrughoff<EMAIL_ADDRESS>wrote:

@drphilmarshall https://github.com/drphilmarshall @wmwv
https://github.com/wmwv I added a session I labeled as "Twinkles 1
https://confluence.slac.stanford.edu/display/LSSTDESC/Twinkles+I+data+challenge"
to the agenda for the March meeting. The agenda was filling up. If you
don't want a session, please let me know and I'll either delete it or leave
it up to @cwwalter https://github.com/cwwalter if he thinks a join
CS/SS session would be of use.
—
Reply to this email directly or view it on GitHub
https://github.com/DarkEnergyScienceCollaboration/Twinkles/issues/99.

We have a session SSim #2 on Thursday:
https://confluence.slac.stanford.edu/display/LSSTDESC/SSim+Session+%232
I imagine that we could talk about the CatSim related twinkles work there but that can also be covered in the separate Twinkles session if better. I suspect we don't need a separate CS/SSim joint session just for this purpose.


Bug: Remove number

I am not eligible for plasma donation. I had typhoid along with covid. Kindly remove my number from the tracker.

You can delete your registration by logging in on the platform.


Provide ability to use CheckedContinuation when suspending for an async ObjC call

Builds on @kavon's PR - https://github.com/apple/swift/pull/41772
To provide enhanced debugging and runtime checking for the correct usage
of continuations passed in a call to ObjC from Swift, this PR introduces a flag
for the swift-frontend that uses a CheckedContinuation when calling an
async ObjC function from Swift. When enabled, the underlying block value
passed as a completion-handler is created using CheckedContinuation
instead of just an UnsafeContinuation, which was what was used previously.
The checked continuation ensures that the block is only invoked once.
As of now, the swift-frontend flag is -checked-async-objc-bridging={on, off}
Resolves: rdar://89930501

@swift-ci please test

@swift-ci please test source compatibility release

Source compatibility suite failures are unrelated:
/Users/ec2-user/jenkins/workspace/swift-PR-source-compat-suite-macos/swift-source-compat-suite/project_cache/swift-foundation/Sources/FoundationEssentials/AttributedString/AttributedSubstring.swift:16:16: error: package import can only be used from a module with a package name; set it with the compiler flag -package-name
package import _RopeModule
               ^


Remove references to localhost

Removing references to localhost so this works when served under a domain on the internet in production as well as locally in a dev environment.

@joshuacox very sorry for the crazy delay, I wasn't monitoring this repo 🙈Thank you for the PR 👍


Can SevenBitI2CAddress be changed to EightBitI2CAddress ?

As per DDC/CI standard 0x6E is 8 bit i2c address for i2c-write.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 97ba3e2f-2a93-0898-09b8-2e6a118a5f60
Version Independent ID: ff9e8d04-8f1a-c74b-8dfc-a86489b2883e
Content: DXGKDDI_I2C_TRANSMIT_DATA_TO_DISPLAY (dispmprt.h) - Windows drivers
Content Source: wdk-ddi-src/content/dispmprt/nc-dispmprt-dxgkddi_i2c_transmit_data_to_display.md
Product: windows-hardware
Technology: windows-devices
GitHub Login: @lorihollasch
Microsoft Alias: loriwhip

@vnvsrikanth , thanks for asking. Sorry, but we cannot change the name of the SevenBitI2CAddress parameter on this page since that is how it was defined and released in dispmprt.h. The description - along with the spec - make it clear that it isn't actually 7 bits.


Create and deploy DIBBs storage account for state management

Background
We can't begin working with TF until we have our storage account and state elements ready to go. We need this before we begin work on rolling out the other elements of the DIBBs cluster.
Action requested
Create the storage account. This can be done manually or via a single-use TF script (see phdi-playground for this). The info then needs to be populated in any relevant TF scripts that already exist.
Acceptance Criteria

Storage account exists
Any TF scripts or GitHub variables that need to be updated are, in fact, properly updated.

Duplicate of #35.


⚠ MineVN Maven & Resource Pack has degraded performance

In 9a97775, MineVN Maven & Resource Pack (http://app.minevn.net/pack) experienced degraded performance:

HTTP code: 502
Response time: 7764 ms

Resolved: MineVN Maven & Resource Pack performance has improved in b9fa025.


Add record mouse press of Run button in Sourcereel

Currently only the pressing of the hotkey Shift-Enter is recorded, but clicking on Run button is not recorded.

Pull Request Test Coverage Report for Build 2443

1 of 5 (20.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.03%) to 34.999%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/components/sourcecast/Sourcereel.tsx
1
5
20.0%

Totals

Change from base Build 2440:
-0.03%

Covered Lines:
2174

Relevant Lines:
5513

💛  - Coveralls


Feature/2

Done #2

Coverage increased (+4.0%) to 91.736% when pulling 4713b8ab00f2705ebf68a58508c0c07c99f1b7a5 on feature/2 into 6f2a18c00ae851368196a1c104a67a0d66ad774b on master.

Coverage increased (+4.0%) to 91.736% when pulling 2b0601aea4dc9db74f4968adcb3f6bba6166b5bd on feature/2 into 6f2a18c00ae851368196a1c104a67a0d66ad774b on master.

Coverage increased (+4.0%) to 91.736% when pulling b5bafba8addbad0ba44f854f2d71ca7be84cf4df on feature/2 into 6f2a18c00ae851368196a1c104a67a0d66ad774b on master.


Trouble on Index creation. LSI is created instead of  GSI

Hi 👋  I would like to create a sparse Index (GSI). The partition key of the sparse index should be the same as partition key from the table.
const val SPARSE_INDEX = "sparse-index"

@DynamoDbBean
data class DynamoDbItem(
    @DynamoKtPartitionKey
    @DynamoKtSecondaryPartitionKey(indexNames = [SPARSE_INDEX])
    val id: String,

    @DynamoKtSecondarySortKey(indexNames = [SPARSE_INDEX])
    val isOpen: String = true.toString(),
)

For Testing we use an local aws dynamodb and creating the Tables and the Indices with the extensions function from your lib. https://github.com/oharaandrew314/dynamodb-kotlin-module/blob/e671b500625fefedbe97af9cffcc71ad8716aaec/src/main/kotlin/dev/andrewohara/dynamokt/AwsSdkExtensions.kt#L13-L38
On creating a table I got the following error:
java.util.concurrent.CompletionException: software.amazon.awssdk.services.dynamodb.model.DynamoDbException: Local Secondary indices are not allowed on hash tables, only hash and range tables (Service: DynamoDb, Status Code: 400, Request ID: 90307536-62ed-4371-834b-9dbede710e52)
	at software.amazon.awssdk.utils.CompletableFutureUtils.errorAsCompletionException(CompletableFutureUtils.java:65)

For me its not clear, why a LSI is here created. The Index should be a GSI.
Could you give me advice how to enforce a gsi here, please? (On production there is no problem with the GSI.)
Many Thanks in advance. 🙏

The TableSchema doesn't model the information required to create indices without assumptions.   See https://github.com/aws/aws-sdk-java-v2/issues/1771#issuecomment-613126000 This is why the original SDK completely omitted the feature to create indices until recently.  The only reason createTableWithIndices still exists in this library is because the feature was never implemented for the async version of the table.
The issue here is that without the detailed index information, createTableWithIndices can only guess how the indices are supposed to look, and in this case, it guesses wrong.  In this case, the workaround is to call DynamoDbAsyncTable.createTable(enhancedRequest: CreateTableEnhancedRequest), and specify the index definitions yourself.

Hi @oharaandrew314 thanks for your answer!
I understand that the creation is not part of this library. 👍
But maybe it would be good solution to enhance the Annotation DynamoKtSecondaryPartitionKey about the information if it should be a LSI or GSI ✌ For it seems the best place where to put this information.

To be clear, this library is just a plugin for the official Dynamo DB Enhanced SDK.  All it does is use a new set of kotlin-friendly annotations and reflection capabilities to generate a kotlin-friendly implementation of the official SDK's TableSchema.  The official TableSchema is what's missing the metadata, and it's what's used to create the table.  So adding the metadata to the annotations isn't good enough.
However, it may be possible to go above and beyond the interface of TableSchema, and provide a further enhanced createTable method with new metadata provided by the new annotations.
In the meantime, Http4k Connect is a pure-kotlin implementation of the AWS SDK with it's own DynamoDB mapper, and it already has these capabilities, since it relies on typesafe schemas rather than annotations.  This library only exists for those stuck with the official java SDK.  If that's not an issue for you, you may wish to check it out instead.
You can check out:
Examples
A Quick Intro Video by me


Redraw range line on value change

when i try to set a range value with jQuery the line in the range slider doesnt redraw.

You need to call MaterialSlider.change(value) against the slider node instead of changing the input value directly.

Also for future reference, please use StackOverflow for support. Using the material-design-lite and any other applicable tags to get the best support in implementing MDL in projects.

For a little extra clarification, this happens because programmatic changes to HTML elements don't trigger events, and therefore the component is unaware that its value changed.
Because of this, we provide an API for elements, which is accessed the way @Garbee described. See https://jsfiddle.net/Lzdez4s2/1/ for a similar situation.

wow thanks for the great and quick response!


Fixed spelling, grammatical and formatting errors, and removed empty code box.

Thanks @kjungwoo5. I think there's just one suggestion outstanding, then we're ready to go!


Nightlies are shown as available updates for beta5

Nightly builds of 4.5.0-0.okd have additional upgrades test - upgrades from beta5. This adds the nightly to available updates on beta5.
We should either:

configure channels in release controller or
disable this test

so that "stable" beta5 users would be notified only when beta6 is available

I accidentally consumed one of the nightlies; what's the recommended path to get back onto the betas?  Or am I facing a reinstall?

Ouch...
You can probably continue to consume nightlies as upgrades until GA.  As long as the GA release is on the upgrade path, you should be fine.

oc adm update --to-image can update to any release, regardless of tested path in the worst case

Seem to have successfully upgraded from 4.5.0-0.okd-2020-06-17-231259 to 4.5.0-0.okd-2020-06-29-110348-beta6 via:
oc adm upgrade --force --allow-explicit-upgrade --to-image='quay.io/openshift/okd:4.5.0-0.okd-2020-06-29-110348-beta6'


Use kubectl behaviours for KUBECONFIG outside the api-server and compose-controller

Apart from the API server and compose controller, the KUBECONFIG env-var is under the user's control, and may not be an explicit filename, but a list of files using a platform-specific separator.
So we only want to use clientcmd.ClientConfigLoadingRules.ExplicitPath or clientcmd.BuildConfigFromFlags (which uses the former) when dealing with an in-cluster service or when given an explicit --kubeconfig command line.
We can test this by ensuring every KUBECONFIG in the tests is a list of config files, including a non-existent file. This will pass using the k8s APIs for merged kubeconfig, but fails with a more naive API that tries to treat KUBECONFIG as a single file.
There isn't a bug report for this issue here, but it has shown up at https://github.com/docker/cli/issues/2334. https://github.com/docker/cli uses an affected API from this project (github.com/docker/compose-on-kubernetes/api.NewKubernetesConfig), that was not consumed or tested by any code in this repo. Part of this change uses this API in place of equivalent open-coded implementations, so we now have coverage of this API by dint of the e2e tests.

Because sometimes they're hard to find later, just the test change to use KUBECONFIG with : happily fails the CI run, when it hits stat /kind-config:/nonexistant-config-file: no such file or directory, which is the problem to be solved here.

The CI run for just the change to use NewKubernetesConfig passes. In this run, the test-changes shown failing earlier were reverted.

License check failures will be fixed by #170.

Hi! Thanks for your PR! Unfortunately we're no longer maintaining this repository so I will close this issue.


Use HTML5 validation with Action fields.

Putting the whole "how do I get a giant list of potential values" problem on the back burner, I think we should start re-evaluating this Pull Request for merge.
So far, I think required, min, max, step, minLength, and maxLength are pretty straight-forward.
The pattern attribute presents an issue.  The pattern attribute, as specified by HTML5, must include a JavaScript Regular Expression.  I don't think this makes as much sense for APIs.  For Siren, we could have a registry of valid regular expression types that can be represented and use a prefix/suffix to determine what's being used in the message.
Examples: pattern-pcre, pattern-java, pattern-js, pattern-python.
We may also want to consider adding readonly.
@uglymunky @ericelliott @apsoto @tompahoward Thoughts?

Sounds good and all for ignoring the giant list for now.  Probably goes without saying, but make sure they are optional attributes.
I'm not a fan of the idea of identifying the pattern's language, because it seems to push the servers implementation language preference to the client and possibly incur undue complication on client's implementation.  How would a javascript client support pattern-java, pattern-python, etc.
I could be mistaken, but some quick research I did tells me javascript regex'es are just a subset of other language regexes, so maybe it's an ok lowest common denominator.

The HTML5 spec declares JS the official regex pattern format for the web platform. I feel strongly that we should stick to that.
As the community shifts to universal apps, JS has become the defacto standard for inter-app and inter-device communication standards, and with wasm on the way, I predict all major app platforms will produce wasm bindings so that any of the top 10 languages can work with any of the other top 10 languages -- and the engine of inter-language communication will be essentially a JavaScript AST, which I believe will cement it as the defacto-way to communicate any type of code between app layers and tiers.
I don't see any good reason whatsoever to use any other regex spec.

We may also want to consider adding readonly

Agreed. I like that for things like csrf.

How do you feel about setting validations for things like: countries, postal codes, etc which have large mostly static lists of valid values?

If we support pattern, enums are automatically supported via US|FR|AU, etc..

RE: JS patterns
I have mixed feelings.  I've been bitten by this before.
For those using JavaScript Everywhere™, having only a JavaScript regular expression pattern is perfect.  The Siren ecosystem is much bigger than that.  Each client and each server implementation will need to figure out how to support JavaScript REs in order to take advantage of the feature.  JavaScript RE patterns won't be a strict subset for every RE engine.
The pattern-{engine} approach will work well in homogenous environments (such as all clients and servers using Boost.Regex), but I suppose if it's homogenous, they can just opt to bastardize the attribute and include non-JS-compatible REs.  It would also allow multiple pattern engine expressions to be represented for each field.  Whether that's a good design pattern or not is debatable.
Do you know of any good JavaScript Regular Expression parsers in other languages?  My guess is iOS could do something clever with JavaScriptCore.  Node.js and browser JavaScript are fine and dandy, of course.  What about Java, C#, Python, Ruby, Rust, Go, C, C++, etc.?

The Duktape JavaScript Regular Expression engine is the closest thing I've found.  Last I checked, it had a small footprint was deeply integrated into Duktape.
I had a small conversation about it here in June of 2014: https://github.com/svaarala/duktape/issues/12.

I know that Java, C#, C, and C++ frequently have JS language bindings and can parse the regex in an actual JS engine. There may also be libs to parse them in the native language, too.

For the record, when I developed h5Validate, we generated and parsed the Regex in PHP at Zumba Fitness.

I think the validation issue is more complex that it needs to be because of the overlap between how an input field is presented and how it is validated.
For example, min and max attributes contain presentation relevant information if the client wishes to present the field as a slider. However they obviously also provide validation relevant information.
The problem with using attributes like this for validation is that it quickly falls down when you want to do multi-field validation. e.g. the startDate field must be before the endDate field. As soon as you start heading down this path and exploring more complex scenarios, it quickly becomes apparent that a full blown programming language is required.
I suggest we limit the supported attributes so the server can provide just enough information to the client, trying to minimise/eliminate the amount of out-of-band information the client needs in order to make and appropriate decisions on how to present the field.
In regards to validation, we should use code on demand to provide the client with the logic for validating each field. The easiest way to support this is to include code for each field, which when executed with the field value returns either some sort of success or error response. Yeah, I know it's a bit vague; it needs design work.
The simplest approach is to make the code default to javascript, but it probably makes sense to support various languages, or to even provide a mechanism for the client to specify the type of code-on-demand that they Accept. e.g.,
Accept: application/vnd.siren+json+application/javascript, application/vnd.siren+json+application/x-php;q=0.9, application/vnd.siren+json;q=0.8

Thoughts?

In regards to validation, we should use code on demand to provide the client with the logic for validating each field. The easiest way to support this is to include code for each field, which when executed with the field value returns either some sort of success or error response. Yeah, I know it's a bit vague; it needs design work.

Absolutely agreed, re: code-on-demand. I created a super-set of Siren for just this reason.

The simplest approach is to make the code default to javascript, but it probably makes sense to support various languages, or to even provide a mechanism for the client to specify the type of code-on-demand that they Accept. e.g.,

It does not make sense to support other languages in the hypermedia type because JavaScript already supports other languages for you. You can even compile C, C++, C#, and a variety of other languages to JavaScript.
If we do support anything else, it should be wasm.

It does not make sense to support other languages in the hypermedia type because JavaScript already supports other languages for you.

Or we could make javascript the default.
IMO so long as we agree there are viable avenues that would allow us to support other languages if the need every arrises and we are not painting ourselves into a corner, then we can create that extension then. I think either language specific media types (for non-js) is a viable avenue if we ever need it.

It's a specification, so of course it needs to be open for extension. Adding wasm support (which we definitely should do) implies that we need to have a mechanism available to specify the language. =)

code on demand, is muddying the waters of the scope of this PR should be moved to another issue.  In addition I'd like to see multiple implementers take a shot at this (code on demand), see how it works in practice and share their findings instead of trying to find the solution to rule them all first.

@apsoto +1
This PR has nothing to do with code on demand.  Yes, we'll always need more validation requirements than those which can be expressed with a simple set of attributes.  Yes, code-on-demand can help with that.  But let's start here.
Right now, the only thing tripping us up is regular expression patterns.  We could just leave it as pattern and add a recommendation in the spec for implementers to use JavaScript-compatible regular expressions, though they are free to support whatever RE engine they desire.

@kevinswiber I like the pattern solution.  Recommend JS compatible regexes and call out the gotchas if you don't.

We could just leave it as pattern and add a recommendation in the spec for implementers to use JavaScript-compatible regular expressions

+1
One other typical validation is passing in two values that need to match (this is often done with passwords and emails).  I'm on the fence about wether we care about these use-case...

+1

@kevinswiber is JS compatible regexes to go?

+1 for the pattern solution (though additional HTML5 validation attributes would be nice too)
I do not believe that cross- or multi-field validation should be a concern of the Siren spec, as that type of validation is probably going to be an application-specific requirement, and could introduce a lot of complexity.
We use a strict implementation of Siren and have defined "supplemental" field data in our client (a JS web app), and merge this data with the corresponding client-side Siren field definition. Our initial thought was to add a link to an entity which would contain all the validation info (we do deliver the available options for a field with this strategy, however). However, that really divorces the field definition and validation definition. Given how one really depends on the other, I don't see why they shouldn't be mingled.

@kevinswiber is here anything one can do to move this PR forward? Note that with commit 75284efcb13582334017a3ee66edb5f1e4b65097 the original suggestion has been deleted.

Hi,
I follow this issue. With the HTML5 validation attributes it's possibile to compare two fields? I am in the classic case where i must indicate to the client the start date and the end date...


Prevent pseudo-headers appearing in incorrect contexts.

Resolves #510.
This prevents :status appearing in request header blocks and the various request pseudo-headers appearing in response header blocks.

A thought: we have a lot of repetitive tests in test_validate_headers.py. Would it be worth parametrising a bit further, maybe pulling out the validation method as a parameter to the test?

Heh, I tried. However, the two validation functions actually have different valid inputs: in particular, the inbound validation functions cannot handle unicode headers, while the outbound ones can. That means that you need to parametrize across both simultaneously, which py.test has very little in the way of nice APIs to do. 😞

Thanks for the review @alexwlchan! :sparkles:


Fix to git command

Thanks for contributing to fastlane! Before you submit your pull request, please make sure to check the following boxes:

[NA] Run bundle exec rspec from the subdirectory of each tool you modified. Alternatively, run rake test_all from the root directory.
[NA] Run bundle exec rubocop -a to ensure the code style is valid
[X] Read the Contribution Guidelines
[X] We currently don't accept new actions, please publish a plugin instead, more information in Plugins.md

Before submitting a pull request, we appreciate if you create an issue first to discuss the change :+1:
Fix to git command

Could you explain why this should be changed? Thanks

If command is used in form:
git clone <YOUR_GITHUB_USER> git@github.com:<YOUR_GITHUB_USER>/fastlane.git
then git utility tries to interpret the first <YOUR_GITHUB_USER> string as a repo reference and fails.
Output from machine:
DN:test admin$ uname -a
Darwin DN 15.6.0 Darwin Kernel Version 15.6.0: Thu Sep  1 15:01:16 PDT 2016; root:xnu-3248.60.11~2/RELEASE_X86_64 x86_64
DN:test admin$ git --version
git version 2.7.4 (Apple Git-66)
DN:test admin$ git clone GoodMirek git@github.com:GoodMirek/fastlane.git
fatal: repository 'GoodMirek' does not exist

While command as present in the pull request passes.

I'm not sure I'm following, I'll close this PR for now, as everyone can easily change the clone command 👍

I do not understand the chosen resolution. The command present in the doc
is clearly wrong.
On Thu, Dec 29, 2016, 21:55 Felix Krause<EMAIL_ADDRESS>wrote:

Closed #7447 https://github.com/fastlane/fastlane/pull/7447.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/fastlane/fastlane/pull/7447#event-907672252, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHcWNMX8NGAch0xwpCbT4_SVCxQJcUkCks5rNB4ugaJpZM4LLIxi
.

Argh, sorry, I misunderstood, PR is merged now. Sorry for the confusion.

Thanks for merging this.
On Fri, Dec 30, 2016, 00:46 Felix Krause<EMAIL_ADDRESS>wrote:

Argh, sorry, I misunderstood, PR is merged now. Sorry for the confusion.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/fastlane/fastlane/pull/7447#issuecomment-269711321,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHcWNJH5HiBeaIvR6A8-uSYMUcTEDNmZks5rNEY2gaJpZM4LLIxi
.


Design Patterns

Description

Type: Question

Question
First of all thank you for this fantastic tool, it has really helped me a lot to learn. Although a little bit intimidating when taking a first look at the code it's been a wonderful learning experience.
I'd like to know which design pattern is being followed here, it's the first time I see this folder organization with index.js referencing all the other scripts and the modularization in the server and in the client, I think it's fantastic and I'd like to learn more about building webapps with this patterns.
Thank you for your time and attention!

Hey. Welcome to the project. Glad you are enjoying it. I've been using it for a few months now and it is absolutely fantastic.
Maybe @chookending can speak more to the pattern. But I would just call it the separation of concerns into modules. Most of the time people don't take the care to maintain modularity when building a boilerplate.  They are much more interested in a proof of concept than a best practice.
Working with a high degree of modularity makes the initial architecture and download a a bit more cumbersome because code exists in a lot of places and you need to understand not only the code work but how it links together.
However once you are up to speed it makes understand where the code you need to write should go.  This helps keep things consistent across teams.

@serranoarevalo Welcome! :)
It's exactly as @caranicas explained!
I'm not sure what the design pattern is called either, it reminds me very much of the revealing module but on a folder level.
Using an index.js for each module or component exposes a public API of sorts, so that anything consuming that module could just require it like this:
import { SomeComponent } from 'path/to/module'; // Notice we don't need to go to index.js

It's useful to keep us mindful of what we actually want to expose to components outside this folder.
Also:
If you are interested in the folder structure organisation, there is also a discussion in this PR https://github.com/choonkending/react-webpack-node/pull/260.
Hopefully that helps!


/ignore or /filter command

It would be useful to be able to ignore /part /join /quit messages.

@nsjph good idea - I'll get something added for it.


error when submitting ID3A metadata via web

@vkuznet I get the following error:
'''
Web processing error: Unable to find schema for this records <schema /mnt/chessdata/web/schemas/ID3A.json, map 60 entries>, error=invalid data type for key=ReferenceEnergyScanNumber, value=0, type=int, expect=int32 <schema /mnt/chessdata/web/schemas/ID4B.json, map 47 entries>, error=record key 'GuardSlitHorizontalSize' is not known <schema /mnt/chessdata/web/schemas/lite.json, map 21 entries>, error=record key 'EnergyScan' is not known <schema /mnt/chessdata/web/schemas/ID1A3.json, map 41 entries>, error=record key 'EnergyFoil' is not known
'''
when I did the following:

populate fields using the ID3A schema on the webform
confirm all required fields are populated
hit "submit"

@wernersun , please commit ID3A.json file into repo and make sure that you check ReferenceEnergyScanNumber type according to the error it should be int32. I may either cast int type to int32 or we should have int32 in a schema. I can debug this once I'll get json schema file in place.

@vkuznet: PR created https://github.com/vkuznet/ChessDataManagement/pull/8

@ksg52 , please try again the issue should be fixed now.
@wernersun , please check ALL schemas as they contains plenty of errors. While I was debugging this issue I found at least three different issues with ID3A schema, please see my commits:

wrong type name, https://github.com/vkuznet/ChessDataManagement/commit/d207b7f76b35a1fb23f99144f2554f99c63f3262
wrong type, https://github.com/vkuznet/ChessDataManagement/commit/6fb4b0e2d2080de7285f67adfa9d13a0d0a34817
improper values for given type, e.g. if type is bool, then values should not contain list of strings (which looks like bool values), see https://github.com/vkuznet/ChessDataManagement/commit/0f00fa4ef3e48f7673da04f88a7563367d893864

Please do your home work of validating every aspect of the schema as debugging takes lots of time and I should not waste my type on mistakes which exists because you do not validate your schema.
So far, I'm closing this ticket as resolved. If you'll find new issue please open new ticket.

Thanks, Valentin. Sorry about the schema errors. Adding @kenygren, since the schemas were generated by the python script.
Regarding the bools, that is related to the question we discussed yesterday, for which I will open a separate issue.

The bool in dropdown is fixed too, i.e. default is not selected and if it is
mandatory key then web form will complain if user will not make a selection.
Just try it out before opening the ticket.
On  0, wernersun @.***> wrote:

Thanks, Valentin. Sorry about the schema errors. Adding @.***,
since the schemas were generated by the python script.
Regarding the bools, that is related to the question we discussed
yesterday, for which I will open a separate issue.
—
Reply to this email directly, [2]view it on GitHub, or [3]unsubscribe.
You are receiving this because you modified the open/close state.
Message ID:
@.***>
References

https://github.com/kenygren
https://github.com/vkuznet/ChessDataManagement/issues/7#issuecomment-1295059599
https://github.com/notifications/unsubscribe-auth/AAA6RUQS4DHHZWPXAVEKMY3WFPOFBANCNFSM6AAAAAARQL6I4E