 Loopio helps companies streamline and automate their RFI/RFP response process.
The information age is no longer a novel tomorrow; it’s firmly our collective today. To that end, the vast majority of this age’s employees, across industries and verticals, are knowledge workers. Their output is not a physical product but rather a brokerage of knowledge, data, or insight.
And yet, though we’ve been living and breathing knowledge and data for years now, many companies remain ill-equipped to deal with the challenges that accompany this new world of work.
If you think about traditional companies with traditional assets like cash, bonds, or real estate, you’d be hard-pressed to find everyday examples where strong companies mismanaged assets.
Few great financial companies of old hid money under the mattress; rather, they invested and diversified to yield returns. Few great agencies and firms sat on burdensome real estate; rather, they bought and sold and expanded and contracted to address the bottom line. And few great merchandise companies sat on product or accepted inefficient processes; rather, they refined and relaunched to address the market’s wants.
So why then do so few great knowledge-based companies treat their knowledge as the asset that it is?
This is a question I’ve struggled with for my entire career, and one which I’ve been trying to help companies address in recent years.
In my experience, modern companies treat knowledge as a second-class citizen. In the ongoing war for product and talent, knowledge has fallen by the wayside, to most companies’ detriment. And while the costs therein may not be as readily visible on the ledger as are other profit and loss metrics, poor knowledge management is as much a liability to the business as would be putting your entire leadership team on an aging propeller plane over the Atlantic in a thunderstorm.
I generally think that’s because the popularity of practices like lean and agile have distracted leaders from the value add that proper knowledge management can have.
This is, of course, because knowledge management is generally viewed as unsexy; it’s much like accounting: all business leaders know they need it, but few want to be the ones to own and solve for it. I think that’s because they don’t know how to execute a strategy around knowledge management nor can they quantify the ROI expected thereafter.
So what do we do, and what do we get out of it? Those are the questions we’re going to answer in this, the first of a two-part guest blog post series on #InTheLoop.
The Secret of Legend
There’s one sure-fire way to ensure that your company succeeds in both keeping and using its key knowledge: write it down.
Yep, that’s it. Blog post over. You’re welcome. No autographs or flash photography, please.
Facetious though my delivery may be, that really is the critical endeavor. Writing down and organizing your information is 95% of the battle.
With information neatly archived and categorized, there are two major benefits that are immediately realized:
- Your organization no longer has liability sitting inside the head of your talent, who are increasingly willing to leave your organization when something new and shiny comes along, which it will.
- Your organization will begin to have fewer cross-team communication issues.
As a business leader, the ROI of the “write it down” activity when framed in those terms should become immediately palpable, particularly in our current climate. People are leaving jobs faster than ever, and with the increasing pace of work, theage-old problem of cross-team communication is an age-old problem now exacerbated by the rise of digital and geographically-distributed teams.
Write Stuff Down… Properly and Organically
So how exactly do you action “write it down”? Do you simply ask everyone to literally write things down and enforce that no product or service can be delivered to market without that box being checked and vetted?
No. Instituting rigorous process like that will only add what your employees will instinctively see as “overhead”; and, even if they somehow get over that generally-insurmountable hurdle, simply having every employee write everything they do down will inevitably lead to something “data lake”-like which becomes mostly useless when it’s needed.
The trick to making that simple task work is to enable the business to do so properly and organically in a manner congruent with their business function.
Generally speaking, success in this endeavor looks like enabling the business function with tools that persist information naturally while primarily streamlining a natural business process. Consider the following:
- SalesForce or RelateIQ for Sales and Relationship knowledge
- Qvidian or Loopio for Pre-sales and RFP/RFI knowledge
- Zendesk or Desk for Customer Service and End-user FAQs
- JIRA or Pivotal Tracker for Product Development, Issue Tracking, and IT/Ops Auditing
- Slack or Hipchat for intra-team communication
- Google Drive or Dropbox for sharing large files
These are all examples of tools that provide excellent baked-in ways to have your business produce documentation, and to capture knowledge, without any needless overhead. With these types of aides in place, you’ll be generating key documentation without anyone touching a dreaded wiki or, worse, a revision-less, uncontrolled shared file server. Yuck.
If you already have these kinds of systems in place, then you’re off to a good start.
Empower The Org
Once you’ve baked in the process for capturing knowledge, or even if you already have those systems in place, there’s one more critical aspect that you need to invest in which you surely haven’t yet. I call them shepherds.
Inevitably, your systems will begin collecting data from disparate sources in the organization, and each team will know its own info best. As cross-team collaboration evolves to leverage the info in these tools for answers, there will come the need to ensure two things:
- The information in the systems is relevant, accurate, and up-to-date.
- There is only one single source of truth for any one data point.
Many companies have tried to appoint a single person for this role: a tech writer, an information clerk, or what have you. But in an organization of today’s world which evolves, and needs to evolve, with great and unending agility, that simply doesn’t scale.
Instead, employ the help of “shepherds”: people in the organization who hail from each function, are generally OCD about organization, and who can represent their team and shepherd their team’s data into green pastures of relevance, accuracy, and reliability.
Embrace The Push Back
Unless you have some strong knowledge management folk in your organization already, you will inevitably get some push back on this approach, particularly if you try to assign shepherds in each department. After all, this is net new and strange work with no obvious added benefit to those who haven’t participated in this kind of initiative before.
The key to uptake, then, is to communicate the same value prop to the business; make it a priority, a company goal. Integrate the process as you would a new company benefit program or major project. Give it top billing at a town hall. Make it central to bonuses. Integrate it directly into the company’s operations.
Every time I do this, I like to integrate it into the company’s culture. At one company, I invented a mascot and told an entertaining story, intertwined in actual company events, which sold in the value prop in a way that wasn’t so cut and dry. In another company, I demonstrated the value of the tool by way of a functional intra-office ping pong leaderboard example. In yet another, we were able to tie bonuses to participation.
Ultimately, establishing buy in can be easy, providing you treat the process as part of an essential business process. Don’t make it as painful as expense filing, but do make it as necessary.
Reap The ROI
With organic processes capturing data your teams are producing anyway, and with a few shepherds to help your organize lead itself to success, it’s very easy to start realizing some immediate return on your knowledge management investment.
People can start taking vacations more frequently. Departing employees, and more importantly those taking over for them, won’t be so overburdened with brain dumps and won’t be as acutely missed when questions are raised. Teams won’t struggle to get key info from key people who aren’t immediately accessible to them.
Your company’s knowledge is an asset, and once you treat it as such, you’ll begin to see just how valuable that asset is.
And when you can optimize your organization around that knowledge thereafter, the gains can be even more significant — but that’s the opportunity we’ll explore in the second part of the series.


FHQ Admin
Notification
Jeremy Rakestraw
accepted your invitation to join the team.
2 min ago
John Abraham
is now following you
2 days ago
Monaan Pechi
is watching your main repository
2 min ago
Jessica Caruso
accepted your invitation to join the team.
2 min ago
Github
Dribbble
Dropbox
Bitbucket
Mail chimp
John Abraham
Available
Account
Logout
Dashboard
Menu
Server Info
Users
Users Answers
Games
Quests
Quests Proposals
Mails
Orchestra
Useful Links
Knowledge Base
Settings
Sign-in (Only admin)
×
Email address
Password
Change setting
×
...
Info
×
...


Capture an area on the map
This example demonstrates how to take a snapshot of the map. It
specifies area to be captured with top/left and bottom/right view port
coordinates
Snapshot functionality belongs to the mapsjs-core
module of
the API. The capture
method of the H.Map
class
takes as an argument callback function that is executed when snapshot is
ready, instance of H.ui.UI
class to add the scale bar to the
output, and top/left (50,50)
-bottom/right
(500,200)
coordinates to specify the area of the map to
capture.


These are some of the webpages I have created:
This is a page that was made for my favourite band, Led Zeppelin, detailing their upcoming gigs and displaying some information and images of the band. I used HTML and CSS to build the pages content and style.
Led Zeppelin WebsiteThis is a page that was made to display information and images about one of my favourite animals, the cow. HTML and CSS were ued to build this page.
COWS!!This is a page that I created to simulate a news article, from headline to image to story. I used HTML and CSS to build the page and used Lorem Ipsum to fill in the text that acts as the story.
BREAKING NEWSThis is a webpage I created for a Private Island Resort of the coast of East Africa. The page was built using HTML and CSS.
ResortThis is a webpage for a Travel Agency that details what the agency offers and provides links. This site was built using HTML and CSS.
Happy TrailsBackground + Experience
Educiation
Jobs
I enjoy crafting anything from textiles on a hand loom to baskets and traditional woven trays called and Ateŋ
Sed sed libero a erat lacinia blandit. Maecenas sollicitudin dolor felis, non posuere ante maximus et. Donec arcu velit, tristique varius sapien eget, tincidunt pellentesque quam
Cras et odio libero. Duis in lobortis metus. Vivamus pellentesque lacus nec nisi ornare, ac pellentesque nibh convallis. Nam maximus dui a orci cursus bibendum.
Integer vitae cursus lorem. Integer ut quam et nisi faucibus euismod. Cras a ipsum elit. Nam ut mauris ut massa varius congue euismod sed nibh.


SweetFreeStuff.com
///////////////////////////////////////////
Free Mucinex Hot Tea Cold Relief at Rite Aid
Posted: 18 Nov 2014 11:28 AM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Through November 22, 2014 Rite Aid has 4ct. Mucinex Hot Tea Cold Relief on
sale for $6.99.  Enter your zipcode on the Rite Aid website to
double check the offer is available for your local store. Free []
The post Free Mucinex Hot Tea Cold Relief at Rite Aid appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Dawn Liquid Dish Soap at Meijer
Posted: 18 Nov 2014 11:08 AM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Sign in to mPerks, click “Coupons” and type in offer code “freedawn14? to
redeem. Free Dawn Liquid Dish Soap at Meijer
The post Free Dawn Liquid Dish Soap at Meijer appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Thinkbaby Sample Pack on 11/19 at 1PM EST
Posted: 18 Nov 2014 10:20 AM PST
http://feedproxy.google.com/&edburner&utm_medium=email
On Wednesday November 19th at 1pm EST, you could send one of: 1,000 sample
size bundles that includes award-winning safe sunscreen and shampoo 2,000
20% off online coupons for all Thinkbaby and Thinksport products Want to
receive one for yourself? Wish for it below and let your friends know! Free
Thinkbaby Sample Pack on []
The post Free Thinkbaby Sample Pack on 11/19 at 1PM EST appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Allure Free Stuff in December
Posted: 17 Nov 2014 11:20 PM PST
http://feedproxy.google.com/&edburner&utm_medium=email
The first 500 Allure readers to sign up at noon EST each day from December
1-4 will receive a free product! Allure Free Stuff in September
The post Allure Free Stuff in December appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Mens Health Magazine
Posted: 17 Nov 2014 10:21 PM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Free Subscription to Mens Health Magazine
The post Free Subscription to Mens Health Magazine appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Samples from PINCHme
Posted: 17 Nov 2014 10:00 PM PST
http://feedproxy.google.com/&edburner&utm_medium=email
There are new samples available at PINCHme! Log in or sign up for an
account to see which new free product samples you can request.
The post Free Samples from PINCHme appeared first on SweetFreeStuff.com.


--- title: Generative Base keywords: fastai sidebar: home_sidebar summary: "Base class for generative models" description: "Base class for generative models" nb_path: "nbs/09_generative_models.generative_base.ipynb" ---
GenerativeModel
is a base class that defines the functions a model needs to integrate with the MRL library


XAFSmass¶
- Release:
- Date:
Jun 06, 2023
- Authors:
Konstantin Klementiev (MAX IV Laboratory), Roman Chernikov (Canadian Light Source)
- License:
Open Source, MIT License
A program for calculating the mass of XAFS [X-ray Absorption Fine Structure] samples. The chemical formula parser understands parentheses and weight percentage, also in nested form. XAFSmassQt reports the quantity (weight, thickness or pressure) together with the expected height of the absorption edge.
Dependencies¶
numpy, pyparsing and matplotlib are required. Qt must be provided by either PyQt4, PyQt5 or PySide.
Get XAFSmass¶
XAFSmass is available as source distribution from PyPI or Github. The distribution archive also includes documentation.
Installation¶
Unzip the .zip file into a suitable directory and run python XAFSmassQt.py
.
On Windows, run pythonw XAFSmassQt.py
or give it a .pyw extension to
suppress the console window.
You may want to run python setup.py install
in order to put the XAFSmass
package to the standard location.
Citing XAFSmass¶
Please cite XAFSmass as: K. Klementiev and R. Chernikov, “XAFSmass: a program for calculating the optimal mass of XAFS samples”, J. Phys.: Conf. Ser. 712 (2016) 012008, doi:10.1088/1742-6596/712/1/012008.
Theoretical references used¶
The tabulated scattering factors are taken from Henke et al. (10 eV < E < 30 keV) [Henke], Brennan & Cowan (30 eV < E < 509 keV) [BrCo] and Chantler (11 eV < E < 405 keV) [Chantler].
Note
The tables of f’’ factors consider only photoelectric cross-sections. The tabulation by Chantler can optionally have total absorption cross-sections. This option is enabled by selecting the data table ‘Chantler total (NIST)’.
http://henke.lbl.gov/optical_constants/asf.html B.L. Henke, E.M. Gullikson, and J.C. Davis, X-ray interactions: photoabsorption, scattering, transmission, and reflection at E=50-30000 eV, Z=1-92, Atomic Data and Nuclear Data Tables 54 (no.2) (1993) 181-342.
http://www.bmsc.washington.edu/scatter/periodic-table.html ftp://ftpa.aps.anl.gov/pub/cross-section_codes/ S. Brennan and P.L. Cowan, A suite of programs for calculating x-ray absorption, reflection and diffraction performance for a variety of materials at arbitrary wavelengths, Rev. Sci. Instrum. 63 (1992) 850-853.
http://physics.nist.gov/PhysRefData/FFast/Text/cover.html http://physics.nist.gov/PhysRefData/FFast/html/form.html C. T. Chantler, Theoretical Form Factor, Attenuation, and Scattering Tabulation for Z = 1 - 92 from E = 1 - 10 eV to E = 0.4 - 1.0 MeV, J. Phys. Chem. Ref. Data 24 (1995) 71-643.
Usage¶
Chemical formula parser¶
The parser understands chemical elements, optionally followed by atomic quantities or weight percentages. A group of atoms can be enclosed in parentheses and assigned a common quantity or wt%. Some examples are given above the edit line. For example, Cu%1Zn%1((Al2O3)%10SiO2) means 1 wt% of Cu and 1 wt% of Zn in an aluminosilicate matrix composed of 10 wt% of alumina in silica.
For the search of an unknown elemental concentration, give x to the element of interest.
Calculation of mass and absorption step for powder samples¶
Note
You typically do not need the calculated values at exactly the edge position but rather at an energy somewhere above it. The list of edges offers the edge positions plus 50 eV. You are free to specify any energy within the range of the selected tabulation.
The most typical application is the calculation of the mass of a powder sample. The optimal optical sample thickness μd depends on the absorption levels selected for the ionization chambers (see below). Typically, μd is between 2 and 3 (e.g. for a 17.4% absorption level for the 1st chamber and a 50% level for the 2nd chamber, the optimal thickness is 2.42). However, if you get the absorption step > 1.5 (reported by the drop-down list “absorptance step = “), it is recommended to reduce the sample mass to avoid the potential thickness effect due to possible inhomogeneity in the wafer. If your sample is diluted and you get a very low absorption step, do not try to make the wafer thicker hoping that you will get better spectra – you will not: the optimal thickness gives the best signal-to-noise ratio (it is in this sense optimal). You can only try to measure your absorption spectra with another registration technique: in fluorescence or electron yield modes.
Calculation of thickness and absorption step for samples with known density¶
Here you can calculate the thickness of the sample with known density (usually, a foil). Commercial foils are highly homogeneous in thickness, so that you may ignore large step jumps and pay attention to the total μd only.
Calculation of gas pressure for ionization chambers¶
Caution
For nitrogen, do not forget the 2: N2, not just N!
Start with the 2nd ionization chamber (IC). If a reference foil is placed between the 2nd and the 3rd IC, the fraction of x-rays absorbed by the 2nd IC is usually set to 50%. If the reference foil is not needed, one can select the total absorption (100%). For these two cases the optimal absorption of the 1st IC at a certain μd is found from the figures above showing the levels of signal-to-noise ratio.
For exploring mixtures of several gases, give the gases in parentheses, e.g. as (Ar)(N2). The corresponding number of sliders will appear that define partial pressures. The program will calculate the molar weight of each gas and update the chemical formula and the total attenuation.
Calculation of an unknown elemental concentration¶
Case 1: You know the composition of the matrix¶
You need an absorption spectrum taken without the sample (empty spectrum) but with the same state of the ionization chambers. You then subtract it from the spectrum of the sample, e.g. in VIPER, and get a real (i.e. not vertically shifted) absorption coefficient. Determine the value of μd above the edge (μTd), the edge jump (Δμd) and its uncertainty (δμd). Specify the chemical formula with x.
Case 2: You know the sample mass and area¶
Determine the edge jump (Δμd). For the pure element find such a value for μTd that the absorption step in the pull-down list be equal to your experimental Δμd. This will give you the mass of the element of interest. Just divide it by the total mass to get the weight percentage.
Finding the scattering factors f’’¶
If you need to know the scattering factor f’’ at different energies and/or its jump at an edge (Δf’’), XAFSmass provides a graphical tool for this.
For example, you may need these values to determine the composition of a binary compound if you have the experimental edge heights at two edges. The absorption step Δμd at an absorption edge of energy E is proportional to Δf’’ν/E, where ν is the amount of (resonantly) absorbing atoms in mole. Hence, the atomic ratio of two elements in the same sample is \(\nu_A/\nu_B = (\Delta\mu d)_A/(\Delta\mu d)_B\cdot[\Delta f_B'' /\Delta f_A'' \cdot E_A/E_B]\). For binary compounds \({\rm A}_x{\rm B}_{1-x}\) the concentration \(x\) is calculated as \(x = (\nu_A/\nu_B)/[1+(\nu_A/\nu_B)]\).


---
layout: default
title: Activity-dependent transcriptomic programs for neuronal activation
---
Activity-dependent transcriptomic programs
for neuronal activation
I am identifying the transcriptomic programs linked to immediate early gene activation in the primate cortex implementing targeted Patch-Seq techniques.


The Idea
The main purpose of this website is to be a tool to help you in your self-knowledge journey. Of course, in the mean time we will learn a bit of Tarot and maybe you get interested in other alike subjects.
You will find out how Mythologies, Religions, Kabbalah, Astrology, Alchemy and Tarot are so closely related.  And I hope it can shed so much light into your mind as you need.
The Author
Hi!
Thank you very much for using this website! I hope the Tarot may enlight your mind. I'm Almir Paulo. I really like tarot and other esoteric subjects, but actually I am a programmer and I probably have other stuff you may like. You know, my job is to create softwares to make your life better and easier check it out.
Contribute
I'm sorry if this ads are bothering you. But, hey I think I deserve some money here, right? 😜 So, could you please consider to turn off your adblocker while using this site? Come on... you can do that for me! I have never ask you anything!
If you are willing to spend some money to say "thank you", I would appreciate if you could contribute at the button below.


A port is a maritime facility which may comprise one or more wharves where ships may dock to load and discharge passengers and cargo. Although usually situated on a sea coast or estuary, some ports, such as Hamburg, Manchester and Duluth, are many miles inland, with access to the sea via river or canal. Because of their roles as a port of entry for immigrants many port cities such as London, New York, Shanghai, Los Angeles, Singapore and Vancouver have experienced dramatic multi-ethnic and multicultural changes.[1]
Whenever ancient civilisations engaged in maritime trade, they tended to develop sea ports. One of the world's oldest known artificial harbors is at Wadi al-Jarf on the Red Sea.[2]


;
HTTP Movies - Stretch Assignment
Instructions
- Fork this repository, then clone your fork.
- Run
yarn
to download dependencies.
- Run the server using
yarn start
or node server.js
.
- In a separate terminal cd into the
client
folder and run yarn install
to download dependencies.
- Still inside the
client
folder run yarn start
to run the client application.
Part 1 - Updating A Movie:
- Add a route at the path
/update-movie/:id
- Create a component with a form to update the chosen movie
- Add a button in the movie component that routes you to your new route with the movies’s id as the URL param
- The form should make a PUT request to the server when submitted
- When the call comes back successfully, reset your form state and route the user to
/movies
where they will see the updated movie in the list
Movie object format:
{
id: 5,
title: 'Tombstone',
director: 'George P. Cosmatos',
metascore: 89,
stars: ['Kurt Russell', 'Bill Paxton', 'Sam Elliot'],
}
Part 2 - Deleting A Movie:
- Add a delete button in the movie component that makes a DELETE request
- When the call comes back successfully, route the user to
/movies
where they will see the updated movie list without the deleted movie
Part 3 (Stretch) - Adding A Movie:
- Add a route at the path
/add-movie
- Create a component with a form to add a new movie
- Each created movie should have the following format (notice the array of strings - this will test your JS skills, so work through it methodically)
- The form should make a POST request to the server when submitted
- When the call comes back successfully, reset your form state and route the user to
/movies
Movie object format:
{
id: 5,
title: 'Tombstone',
director: 'George P. Cosmatos',
metascore: 89,
stars: ['Kurt Russell', 'Bill Paxton', 'Sam Elliot'],
}
Stretch Problem
- See Part 3 above (Adding movies with a POST request)
- Style the app!


Preparation time
less than 30 mins
Cooking time
less than 10 mins
Serves
Serves 2
Here’s a fabulous spring brunch dish for two. Simple and delicious.
Add 200-300ml/7-10fl oz water to a pan with the butter. Bring up to the boil, drop in the ham and warm through. Once the volume of liquid has reduced by half and has started to emulsify, add the asparagus and carefully remove the ham. Cook the asparagus for one minute in the emulsified liquor.
Add the chopped parsley at the end. Keep warm.
Heat the oil in a deep fat fryer to 180C/350F, or heat the oil in a heavy-based pan until a small piece of bread sizzles and goes brown when dropped into the oil. (Caution: hot oil can be dangerous. Do not leave unattended.)
Cook the potato strips in boiling water until soft. Drain and dry the potatoes. Put the chips into the deep fat fryer and cook until crisp.
Meanwhile, heat a small frying pan and add the oil. Once hot, add the eggs and fry to your liking.
To serve, put the warm ham onto each of two serving plates, and pile the asparagus next the ham. Taste the ham cooking sauce and season with salt and pepper as necessary. Spoon the sauce over the ham and asparagus and top with a fried egg and a small pile of chips.


{% extends 'base.html' %} {% block title %}Home{% endblock %} {% block status1 %} active {% endblock %} {% block content %}
Ballzzz is simply Ballz on steroids. Powered by Tkinter and Flask.
Check out the project on GitHub!


Next: Internal error codes, Previous: Error Macros, Up: Error methods macros and codes [Contents][Index]
This section lists the external error codes. These are the only error codes that users of the Libmarpa external interface should ever see. Internal error codes are in their own section (Internal error codes).
No error condition.
The error code is initialized to this value.
Methods that do not result in failure
sometimes reset the error code to MARPA_ERR_NONE
.
Numeric value: 0.
Suggested message: "No error".
A separator was specified for a sequence rule, but its ID was not that of a valid symbol. Numeric value: 6. Suggested message: "Separator has invalid symbol ID".
A tree iterator is positioned before the first tree,
and the tree iterator was specified in a context where
the tree iterator must be positioned at or after
the first tree.
A newly created tree is positioned before the first
tree.
To position a newly created tree iterator to the first tree
use the
marpa_t_next()
method.
Numeric value: 91.
Suggested message: "Tree iterator is before first tree".
A “counted” symbol was found that is also a nullable symbol. A “counted” symbol is one that appears on the RHS of a sequence rule. If a symbol is nullable, counting its occurrences becomes difficult. Questions of definition and problems of implementation arise. At a minimum, a sequence with counted nullables would be wildly ambigious.
Sequence rules are simply an optimized shorthand for rules that can also be written in ordinary BNF. If the equivalent of a sequence of nullables is really what your application needs, nothing in Libmarpa prevents you from specifying that sequence with ordinary BNF rules.
Numeric value: 8. Suggested message: "Nullable symbol on RHS of a sequence rule".
This error indicates an attempt to add a BNF rule that is a duplicate of a BNF rule already in the grammar. Two BNF rules are considered duplicates if
Duplication of sequence rules, and duplication between BNF rules and sequence rules, is dealt with by requiring that the LHS of a sequence rule not be the LHS of any other rule.
Numeric value: 11. Suggested message: "Duplicate rule".
This error indicates an attempt to add a duplicate token. A token is a duplicate if one already read at the same earleme has the same symbol ID and the same length. Numeric value: 12. Suggested message: "Duplicate token".
This error code indicates that an implementation-defined limit on the number of Earley items per Earley set was exceeded. This limit is different from the Earley item warning threshold, an optional limit on the number of Earley items in an Earley set, which can be set by the application.
The implementation-defined limit is very large, at least 500,000,000 Earley items. An application is unlikely ever to see this error. Libmarpa’s use of memory would almost certainly exceed the limit imposed by the application environment before this error occurs. Numeric value: 13. Suggested message: "Maximum number of Earley items exceeded".
A negative event index was specified. That is not allowed. Numeric value: 15. Suggested message: "Negative event index".
An non-negative event index was specified, but there is no event at that index. Since the events are in sequence, this means it was too large. Numeric value: 16. Suggested message: "No event at that index".
The grammar has a cycle. Parsing using a grammar that contains a cycle is deprecated. See Cycles. Numeric value: 17. Suggested message: "Grammar has cycle".
This error indicates that Libmarpa was incorrectly built. Libmarpa was compiled with headers that do not match the rest of the code. The solution is to find a correctly built Libmarpa. Numeric value: 98. Suggested message: "Internal error: Libmarpa was built incorrectly"
The Libmarpa base grammar is in a “not ok” state. Currently, the only way this can happen is if Libmarpa memory is being overwritten. Numeric value: 29. Suggested message: "Marpa is in a not OK state".
This error code indicates that the token symbol is an inaccessible symbol — one that cannot be reached from the start symbol. Since the inaccessibility of a symbol is a property of the grammar, this error code typically indicates an application error.
Numeric value: 18. Suggested message: "Token symbol is inaccessible".
A function was called that takes a boolean argument, but the value of that argument was not either 0 or 1. Numeric value: 22. Suggested message: "Argument is not boolean".
The location (Earley set ID) is not valid. It may be invalid for one of two reasons:
For users of input models other than the standard one, the term “location”, as used in association with this error code, means Earley set ID or Earley set ordinal. In the standard input model, this will always be identical with Libmarpa’s other idea of location, the earleme.
Numeric value: 25. Suggested message: "Location is not valid".
A start symbol was specified, but its symbol ID is not that of a valid symbol. Numeric value: 27. Suggested message: "Specified start symbol is not valid".
A method was called with an invalid assertion ID. This is a assertion ID that not only does not exist, but cannot exist. Currently that means its value is less than zero. Numeric value: 96. Suggested message: "Assertion ID is malformed".
A method was called with an invalid rule ID. This is a rule ID that not only does not exist, but cannot exist. Currently that means its value is less than zero. Numeric value: 26. Suggested message: "Rule ID is malformed".
A method was called with an invalid symbol ID. This is a symbol ID that not only does not exist, but cannot exist. Currently that means its value is less than zero. Numeric value: 28. Suggested message: "Symbol ID is malformed".
There was a mismatch in the major version number between the requested version of libmarpa, and the actual one. Numeric value: 30. Suggested message: "Libmarpa major version number is a mismatch".
There was a mismatch in the micro version number between the requested version of libmarpa, and the actual one. Numeric value: 31. Suggested message: "Libmarpa micro version number is a mismatch".
There was a mismatch in the minor version number between the requested version of libmarpa, and the actual one. Numeric value: 32. Suggested message: "Libmarpa minor version number is a mismatch".
A non-negative Earley set ID (also called an Earley set ordinal) was specified, but there is no corresponding Earley set. Since the Earley set ordinals are in sequence, this means that the specified ID is greater than that of the latest Earley set. Numeric value: 39. Suggested message: "Earley set ID is after latest Earley set".
The grammar is not precomputed, and attempt was made to do something with it that is not allowed for unprecomputed grammars. For example, a recognizer cannot be created from a grammar until it is precomputed. Numeric value: 34. Suggested message: "This grammar is not precomputed".
The application attempted to create a bocage from a recognizer with no parse tree. Numeric value: 41. Suggested message: "No parse".
A grammar that has no rules is being used in a way that is not allowed. Usually the problem is that the user is trying to precompute the grammar. Numeric value: 42. Suggested message: "This grammar does not have any rules".
The grammar has no start symbol, and an attempt was made to perform an operation that requires one. Usually the problem is that the user is trying to precompute the grammar. Numeric value: 43. Suggested message: "This grammar has no start symbol".
A method was called with an assertion ID that is well-formed (a non-negative integer), but the assertion does not exist. Numeric value: 97. Suggested message: "No assertion with this ID exists".
A method was called with a rule ID that is well-formed (a non-negative integer), but the rule does not exist. Numeric value: 89. Suggested message: "No rule with this ID exists".
A method was called with a symbol ID that is well-formed (a non-negative integer), but the symbol does not exist. Numeric value: 90. Suggested message: "No symbol with this ID exists".
An attempt was made to read a token using marpa_r_alternative
,
but no tokens were expected at this earleme location.
This can only happen in alternative input models.
See marpa_r_alternative().
Numeric value: 44. Suggested message: "No token is expected at this earleme location".
This error occurs in situations where a rule is required to be a sequence, and indicates that the rule of interest is, in fact, not a sequence.
Numeric value: 99. Suggested message: "Rule is not a sequence".
This error occurs only if LHS terminals feature is in use. The LHS terminals feature is deprecated. See LHS terminals. Numeric value: 49. Suggested message: "A symbol is both terminal and nulling".
The Marpa order object has been frozen. If a Marpa order object is frozen, it cannot be changed.
Multiple tree iterators can share a Marpa order object, but that order object is frozen after the first tree iterator is created from it. Applications can order an bocage in many ways, but they must do so by creating multiple order objects.
Numeric value: 50. Suggested message: "The ordering is frozen".
The parse is exhausted. Numeric value: 53. Suggested message: "The parse is exhausted".
The parse is too long. The limit on the length of a parse is implementation dependent, but it is very large, at least 500,000,000 earlemes.
In the standard input model, Libmarpa’s use of memory would almost certainly exceed the limit imposed by the application environment before this error could occur. If an application sees this error, it almost certainly using one of the non-standard input models.
In the non-standard input models, this message will occur most often because of an attempt to add a single extremely long token, perhaps as a result of an application error. It is also possible this error condition will occur after the input of a large number of long tokens.
Numeric value: 54. Suggested message: "This input would make the parse too long".
In a method that takes pointers as arguments,
one of the pointer arguments is NULL
,
in a case where that is not allowed.
One such method is marpa_r_progress_item()
.
Numeric value: 56.
Suggested message: "An argument is null when it should not be".
An attempt was made to use a precomputed grammar in a way that is not allowed. Often this is an attempt to change the grammar. Nearly every change to a grammar after precomputation invalidates the precomputation, and is therefore not allowed. Numeric value: 57. Suggested message: "This grammar is precomputed".
No recognizer progress report is currently active,
and an action has been attempted that
requires the progress report to be active.
One such action would be a
marpa_r_progress_item()
call.
Numeric value: 59.
Suggested message: "No progress report has been started".
The progress report is “exhausted” — all its items have been iterated through. Numeric value: 58. Suggested message: "The progress report is exhausted".
A symbol or rule rank was specified that was less than an implementation-defined minimum. Implementations will always allow ranks in the range between -500,000,000 and 500,000,000. Numeric value: 85. Suggested message: "Rule or symbol rank too low".
A symbol or rule rank was specified that was greater than an implementation-defined maximum. Implementations will always allow ranks in the range between -500,000,000 and 500,000,000. Numeric value: 86. Suggested message: "Rule or symbol rank too high".
The recognizer is not accepting input, and the application has attempted something that is inconsistent with that fact. Numeric value: 60. Suggested message: "The recognizer is not accepting input".
The recognizer has not been started. and the application has attempted something that is inconsistent with that fact. Numeric value: 61. Suggested message: "The recognizer has not been started".
The recognizer has been started. and the application has attempted something that is inconsistent with that fact. Numeric value: 62. Suggested message: "The recognizer has been started".
The index of a RHS symbol was specified, and it was negative. That is not allowed. Numeric value: 63. Suggested message: "RHS index cannot be negative".
A non-negative index of RHS symbol was specified, but there is no symbol at that index. Since the indexes are in sequence, this means the index was greater than or equal to the rule length. Numeric value: 64. Suggested message: "RHS index must be less than rule length".
An attempt was made to add a rule with too many right hand side symbols. The limit on the RHS symbol count is implementation dependent, but it is very large, at least 500,000,000 symbols. Libmarpa’s use of memory would almost certainly exceed the limit imposed by the application environment before this error could occur. Numeric value: 65. Suggested message: "The RHS is too long".
The LHS of a sequence rule cannot be the LHS of any other rule, whether a sequence rule or a BNF rule. An attempt was made to violate this restriction. Numeric value: 66. Suggested message: "LHS of sequence rule would not be unique".
The start symbol is not on the LHS on any rule. That means it could never match any possible input, not even the null string. This is likely to be a mistake in writing the grammar, which can be fixed by rewriting the grammar. Numeric value: 73. Suggested message: "Start symbol not on LHS of any rule".
An attempt was made to use a symbol in a way that requires it to be set up for completion events, but the symbol was not set up for completion events. This error can occur when the application attempts to activate a completion event in the recognizer for a symbol that is not set up as a completion event. Numeric value: 92. Suggested message: "Symbol is not set up for completion events".
An attempt was made to use a symbol in a way that requires it to be set up for nulled events, but the symbol was not set up for nulled events. This error can occur when the application attempts to activate a nulled symbol event in the recognizer for a symbol that is not set up as a nulled event. Numeric value: 93. Suggested message: "Symbol is not set up for nulled events".
An attempt was made to use a symbol in a way that requires it to be set up for prediction events, but the symbol was not set up for prediction events. This error can occur when the application attempts to activate a prediction event in the recognizer for a symbol that is not set up as a prediction event. Numeric value: 94. Suggested message: "Symbol is not set up for prediction events".
Unvalued symbols are a deprecated Marpa feature,
which may be avoided with
the
marpa_g_force_valued()
method.
An unvalued symbol may take on any value,
and therefore a symbol that is unvalued at some points
cannot safely to be used to contain a value at
others.
This error indicates that such an unsafe use is
being attempted.
Numeric value: 74.
Suggested message: "Symbol is treated both as valued and unvalued".
An attempt was made to change the terminal status of a symbol to a different value after it was locked. Numeric value: 75. Suggested message: "The terminal status of the symbol is locked".
A token was specified whose symbol ID is not a terminal. Numeric value: 76. Suggested message: "Token symbol must be a terminal".
A token length was specified that is less than or equal to zero. Zero-length tokens are not allowed in Libmarpa. Numeric value: 77. Suggested message: "Token length must greater than zero".
The token length is too long. The limit on the length of a token is implementation dependent, but it is at least 500,000,000 earlemes. Libmarpa’s use of memory would almost certainly exceed the limit imposed by the application environment before this error could occur. Numeric value: 78. Suggested message: "Token is too long".
A Libmarpa parse tree iterator is “exhausted”, that is, it has no more parse trees. Numeric value: 79. Suggested message: "Tree iterator is exhausted".
A Libmarpa tree is “paused”
and an operation was attempted that
is inconsistent with that fact.
Typically, this operation will be
a call of the
marpa_t_next()
method.
Numeric value: 80.
Suggested message: "Tree iterator is paused".
An attempt was made to read a token where a token with that symbol ID is not expected. This message can also occur when an attempt is made to read a token at a location where no token is expected. Numeric value: 81. Suggested message: "Unexpected token".
The start symbol is unproductive. That means it could never match any possible input, not even the null string. This is likely to be a mistake in writing the grammar, which can be fixed by rewriting the grammar. Numeric value: 82. Suggested message: "Unproductive start symbol".
The valuator is inactive in a context where that should not be the case. Numeric value: 83. Suggested message: "Valuator inactive".
Unvalued symbols are a deprecated Marpa feature,
which may be avoided with
the
marpa_g_force_valued()
method.
See marpa_g_force_valued().
This error code
indicates that the valued status of a symbol is locked,
and an attempt was made
to change it to a status different from the
current one.
Numeric value: 84.
Suggested message: "The valued status of the symbol is locked".
An attempt was made to do something with a nulling
symbol that is not allowed.
For example,
the ID of a nulling symbol cannot be an argument
to
marpa_r_expected_symbol_event_set()
,
because it is not possible to create an “expected symbol” event
for a nulling symbol.
Numeric value: 87.
Suggested message: "Symbol is nulling".
An attempt was made to do something with an unused symbol that is not allowed.
An “unused” symbol is a inaccessible or unproductive symbol.
For example,
the ID of a unused symbol cannot be an argument
to
marpa_r_expected_symbol_event_set()
,
because it is not possible to create an “expected symbol” event
for an unused symbol.
Numeric value: 88.
Suggested message: "Symbol is not used".
Next: Internal error codes, Previous: Error Macros, Up: Error methods macros and codes [Contents][Index]


| DOSE: |
0.5 cups |
oral |
Kava |
(tea) |
Having heard conflicting reports about Kava, I went to my local health-food shop and bought an ounce or so of unprocessed root for a buck and change. It didn't seem anything special, and so wound up sitting in my generic herb chest for a week and a half, untouched.
Nursing a flat tire, I returned home from work this morning in a rather foul mood. After changing the tire in my driveway while my wife and daughter rushed me (they were already running late and needed the car), I figured I would take advantage of my agitation and anxiety and put the Kava to the test.
I pulverized 1/2 cup of raw Kava root in a mortar and pestal, and added it to 2 cups of hot (around 140 degrees) water, mixed it in a blender for a few minutes, and then added 1 cup cold whole milk and blended some more. I strained it through a nylon mesh, added a packet of instant hot-cocoa powder, and blended it again.
9:00 - Okay, so I've got an evil smelling milkshake. I've heard horror stories about kava's taste. Here goes nothing, down the hatch.
9:01 - Hmm. It's not that bad. It has a very distinctive acrid taste, but it certainly isn't unpalatable.
9:02 - Hey, it really does make your tongue and lips numb.
9:03 - Second cup. Numb tastebuds do not seem to temper the flavor. I'm actually feeling more anxious now than I did before the first cup, prolly subconscious concerns about liver damage. lol
9:10 - Okay, I definitely feel a little 'buzzed'. Nothing remarkable, somewhat akin to a two-beers-at-a-party lightheadedness. Not very anxious anymore, although a little itchy. I'll attribute it to a psychosomatic response to M. Grieve's reference to 'leperous sores'. :0
9:20 - Feeling pretty good. Listening to some funky music and digging it. Not too concerned about trying to come up with money for a new tire for the car, and the problems I had at work last night seem minor and unimportant. Noticing a definite perspective shift.
9:40 - Well, right about now I'm wondering why I'm sitting here online when I could be outside in the sunshine. I've decided to take a nice walk in the forest, and enjoy my day.
10:55 - It's a really beautiful day. I just came back from a very rewarding circle meditation, and am contented and peaceful. I stopped to watch a woodpecker for a while, and just know that he had stopped to watch me; for a moment, our minds were in the same place. It was nice.
11:10 - I'm feeling very sleepy- not doped-up-wanna-get-to-bed tired, but pleasantly drowsy. I know I'm going to sleep very well, which is surprising considering what a foul mood I was in just over 2 hours ago.
I would have to say that my first Kava experience has been pretty positive. I don't think I'll find myself quaffing it regularly, but it has certainly found itself a place among my more respected herbs. It's a great thing to have on hand when I need a gentle push in the right direction, and nothing more. :)
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


WITNESS LIST Government Organization Committee May 2, 2005 - 1:30P HB 1015 Registering, but not testifying: For: Burney, PhD., Paul Psychology (Texas Psychological Association), Conroe, TX White, David Executive Director (Texas Psychological Association), Austin, TX On: Aerne, Melissa Policy Analyst (Sunset Commission), Austin, TX Lee, Sherry Executive Director (Texas State Board of Examiners of Psychologists), Austin, TX HB 1155 Registering, but not testifying: For: Hooser, Greg Attorney (Texas Dietetic Association), Austin, TX McCarthy, Peter Doctor of Naturopathy (Texas Complementary and Alternative Medical Association), San Antonio, TX Rodgers, Samuel Naturopathic Herbalist (Self), San Antonio, TX On: Peterson, Debbie Manager (Department of State Health Services- Professional Licensing), Austin, TX Trost, Amy Policy Analyst (Sunset Commission), Austin, TX HB 1820 Registering, but not testifying: On: Thomas, Zindia Attorney (Office of the Attorney General), Austin, TX HB 2274 Registering, but not testifying: On: Hartman, Lori Policy Analyst (Sunset Advisory Commission), Austin, TX Torres, George Assistant VP for Congressional/ Legislative Relations (Texas Guranteed Student Loan Corporation), Austin, TX HB 2377 Registering, but not testifying: For: Gonzalez, Daniel Director of Legislative Affairs (Texas Association of Realtors), Austin, TX On: Duncan, James S. Commissioner (Texas Building and Procurement Commission), Houston, TX Jones, J. R. (Bob) Commissioner (Texas Building and Procurement Commission), Houston, TX HB 2379 Registering, but not testifying: On: Duncan, James Commissioner (Texas Building and Procurement Commission), Houston, TX Jones, J. R. (Bob) Commission (Texas Building and Procurement Commission), Houston, TX SB 452 Registering, but not testifying: For: Whalen, Ken Executive Vice President (Texas Daily Newspaper Association/ Texas Press Association), Austin, TX On: Duncan, James S. Commissioner (Texas Building and Procurement Commissioner), Houston, TX Haden, June Assistant Attorney General- Open Records Division (Office of the Attorney General), Austin, TX Jones, J. R. (Bob) Commissioner (Texas Building and Procurement Commission), Houston, TX Schloss, Hadassah Open Records Administrator (TBPC and the Open Records Steering Committee), Austin, TX Simpson, Greg Assistant Attorney General- Open Records Division (Office of the Attorney General), Austin, TX


To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video


import json
from typing import Any, Callable, List
import httpretty
import pytest
import pytz
from dialogy.parser.text.entity import DucklingParser
from dialogy.types.entity import (
NumericalEntity,
PeopleEntity,
TimeEntity,
TimeIntervalEntity,
)
from dialogy.workflow import Workflow
from tests.parser.text.entity import config
def request_builder(
expected_response, response_code=200
) -> Callable[[Any, Any, Any], List[Any]]:
header = "application/x-www-form-urlencoded; charset=UTF-8"
def request_callback(request, _, response_headers) -> List[Any]:
content_type = request.headers.get("Content-Type")
assert (
content_type == header
), f"expected {header} but received Content-Type: {content_type}"
return [response_code, response_headers, json.dumps(expected_response)]
return request_callback
@httpretty.activate
def test_duckling_api_success() -> None:
Initialize DucklingParser and .get_entities
.
This test-case bypasses duckling API calls via httpretty. The expected response was originally generated using:
export month_q="I need four of those on 27th next month."
export time_q="Can I have it at 5 am""&dims="[date"]"
export text="$month_q $time_q"
curl -XPOST http://<IP_ADDRESS>:8000/parse --data 'locale=en_US&text=$text'
body = "I need four of those on 27th next month. Can I have it at 5 am"
expected_response = [
config.mock_number_entity,
config.mock_date_entity,
config.mock_time_entity,
]
request_callback = request_builder(expected_response)
httpretty.register_uri(
httpretty.POST, "http://<IP_ADDRESS>:8000/parse", body=request_callback
)
parser = DucklingParser(locale="en_IN")
response = parser.get_entities(body)
assert response == expected_response
@httpretty.activate
def test_duckling_api_failure() -> None:
Simulate Duckling returning 500.
body = "27th next month"
expected_response = [config.mock_date_entity]
request_callback = request_builder(expected_response, response_code=500)
httpretty.register_uri(
httpretty.POST, "http://<IP_ADDRESS>:8000/parse", body=request_callback
)
parser = DucklingParser(dimensions=["time"], locale="en_IN")
with pytest.raises(ValueError):
parser.get_entities(body)
@httpretty.activate
def test_duckling_with_tz() -> None:
Using DucklingParser with timezone.
body = "i need it at 5 am"
expected_response = [config.mock_time_entity]
request_callback = request_builder(expected_response)
httpretty.register_uri(
httpretty.POST, "http://<IP_ADDRESS>:8000/parse", body=request_callback
)
parser = DucklingParser(locale="en_IN", timezone="Asia/Kolkata")
response = parser.get_entities(body)
assert response == expected_response
def test_duckling_wrong_tz() -> None:
In case the timezone is incorrect or exceptions need to be handled.
body = "i need it at 5 am"
request_callback = request_builder({})
httpretty.register_uri(
httpretty.POST, "http://<IP_ADDRESS>:8000/parse", body=request_callback
)
parser = DucklingParser(locale="en_IN", timezone="Earth/Someplace")
with pytest.raises(pytz.UnknownTimeZoneError):
_ = parser.get_entities(body)
def test_entity_mutation_dict() -> None:
This piece of code is run by DucklingParser when the Duckling API returns a set of entities. There are a few keys added/removed. We are making sure of those for numerical entities here.
entities_json = config.mock_number_entity
parser = DucklingParser(locale="en_IN")
entity = parser.mutate_entity(entities_json)
assert "range" in entity
assert "start" in entity["range"]
assert "end" in entity["range"]
assert "values" in entity
assert entity["values"][0]["value"] == 4
def test_entity_mutation_list() -> None:
This piece of code is run by DucklingParser when the Duckling API returns a set of entities. There are a few keys added/removed. We are making sure of those for time entities here.
entity_json = {
"body": "at 5 am",
"start": 55,
"value": {
"values": [
{
"value": "2021-01-21T05:00:00.000+05:30",
"grain": "hour",
"type": "value",
},
{
"value": "2021-01-22T05:00:00.000+05:30",
"grain": "hour",
"type": "value",
},
{
"value": "2021-01-23T05:00:00.000+05:30",
"grain": "hour",
"type": "value",
},
],
"value": "2021-01-21T05:00:00.000+05:30",
"grain": "hour",
"type": "value",
},
"end": 62,
"dim": "time",
"latent": False,
}
parser = DucklingParser(locale="en_IN")
entity = parser.mutate_entity(entity_json)
assert "range" in entity
assert "start" in entity["range"]
assert "end" in entity["range"]
assert "values" in entity
assert "value" not in entity
assert entity["values"][0]["value"] == "2021-01-21T05:00:00.000+05:30"
def test_entity_json_to_object_time_entity() -> None:
Reshape converts json response from Duckling APIs to dialogy’s BaseEntity.
We are checking for TimeEntity here.
parser = DucklingParser(locale="en_IN")
entities_json = [config.mock_time_entity]
entities = parser.reshape(entities_json)
assert isinstance(entities[0], TimeEntity)
def test_entity_json_to_object_time_interval_entity():
Reshape converts json response from Duckling APIs to dialogy’s BaseEntity.
We are checking for TimeIntervalEntity here.
parser = DucklingParser(locale="en_IN")
entities_json = [config.mock_interval_entity]
entities = parser.reshape(entities_json)
assert isinstance(entities[0], TimeIntervalEntity)
def test_entity_json_to_object_numerical_entity() -> None:
Reshape converts json response from Duckling APIs to dialogy’s BaseEntity.
We are checking for NumericalEntity here.
entities_json = [
{
"body": "four",
"start": 7,
"value": {"value": 4, "type": "value"},
"end": 11,
"dim": "number",
"latent": False,
}
]
parser = DucklingParser(locale="en_IN")
entities = parser.reshape(entities_json)
assert isinstance(entities[0], NumericalEntity)
def test_entity_json_to_object_people_entity() -> None:
Reshape converts json response from Duckling APIs to dialogy’s BaseEntity.
We are checking for PeopleEntity here.
entities_json = [config.mock_people_entity]
parser = DucklingParser(locale="en_IN")
entities = parser.reshape(entities_json)
assert isinstance(entities[0], PeopleEntity)
def test_entity_object_not_implemented() -> None:
Reshape converts json response from Duckling APIs to dialogy’s BaseEntity.
We are checking for an unknown entity type here.
This would lead to a NotImplementedError
.
entities_json = [config.mock_unknown_entity]
parser = DucklingParser(locale="en_IN")
with pytest.raises(NotImplementedError):
parser.reshape(entities_json)
def test_entity_object_error_on_missing_value() -> None:
This json has missing value
key. We can see that we will get a
KeyError
raised, this happens during the validation phase.
entities_json = [
{
"body": "3 people",
"start": 67,
"end": 75,
"dim": "people",
"latent": False,
}
]
parser = DucklingParser(locale="en_IN")
with pytest.raises(KeyError):
parser.reshape(entities_json)
def test_plugin_io_missing() -> None:
Here we are chcking if the plugin has access to workflow.
Since we haven’t provided access
, mutate
to DucklingParser
we will receive a TypeError
.
parser = DucklingParser(locale="en_IN")
plugin = parser()
workflow = Workflow(preprocessors=[plugin], postprocessors=[])
with pytest.raises(TypeError):
workflow.run("")
@pytest.mark.parametrize(
"access,mutate",
[
(1, 1),
(lambda x: x, 1),
(1, lambda x: x),
],
)
def test_plugin_io_type_mismatch(access, mutate) -> None:
Here we are chcking if the plugin has access to workflow.
Since we have provided access
, mutate
of incorrect types to DucklingParser
we will receive a TypeError
.
parser = DucklingParser(access=access, mutate=mutate, locale="en_IN")
plugin = parser()
workflow = Workflow(preprocessors=[plugin], postprocessors=[])
with pytest.raises(TypeError):
workflow.run("")
@pytest.mark.parametrize(
"body,expected",
[
(
"I need it for 3 people.",
[
{
"body": "4 people",
"start": 14,
"value": {"value": 4, "type": "value", "unit": "person"},
"end": 22,
"dim": "people",
"latent": False,
}
],
),
(
["I need it for 3 people."],
[
{
"body": "4 people",
"start": 14,
"value": {"value": 4, "type": "value", "unit": "person"},
"end": 22,
"dim": "people",
"latent": False,
}
],
),
],
)
@httpretty.activate
def test_plugin(body, expected) -> None:
An end-to-end example showing how to use DucklingParser
with a Worflow
.
def access(workflow):
return workflow.input, None
def mutate(workflow, entities):
workflow.output = {"entities": entities}
parser = DucklingParser(
access=access, mutate=mutate, dimensions=["people"], locale="en_IN"
)
request_callback = request_builder(expected)
httpretty.register_uri(
httpretty.POST, "http://<IP_ADDRESS>:8000/parse", body=request_callback
)
workflow = Workflow(preprocessors=[parser()], postprocessors=[])
workflow.run(body)
assert isinstance(workflow.output["entities"][0], PeopleEntity)
Test plugin with no possible entity from input.
@httpretty.activate
def test_plugin_no_entities() -> None:
An end-to-end example showing how DucklingParser
works in case
the input has no entities.
body = "i need it"
expected = []
def access(workflow):
return workflow.input, None
def mutate(workflow, entities):
workflow.output = {"entities": entities}
parser = DucklingParser(
access=access, mutate=mutate, dimensions=["people"], locale="en_IN"
)
request_callback = request_builder(expected)
httpretty.register_uri(
httpretty.POST, "http://<IP_ADDRESS>:8000/parse", body=request_callback
)
workflow = Workflow(preprocessors=[parser()], postprocessors=[])
workflow.run(body)
assert workflow.output["entities"] == []
An end-to-end example showing how DucklingParser
works in case
the input is invalid.
@pytest.mark.parametrize(
"body",
[42, None, {"key", 42}, [12]],
)
@httpretty.activate
def test_plugin_type_errors(body) -> None:
def access(workflow):
return workflow.input, None
def mutate(workflow, entities):
workflow.output = {"entities": entities}
parser = DucklingParser(
access=access, mutate=mutate, dimensions=["people"], locale="en_IN"
)
request_callback = request_builder([])
httpretty.register_uri(
httpretty.POST, "http://<IP_ADDRESS>:8000/parse", body=request_callback
)
with pytest.raises(TypeError):
workflow = Workflow(preprocessors=[parser()], postprocessors=[])
workflow.run(body)
An end-to-end example showing how DucklingParser
works in case
the input is invalid.
@httpretty.activate
def test_plugin_value_errors() -> None:
def access(workflow):
return workflow.input, None
def mutate(workflow, entities):
workflow.output = {"entities": entities}
parser = DucklingParser(
access=access, mutate=mutate, dimensions=["people"], locale="en_IN"
)
request_callback = request_builder([], response_code=500)
httpretty.register_uri(
httpretty.POST, "http://<IP_ADDRESS>:8000/parse", body=request_callback
)
with pytest.raises(ValueError):
workflow = Workflow(preprocessors=[parser()], postprocessors=[])
workflow.run("")


Search
Electronic Devices
Mobile
Tablet
Something else here
Nav header
Separated link
One more separated link
Electronic Accessories
TV & Home Appliances
Health & Beauty
Babies & Toys
Groceries & Pets
Home & Lifestyle
Women's Fashion
Men's Fashion
Watches & Accessories
Sports & Outdoor
Automotive & Motorbike
Previous
Next
Deals and
Spical
Duis aute irure dolor
This is a longer card with supporting
Read More
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
RECOMMEND ITEMS
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Name
Price:2000
Add to cart
Subscribe Here:
Subcribe
All right reserved by:


[ aws . datapipeline ]
Gets the definition of the specified pipeline. You can call get-pipeline-definition to retrieve the pipeline definition that you provided using put-pipeline-definition .
See also: AWS API Documentation
get-pipeline-definition
--pipeline-id <value>
[--pipeline-version <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
The ID of the pipeline.
The version of the pipeline definition to retrieve. Set this parameter to latest (default) to use the last definition saved to the pipeline or active to use the last definition that was activated.
--cli-input-json (string) Performs service operation based on the JSON pipeline-version provided. The JSON pipeline-version follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, the CLI values will override the JSON-provided values.
--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.
To get a pipeline definition
This example gets the pipeline definition for the specified pipeline:
aws datapipeline get-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE
The following is example output:
{
"parameters": [
{
"type": "AWS::S3::ObjectKey",
"id": "myS3OutputLoc",
"description": "S3 output folder"
},
{
"default": "s3://us-east-1.elasticmapreduce.samples/pig-apache-logs/data",
"type": "AWS::S3::ObjectKey",
"id": "myS3InputLoc",
"description": "S3 input folder"
},
{
"default": "grep -rc \"GET\" ${INPUT1_STAGING_DIR}/* > ${OUTPUT1_STAGING_DIR}/output.txt",
"type": "String",
"id": "myShellCmd",
"description": "Shell command to run"
}
],
"objects": [
{
"type": "Ec2Resource",
"terminateAfter": "20 Minutes",
"instanceType": "t1.micro",
"id": "EC2ResourceObj",
"name": "EC2ResourceObj"
},
{
"name": "Default",
"failureAndRerunMode": "CASCADE",
"resourceRole": "DataPipelineDefaultResourceRole",
"schedule": {
"ref": "DefaultSchedule"
},
"role": "DataPipelineDefaultRole",
"scheduleType": "cron",
"id": "Default"
},
{
"directoryPath": "#{myS3OutputLoc}/#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}",
"type": "S3DataNode",
"id": "S3OutputLocation",
"name": "S3OutputLocation"
},
{
"directoryPath": "#{myS3InputLoc}",
"type": "S3DataNode",
"id": "S3InputLocation",
"name": "S3InputLocation"
},
{
"startAt": "FIRST_ACTIVATION_DATE_TIME",
"name": "Every 15 minutes",
"period": "15 minutes",
"occurrences": "4",
"type": "Schedule",
"id": "DefaultSchedule"
},
{
"name": "ShellCommandActivityObj",
"command": "#{myShellCmd}",
"output": {
"ref": "S3OutputLocation"
},
"input": {
"ref": "S3InputLocation"
},
"stage": "true",
"type": "ShellCommandActivity",
"id": "ShellCommandActivityObj",
"runsOn": {
"ref": "EC2ResourceObj"
}
}
],
"values": {
"myS3OutputLoc": "s3://my-s3-bucket/",
"myS3InputLoc": "s3://us-east-1.elasticmapreduce.samples/pig-apache-logs/data",
"myShellCmd": "grep -rc \"GET\" ${INPUT1_STAGING_DIR}/* > ${OUTPUT1_STAGING_DIR}/output.txt"
}
}
The output of this command is the pipeline definition, which is documented in the Pipeline Definition File Syntax


--- layout: doc title: Documentation ---
The variables described in this chapter should be set in the script mode
before proof-config-done
is called. These variables configure
recognition of commands in the proof script, and also control some of
the behaviour of script management.
The first four settings configure the generic parsing strategy for
commands in the proof script. Usually only one of these three needs to
be set. If the generic parsing functions are not flexible for your
needs, you can supply a value for proof-script-parse-function
.
Note that for the generic functions to work properly, it is
essential that you set the syntax table for your mode properly,
so that comments and strings are recognized. See the Emacs
documentation to discover how to do this (particularly for the function
modify-syntax-entry
, (See (Elisp)Syntax Tables).
See section Proof script mode, for more details of the parsing functions.
String that terminates commands sent to prover; nil if none.
To configure command recognition properly, you must set at least one
of these: ‘proof-script-sexp-commands
’, ‘proof-script-command-end-regexp
’,
‘proof-script-command-start-regexp
’, ‘proof-terminal-string
’,
or ‘proof-script-parse-function
’.
If non-nil, electric terminator does not actually insert a terminator.
Non-nil if script has Lisp-like syntax: commands are top-level
sexps.
You should set this variable in script mode configuration.
To configure command recognition properly, you must set at least one
of these: ‘proof-script-sexp-commands
’, ‘proof-script-command-end-regexp
’,
‘proof-script-command-start-regexp
’, ‘proof-terminal-string
’,
or ‘proof-script-parse-function
’.
Regular expression which matches start of commands in proof script.
You should set this variable in script mode configuration.
To configure command recognition properly, you must set at least one
of these: ‘proof-script-sexp-commands
’, ‘proof-script-command-end-regexp
’,
‘proof-script-command-start-regexp
’, ‘proof-terminal-string
’,
or ‘proof-script-parse-function
’.
Regular expression which matches end of commands in proof script.
You should set this variable in script mode configuration.
The end of the command is considered to be the end of the match
of this regexp. The regexp may include a nested group, which
can be used to recognize the start of the following command
(or white space). If there is a nested group, the end of the
command is considered to be the start of the nested group,
i.e. (match-beginning
1), rather than (match-end
0).
To configure command recognition properly, you must set at least one
of these: ‘proof-script-sexp-commands
’, ‘proof-script-command-end-regexp
’,
‘proof-script-command-start-regexp
’, ‘proof-terminal-string
’,
or ‘proof-script-parse-function
’.
The next four settings configure the comment syntax. Notice that to get reliable behaviour of the parsing functions, you may need to modify the syntax table for your prover’s mode. Read the Elisp manual (See (Elisp)Syntax Tables) for details about that.
String which starts a comment in the proof assistant command language.
The script buffer’s ‘comment-start
’ is set to this string plus a space.
Moreover, comments are usually ignored during script management, and not
sent to the proof process.
You should set this variable for reliable working of Proof General,
as well as ‘proof-script-comment-end
’.
Regexp which matches a comment start in the proof command language.
The default value for this is set as (regexp-quote
‘proof-script-comment-start
’)
but you can set this variable to something else more precise if necessary.
String which ends a comment in the proof assistant command language.
Should be an empty string if comments are terminated by ‘end-of-line
’
The script buffer’s ‘comment-end
’ is set to a space plus this string,
if it is non-empty.
See also ‘proof-script-comment-start
’.
You should set this variable for reliable working of Proof General.
Regexp which matches a comment end in the proof command language.
The default value for this is set as (regexp-quote
‘proof-script-comment-end
’)
but you can set this variable to something else more precise if necessary.
Value for ‘case-fold-search
’ when recognizing portions of proof scripts.
Also used for completion, via ‘proof-script-complete
’.
The default value is nil. If your prover has a case insensitive
input syntax, ‘proof-case-fold-search
’ should be set to t instead.
NB: This setting is not used for matching output from the prover.
Finally, the function proof-looking-at-syntactic-context
is used
internally to help determine the syntactic structure of the buffer.
You can test it to check the settings above. If necessary, you can
override this with a system-specific function.
Determine if current point is at beginning or within comment/string context.
If so, return a symbol indicating this (’comment or 'string
).
This function invokes <PA-syntactic-context> if that is defined, otherwise
it calls ‘proof-looking-at-syntactic-context
’.
Several settings each may be supplied for recognizing goal-like and
save-like commands. The -with-hole-
settings are used to make a
record of the name of the theorem proved.
The -p
subsidiary predicates were added to allow more
discriminating behaviour for particular proof assistants. (This is a
typical example of where the core framework needs some additional
generalization, to simplify matters, and allow for a smooth handling of
nested proofs; the present state is only part of the way there).
Matches a goal command in the proof script.
This is used to make the default value for ‘proof-goal-command-p
’,
used as an important part of script management to find the start
of an atomic undo block.
A function to test: is this really a goal command span?
This is added as a more refined addition to ‘proof-goal-command-regexp
’,
to solve the problem that Coq and some other provers can have goals which
look like definitions, etc. (In the future we may generalize
‘proof-goal-command-regexp
’ instead).
Regexp which matches a command used to issue and name a goal.
The name of the theorem is built from the variable
‘proof-goal-with-hole-result
’ using the same convention as
for ‘query-replace-regexp
’.
Used for setting names of goal..save regions and for default
configuration of other modes (function menu, imenu).
It’s safe to leave this setting as nil.
How to get theorem name after ‘proof-goal-with-hole-regexp
’ match.
String or Int.
If an int N, use ‘match-string
’ to get the value of the Nth parenthesis matched.
If a string, use ‘replace-match
’. In this case, ‘proof-goal-with-hole-regexp
’
should match the entire command.
Matches a save command.
Regexp which matches a command to save a named theorem.
The name of the theorem is built from the variable
‘proof-save-with-hole-result
’ using the same convention as
‘query-replace-regexp
’.
Used for setting names of goal..save and proof regions.
It’s safe to leave this setting as nil.
Indicates how Proof General treats commands beyond the end of a proof.
Normally goal...save regions are "closed", i.e. made atomic for undo.
But once a proof has been completed, there may be a delay before
the "save" command appears — or it may not appear at all. Unless
nested proofs are supported, this can spoil the undo-behaviour in
script management since once a new goal arrives the old undo history
may be lost in the prover. So we allow Proof General to close
off the goal..[save] region in more flexible ways.
The possibilities are:
nil - nothing special; close only when a save arrives |
If your proof assistant allows nested goals, it will be wrong to close off the portion of proof so far, so this variable should be set to nil.
NB: 'extend
behaviour is not currently compatible with appearance of
save commands, so don’t use that if your prover has save commands.
Is this really a save command?
This is a more refined addition to ‘proof-save-command-regexp
’.
It should be a function taking a span and command as argument,
and can be used to track nested proofs.
To configure Imenu (which in turn configures Speedbar),
you may use the following setting. If this is unset, a generic
setting based on proof-goal-with-hole-regexp
is configured.
Regular expressions to help find definitions and proofs in a script.
Value for ‘imenu-generic-expression
’, see documentation of Imenu
and that variable for details.
The regex pattern to use for creating a buffer index.
If non-nil this pattern is passed to ‘imenu--generic-function’ to create a buffer index.
The value should be an alist with elements that look like this:
(menu-title regexp index) |
or like this:
(menu-title regexp index function ARGUMENTS...) |
with zero or more ARGUMENTS. The former format creates a simple element in the index alist when it matches; the latter creates a special element of the form (name function position-marker ARGUMENTS...) with function and arguments beiong copied from ‘imenu-generic-expression’.
menu-title is a string used as the title for the submenu or nil if the entries are not nested.
regexp is a regexp that should match a construct in the buffer that is to be displayed in the menu; i.e., function or variable definitions, etc. It contains a substring which is the name to appear in the menu. See the info section on Regexps for more information.
index points to the substring in regexp that contains the name (of the function, variable or type) that is to appear in the menu.
The variable is buffer-local.
The variable ‘imenu-case-fold-search’ determines whether or not the regexp matches are case sensitive. and ‘imenu-syntax-alist’ can be used to alter the syntax table for the search.
For example, see the value of ‘lisp-imenu-generic-expression’ used by ‘lisp-mode’ and ‘emacs-lisp-mode’ with ‘imenu-syntax-alist’ set locally to give the characters which normally have \"punctuation\" syntax \"word\" syntax during matching."
The settings here are used to configure the way "undo" commands are calculated.
Regular expression matching commands which are not undoable.
These are commands which should not appear in proof scripts,
for example, undo commands themselves (if the proof assistant
cannot "redo" an "undo").
Used in default functions ‘proof-generic-state-preserving-p
’
and ‘proof-generic-count-undos
’. If you don’t use those,
may be left as nil.
Command to undo n steps of the currently open goal.
String or function.
If this is set to a string, ‘%s’ will be replaced by the number of
undo steps to issue.
If this is set to a function, it should return a list of
the appropriate commands (given the number of undo steps).
This setting is used for the default ‘proof-generic-count-undos
’.
If you set ‘proof-count-undos-fn
’ to some other function, there is no
need to set this variable.
Matcher for script commands to be ignored in undo count.
May be left as nil, in which case it will be set to
‘proof-non-undoables-regexp
’.
Used in default function ‘proof-generic-count-undos
’.
Function to calculate a list of commands to undo to reach a target span.
The function takes a span as an argument, and should return a string
which is the command to undo to the target span. The target is
guaranteed to be within the current (open) proof.
This is an important function for script management.
The default setting ‘proof-generic-count-undos
’ is based on the
settings ‘proof-non-undoables-regexp
’ and
‘proof-non-undoables-regexp
’.
Count number of undos in span, return commands needed to undo that far.
Command is set using ‘proof-undo-n-times-cmd
’.
A default value for ‘proof-count-undos-fn
’.
For this function to work properly, you must configure
‘proof-undo-n-times-cmd
’ and ‘proof-ignore-for-undo-count
’.
Function to return list of commands to forget to before its argument span.
This setting is used to for retraction (undoing) in proof scripts.
It should undo the effect of all settings between its target span
up to (proof-unprocessed-begin
). This may involve forgetting a number
of definitions, declarations, or whatever.
If return value is nil, it means there is nothing to do.
This is an important function for script management.
Study one of the existing instantiations for examples of how to write it,
or leave it set to the default function ‘proof-generic-find-and-forget
’
(which see).
Calculate a forget/undo command to forget back to span.
This is a long-range forget: we know that there is no
open goal at the moment, so forgetting involves unbinding
declarations, etc, rather than undoing proof steps.
This generic implementation assumes it is enough to find the
nearest following span with a ‘name’ property, and retract
that using ‘proof-forget-id-command
’ with the given name.
If this behaviour is not correct, you must customize the function with something different.
Command to forget back to a given named span.
A string; ‘%s’ will be replaced by the name of the span.
This is only used in the implementation of ‘proof-generic-find-and-forget
’,
you only need to set if you use that function (by not customizing
‘proof-find-and-forget-fn
’.
Function to return cons if point is at a goal/hypothesis/literal.
This is used to parse the proofstate output to mark it up for
proof-by-pointing or literal command insertion. It should return a cons or nil.
First element of the cons is a symbol, 'goal'
, 'hyp'
or 'lit'
.
The second element is a string: the goal, hypothesis, or literal command itself.
If you leave this variable unset, no proof-by-pointing markup will be attempted.
Command to kill the currently open goal.
If this is set to nil, PG will expect ‘proof-find-and-forget-fn
’
to do all the work of retracting to an arbitrary point in a file.
Otherwise, the generic split-phase mechanism will be used:
1. If inside an unclosed proof, use ‘proof-count-undos’.
2. If retracting to before an unclosed proof, use
‘proof-kill-goal-command
’, followed by ‘proof-find-and-forget-fn
’
if necessary.
Proof General allows configuration for provers which have particular notions of nested proofs. The right thing may happen automatically, or you may need to adjust some of the following settings.
First, you should alter the next setting if the prover retains history for nested proofs.
Whether the prover supports recovery of history for nested proofs.
If it does (non-nil), Proof General will retain history inside
nested proofs.
If it does not, Proof General will amalgamate nested proofs into single
steps within the outer proof.
Second, it may happen (i.e. it does for Coq) that the prover has a history mechanism which necessitates keeping track of the number of nested "undoable" commands, even if the history of the proof itself is lost.
Regexp for commands that must be counted in nested goal-save regions.
Used for provers which allow nested atomic goal-saves, but with some nested history that must be undone specially.
At the moment, the behaviour is that a goal-save span has a 'nestedundos
property which is set to the number of commands within it which match
this regexp. The idea is that the prover-specific code can create a
customized undo command to retract the goal-save region, based on the
'nestedundos
setting. Coq uses this to forget declarations, since
declarations in Coq reside in a separate context with its own (flat)
history.
In normal operation, the commands in an asserted region are sent successively to the proof assistant. When the proof assistant reports an error, processing stops. This ensures the consistency of the development. Proof General supports omitting portions of the asserted region to speed processing up at the cost of consistency. Portions that can be potentially omitted are called opaque proofs in Proof General, because usually only opaque proofs (in the sense of Coq) can be omitted without risking to break the following code. This feature is also described in the Proof General manual, See (ProofGeneral)Script processing commands and See (ProofGeneral)Omitting proofs for speed.
The omit proofs feature works in a simple, straightforward way:
After parsing the asserted region, Proof General uses regular
expressions to search for commands that start
(proof-script-proof-start-regexp
) and end
(proof-script-proof-end-regexp
) an opaque proof. If one is
found, the opaque proof is replaced with a cheating command
(proof-script-proof-admit-command
). From this description
it is immediate, that the omit proof feature does only work if
proofs are not nested. If a nested proof is found, a warning is
displayed and omitting proofs stops at that location for the
currently asserted region.
To enable the omit proofs feature, the following settings must be configured.
t if the omit proofs feature has been configured by the proof assitant.
See also ‘proof-omit-proofs-option
’ or the Proof General manual
for a description of the feature. This option can only be set, if
all of ‘proof-script-proof-start-regexp
’,
‘proof-script-proof-end-regexp
’,
‘proof-script-definition-end-regexp
’ and
‘proof-script-proof-admit-command
’ have been configured.
The omit proofs feature skips over opaque proofs in the source code, admitting the theorems, to speed up processing.
If ‘proof-omit-proofs-option
’ is set by the user, all proof
commands in the source following a match of
‘proof-script-proof-start-regexp
’ up to and including the next
match of ‘proof-script-proof-end-regexp
’, are omitted (not send
to the proof assistant) and replaced by
‘proof-script-proof-admit-command
’. If a match for
‘proof-script-definition-end-regexp
’ is found while searching
forward for the proof end, the current proof (up to and including
the match of ‘proof-script-definition-end-regexp
’) is considered
to be not opaque and not omitted, thus all these proof commands
_are_ sent to the proof assistant.
The feature does not work for nested proofs. If a match for
‘proof-script-proof-start-regexp
’ is found before the next match
for ‘proof-script-proof-end-regexp
’ or
‘proof-script-definition-end-regexp
’, the search for opaque
proofs immediately stops and all commands following the previous
match of ‘proof-script-proof-start-regexp
’ are sent verbatim to
the proof assistant.
All the regular expressions for this feature are matched against the commands inside proof action items, that is as strings, without surrounding space.
Regular expression for the start of a proof for the omit proofs feature.
See ‘proof-omit-proofs-configured
’.
Regular expression for the end of an opaque proof for the omit proofs feature.
See ‘proof-omit-proofs-configured
’.
Regexp for the end of a non-opaque proof for the omit proofs feature.
See ‘proof-omit-proofs-configured
’.
Proof command to be inserted instead of omitted proofs.
A proof command is "safe" if it can be issued away from the proof script. For this to work it should be state-preserving in the proof assistant (with respect to an on-going proof).
A predicate, non-nil if its argument (a command) preserves the proof state.
This is a safety-test used by ‘proof-minibuffer-cmd
’ to filter out scripting
commands which should be entered directly into the script itself.
The default setting for this function, ‘proof-generic-state-preserving-p
’
tests by negating the match on ‘proof-non-undoables-regexp
’.
Is cmd state preserving? Match on ‘proof-non-undoables-regexp
’.
Hook run when a buffer is switched into scripting mode.
The current buffer will be the newly active scripting buffer.
This hook may be useful for synchronizing with the proof assistant, for example, to switch to a new theory (in case that isn’t already done by commands in the proof script).
When functions in this hook are called, the variable
‘activated-interactively’ will be non-nil if
‘proof-activate-scripting
’ was called interactively
(rather than as a side-effect of some other action).
If a hook function sends commands to the proof process,
it should wait for them to complete (so the queue is cleared
for scripting commands), unless activated-interactively is set.
See section Handling Multiple Files, for more details about this setting.
Whether to use automatic multiple file management.
If non-nil, Proof General will automatically retract a script file
whenever another one is retracted which it depends on. It assumes
a simple linear dependency between files in the order which
they were processed.
If your proof assistant has no management of file dependencies, or one which depends on a simple linear context, you may be able to use this setting to good effect. If the proof assistant has more complex file dependencies then you should configure it to communicate with Proof General about the dependencies rather than using this setting.
When switching scripting from buffer A to buffer B Proof General normally offers the choice of either completely retracting or completely asserting buffer A. The option to completely assert buffer A is offered, because the material in B may depend on A. Even if B does not depend on A, it does no harm if one keeps the development of A loaded in the proof assistant. This observation is true for many proof assistants.
One exception is Coq. Assume file B depends on file A. When Coq processes B it does not read the sources of A. Instead it loads a compiled object representation of A. Therefore, when switching from A to B, it does make no sense to keep the material of A loaded in the proof assistant. For Coq, the material of A may even provoke errors on correct input. Therefore, for coq, the right behaviour is to completely retract buffer A before switching to B.
Set to t if buffers should always retract before scripting elsewhere.
Leave at nil if fully processed buffers make sense for the current
proof assistant. If nil the user can choose to fully assert a
buffer when starting scripting in a different buffer. If t there
is only the choice to fully retract the active buffer before
starting scripting in a different buffer. This last behavior is
needed for Coq.
Proof General allows provers to create a completion table to help writing keywords and identifiers in proof scripts. This is documented in the main Proof General user manual but summarized here for (a different kind of) completion.
Completions are filled in according to what has been recently typed, from a database of symbols. The database is automatically saved at the end of a session. Completion is usually a hand-wavy thing, so we don’t make any attempt to maintain a precise completion table or anything.
The completion table maintained by ‘complete.el’ is initialized
from PA-completion-table
when ‘proof-script.el’ is loaded.
This is done with the function proof-add-completions
which
you may want to call at other times.
List of identifiers to use for completion for this proof assistant.
Completion is activated with M-x complete.
If this table is empty or needs adjusting, please make changes using
‘customize-variable
’ and post suggestions at
https://github.com/ProofGeneral/PG/issues
Add completions from <PA>-completion-table to completion database.
Uses ‘add-completion
’ with a negative number of uses and ancient
last use time, to discourage saving these into the users database.
This document was generated on April 14, 2023 using texi2html 1.82.


#
|
Name
|
Type
|
Description
|
Options
|
1
|
PatientPK
|
Integer
|
System assigned unique key
|
0,1,2,3,4,5,6,7
|
2
|
PatientID
|
Text
|
Facility assigned patient ID
|
|
3
|
FacilityID
|
Integer
|
System assigned facility ID
|
|
4
|
AgeEnrollment
|
Number
|
|
|
5
|
EDD
|
Date
|
Estimated Date of Delivery
|
|
6
|
StartARTDate
|
Date
|
Date patient started ART treatment. Note that some patients may be receiving ART treatment in a different facility
|
|
7
|
StartARTRegimen
|
Text
|
The first ART regimen received
|
|
8
|
DOB
|
Date
|
Date of birth
|
|
9
|
sdNVPDate
|
Date
|
Date patient received single dose nevirapine
|
|
10
|
LowestCD4
|
Number
|
Lowest CD4 ever recorded for the patient. Note that this lab test may have been performed at a different facility
|
|
11
|
CurrentCD4
|
Number
|
Last CD4 count recorded
|
|
12
|
HighestViralLoad
|
Number
|
Highest Viral Load recorded
|
|
13
|
CurrentViralLoad
|
Number
|
Last Viral Load recorded
|
|
14
|
ModeOfDelivery
|
Text
|
Mode of delivery
|
|
15
|
InfantStatus
|
Text
|
Status of the baby
|
|
16
|
PlaceOfDelivery
|
Text
|
Place of delivery
|
|
17
|
HIVStatus
|
Text
|
HIV Status of the mother
|
|
18
|
IntraPartumARVs
|
Text
|
|
|
19
|
PostPartumARVs
|
Text
|
|
|
| 20 |
Discordant |
Text |
Status to show whether the mother has a different HIV status
from that of the partner |
|
| 21 |
DateOfDelivery |
Date |
Date the mother gave birth |
|
| 22 |
AdmissionReason |
Text |
Reason for enrolment such as to receive ANC services,
maternity or post natal services |
ANC, Maternity, PNC |
| 23 |
MaternalProphylaxis |
Text |
Maternal prophylaxis at first contact only |
|
| 24 |
InfantProphylaxis |
Text |
Infant prophylaxis at first contact only |
|
| 25 |
InfantProphylaxisDate |
Date |
Date of Infant prophylaxis |
|
| 26 |
KnownHIVPositive |
Yes No |
Status of whether client is known positive |
Yes, No |
| 27 |
HIVTestingAtANC |
Yes No |
Status on whether client was tested for HIV during ANC |
|
| 28 |
DateHIVTestingAtANC |
Date |
Date of HIV test during ANC |
|
| 29 |
HIVResultAtANC |
Text |
Result of HIV test done during ANC |
|
| 30 |
HIVTestingAtLD |
Yes No |
Status on whether client was tested for HIV during labour and
delivery |
|
| 31 |
DateHIVTestingAtLD |
Date |
Date of HIV test during labour and delivery |
|
| 32 |
HIVResultAtLD |
Text |
Result of HIV test done during labour and delivery |
|
| 33 |
HIVTesttingAtPNC |
Yes No |
Status on whether client was tested for HIV during post natal
care |
|
| 34 |
DateHIVTestingAtPNC |
Date |
Date of HIV test during post natal care |
|
| 35 |
HIVResultAtPNC |
Text |
Result of HIV test done during post natal care |
|


First, you'll need to register your app on Line. Follow these steps:
-
Visit https://business.line.me/en/services/login
-
Click "Start using LINE Login".
-
Click "Choose Enterprise".
-
Click "Add new enterprise", if you have none. Or click the enterprise you want selected.
-
Check "WEB" as "Application Type" and click "OK" after that click "Apply"
-
Click "LINE Developers" and copy your Channel ID into the form below
-
Click "SHOW" next to "Channel Secret" and copy the "Channel Secret" into the form below
-
Click on "Technical configuration" in the menu and click "Edit".
-
Add this url into the box {{siteUrl}}_oauth/line and save.
-
Submit this form.