See: Description
| Interface | Description |
|---|---|
| ReturnAdder.ReturnStatementListener |
Implement this method in order to be notified whenever a return statement is generated.
|
| Verifier.DefaultArgsAction |
| Class | Description |
|---|---|
| AnnotationVisitor |
An Annotation visitor responsible with:
- reading annotation metadata (@Retention, @Target, attribute types)
- verify that an
AnnotationNode conforms to annotation meta
- enhancing an AnnotationNode AST to reflect real annotation meta |
| AsmClassGenerator |
Generates Java class versions of Groovy classes using ASM.
|
| BytecodeExpression |
Represents some custom bytecode generation by the compiler
|
| BytecodeInstruction |
Helper class used by the class generator.
|
| BytecodeSequence |
This class represents a sequence of BytecodeInstructions
or ASTNodes.
|
| ClassCompletionVerifier |
ClassCompletionVerifier
|
| ClassGenerator |
Abstract base class for generator of Java class versions of Groovy AST classes
|
| DummyClassGenerator |
To generate a class that has all the fields and methods, except that fields are not initialized
and methods are empty.
|
| EnumCompletionVisitor |
Enums have a parent constructor with two arguments from java.lang.Enum.
|
| EnumVisitor | |
| ExtendedVerifier |
A specialized Groovy AST visitor meant to perform additional verifications upon the
current AST.
|
| GeneratorContext |
A context shared across generations of a class and its inner classes
|
| InnerClassCompletionVisitor | |
| InnerClassVisitor | |
| InnerClassVisitorHelper | |
| ReturnAdder |
Utility class to add return statements.
|
| VariableScopeVisitor |
goes through an AST and initializes the scopes
|
| Verifier |
Verifies the AST node and adds any defaulted AST code before
bytecode generation occurs.
|
| VerifierCodeVisitor |
Performs various checks on code inside methods and constructors
including checking for valid field, variables names etc.
|
| Exception | Description |
|---|---|
| ClassGeneratorException |
An exception thrown by the class generator
|
Generates Java classes for Groovy classes using ASM.


Once you withdraw from a scheme you won't be able to change your decision.
Your preferences will be updated to reflect their new order.
@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import models.page.SchemeWithdrawPage @import views.html.widgets.{ yesNoRadioWithTogglePanel, selectValueDifferentFromDisplayedText } @import helpers.CSRFieldConstructor._ @import config.TrackingConsentConfig @(page: SchemeWithdrawPage)(implicit request: Request[_], flash: Flash, user: Option[CachedData], feedbackUrl: String, trackingConsentConfig: TrackingConsentConfig, messages: Messages) @main_template(title = "Withdraw from a scheme") {
Once you withdraw from a scheme you won't be able to change your decision.
Your preferences will be updated to reflect their new order.


Our Payments API allows your mobile app and online store to accept payments using Apple Watch, iPhone, iPad, or Safari.
If this is your first time implementing our APIs we recommend reviewing our Reference guide, to get familiar with Bambora’s Payment APIs.
You can find more about Bambora and Apple Pay on Github.
Before you accept Apple Pay with Bambora, you need to register a Merchant ID and download a Merchant Certificate (P12) with Apple.
To enable Apple Pay on your Merchant Account, you’ll set a password for your P12 using Keychain Access.
To turn on Apple Pay for your account, log into the Member Area. Under configuration, click on mobile payments. From the Mobile Payments screen, you can enable Apple Pay by adding your Apple Pay signing certificate.
Click ADD NEW MERCHANT ID, and you’ll be able to add your Apple Merchant ID, your P12 File Password, and upload your P12 certificate file.
After you’ve added your Apple Pay certificate to your account, you can start integrating to your app.
All of the directions and code samples to enable Apple Pay in your iOS app are available through Apple’s documentation.
Getting Started with Apple Pay will cover how to use Apple Pay and best practices, Apple Pay Guide has explanations of the user flow and working with Apple Pay, and Apple Pay Sandbox Testing will show you how to test Apple Pay transactions.
When you make an apple_pay
request to our Payments API, it’ll be formatted in JSON, calling to https://api.na.bambora.com/v1/payments/.
shell
curl https://api.na.bambora.com/v1/payments \
-H "Authorization: Passcode XXX1XXx11Xxx1xX1XxxxXxXXXXx1XXX1XxX1XXXxXXXxXxxxX11XXXxX1" \
-H "Content-Type: application/json" \
-d '{
"amount": 1.00,
"payment_method": "apple_pay",
"apple_pay": {
"apple_pay_merchant_id": "<your_apple_pay_merchant_id>",
"payment_token": "<apple_pay_base64_encoded_token>",
"complete": true
}
}'
| Variable | Description |
|---|---|
| amount | The amount of the transaction. |
| payment_method | The method of payment for the transaction. For Apple Pay, this will always be apple_pay |
| apple_pay | The object needed to pass an Apple Pay token including the Apple Pay Merchant ID, and the base64 payment token. |
| apple_pay_merchant_id | Your Apple Merchant ID provided in your Apple Developer Account. |
| payment_token | The encrypted Apple Pay token containing card holder details, generated from within the iOS app. |
| complete | The type of transaction being performed. True indicates a Purchase, and false is a Pre-Authorisation. |
The sample below shows the action taken by a payment button using Swift, generating a payment request.
```swift func paymentButtonAction() { // Create a payment request let request = PKPaymentRequest()
request.merchantIdentifier = "merchant.com.mycompany.myapp"
request.supportedNetworks = [.visa, .masterCard, .amex]
request.merchantCapabilities = .capability3DS
// Use a currency set to match your Merchant Account
request.countryCode = "CA" // "US"
request.currencyCode = "CAD" // "USD"
request.paymentSummaryItems = [
PKPaymentSummaryItem(label: "1 Golden Egg", amount: NSDecimalNumber(string: "1.00"), type: .final),
PKPaymentSummaryItem(label: "Shipping", amount: NSDecimalNumber(string: "0.05"), type: .final),
PKPaymentSummaryItem(label: "GST Tax", amount: NSDecimalNumber(string: "0.07"), type: .final),
PKPaymentSummaryItem(label: "Total", amount: NSDecimalNumber(string: "1.12"), type: .final)
]
self.paymentAmount = NSDecimalNumber(string: "1.12")
let authVC = PKPaymentAuthorizationViewController(paymentRequest: request)
authVC.delegate = self
present(authVC, animated: true, completion: nil) } ```
Note: We not only support, but recommend the use of 3D Secure with Visa, MasterCard, and America Express using
.capability3DS
.
This sample outlines how to handle the payment token once the payment request has been successfully authorised. To send the generated token to the server, execute the following request.
```swift // Executes a process payment request on the Mobile Payments Demo Server func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, completion: @escaping (PKPaymentAuthorizationStatus) -> Void) { // Get payment data from the token and base64 encode it let token = payment.token let paymentData = token.paymentData let b64TokenStr = paymentData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0)) let transactionType = self.purchaseTypeSegmentedControl.selectedSegmentIndex == 0 ? “purchase” : “pre-auth” let parameters = [ “amount”: self.paymentAmount, “transaction-type”: transactionType, “apple-wallet”: [ “payment-token”: b64TokenStr, “apple-pay-merchant-id”: “merchant.com.mycompany.myapp” ] ] as [String : Any]
Alamofire.request(DemoServerURLBase + "/process-payment/apple-pay",
method: .post,
parameters: parameters,
encoding: URLEncoding.httpBody).responseJSON { response in
let statusCode = response.response?.statusCode
if statusCode == 200 {
completion(.success)
}
else {
completion(.failure)
}
} } ```
Note: This iOS client is sending the payment token to our Payment APIs Demo Server, as outlined on Github.


HAPPY, TEXAS
Reviewed by Harvey Karten, Ph.D. Miramax Films Director: Mark Illsley Writer: Ed Stone, Mark Illsley, Phil Reeves Cast: Jeremy Northam, Steve Zahn, William H. Macy, Ally Walker, Illeana Douglas, M.C. Gainey, Ron Perlman
The playwright Plautus had a lot of fun with the comic concepts mined from mistaken identity and so did Shakespeare many centuries later. Now it's first-time director Mark Illsley's turn to have a ball with the notion and what joy he must have had putting the script he co-wrote with Ed Stone and Phil Reeves on the big screen. "Happy Texas" won't be Greek to anybody nor is the frolic-filled movie done in the king's English. In fact the great Jeremy Northam, to whom we've been accustomed in lofty roles like "An Ideal Husband" and "The Winslow Boy," puts on quite a good-ol' boy Texas inflection and enjoys a happy chemistry with his partner, Steve Zahn--who, incidentally, executes the first truly fleshed-out role of his career.
Opening on a Texas prison farm that sees a knock-down fight between convicted killer Bob (M.C. Gainey) and petty thief Wayne Wayne Wayne Jr. (Steve Zahn), a fight that is observed with a sour face by Wayne's pal and fellow petty crook Harry Sawyer (Jeremy Northam), Illsley takes us on a wild ride through desert country. One overturned prison van later and stolen recreation vehicle later, Wayne and Harry wind up in the little town of Happy, Texas (actually Peru, California) where they are mistaken by the burg's sheriff, Chappy Dent (William H. Macy), for a couple of professionals. The folks have been waiting for two gay guys (who never show up) to coach the munipality's annual beauty pageant: Harry and Wayne seem to fit the description. Thinking they are going to "drive around and stuff hot bodies into tight dresses," the daring duo become involved in pretending they are significant others, in designing little outfits for 8-year-old tykes who look up to the fellas as role models, and in carrying on relationships with the county banker, Josephine McLintock (Ally Walker) and eligible grade-school teacher Ms. Schaefer (Illeana Douglas).
Illsley cleverly divides the picture into alternating scenarios, the best ones featuring Wayne as he molds the kiddies into a winning troupe of budding Miss Americas and especially Harry Sawyer as he gives avuncular advice to the woman of his dreams, Jo, who all along is sure that he is a gay man. Only the town's loudmouth seems to catch on to the chemistry between Jo and Harry: "He was looking at you the way a fat man looks at fried food." The plot thickens as Sheriff Chappy Dent (Macy), certain that he has met the partner of his dreams, furiously courts the bemused Harry.
Shakespeare himself would be amused by the goings-on of these people, who are not the usual blatant caricatures of Hollywood hick humor-fetes but real people with hopes and dreams looking to hook onto others who could give their modest lives some more spice. The down-home dialogue features such goodies as the sheriff's restaurant order, "Gimme the meanest steak you got, rare and I mean rare: just dehorn it and slap its butt in here."
As a movie centering ostensibly on a beauty pageant, "Happy Texas" is a song and dance better than "Drop Dead Gorgeous" and a heck of a lot less mean-spirited. No wonder this movie was a surprise hit of the last Sundance Festival in Utah!
Running Time: 96 minutes. (C) 1999 Harvey Karten
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Written by: Andrew Reich & Ted Cohen
Transcribed by: Eric Aasen
[Scene: Monica and Rachel's, Rachel is packing her belongings to move to Rosss. Shes standing in the kitchen.]
Rachel: So, which of this kitchen stuff is mine?
Monica: This bottle opener. (She grabs it off of the freezer door.)
Rachel: And?
Monica: And its a magnet!
Rachel: Look at that!
Ross: How weird is that? Yknow? Youre moving in with me and have the one thing I dont have. Its like uh, in a way you-you complete me (Phoebe glares at him) kitchen.
Rachel: What?!

Phoebe: Ross, I know what youre thinking.
Ross: What?
Phoebe: That shes gonna move in with you and maybe then shell fall in love with you and then when she finds out youre already married, shell just be happy. Yknow?
Ross: Oh my God! I-I see what this is! You are in love with Rachel!
Phoebe: What?!!
Ross: Of course! It all adds up!  Its always, "Ross, what are you gonna do about Rachel?" "Ross, why-why are you moving in with Rachel?" "When are you gonna confess your secret marriage to Rachel?" You want her!
Phoebe: No! (Rosss phone rings.)
Ross: (answering it) Uh-oh, saved by the bell. (On phone) Hello?
[Cut to the living room where Monica is helping pack a box.]
Monica: Hey Rach, arent these candlesticks (holds up a pair) mine?
Rachel: No-no, I bought those.
Monica: Ohh! Yeah, I forgot.
Rachel: Yeah. (Rachel walks away.)
 (Hides the candlesticks in a drawer.)
Ross: (on phone) No-no-no, thats great! Ill be there Monday. And thank you again! (Listens) Okay. (Hangs up) (To All) Umm, that was the head of the Paleontology department at N uh, Y, uh U!
Monica: Wow! Uh what, did he uh, say?
Ross: Well remember that paper I had published last year on sediment flow rate, huh? They loved it.
Rachel: Well, who wouldnt?!
Ross: I know! Anyway, they asked me to be a guest lecturer! I mean its temporary, but uh, if they like me it could lead to a full time job. How great would that look great on a mailbox, huh? "Professor Geller."
Phoebe: Yeah, Professor and Mrs.
Rachel: And Mrs.?!
Phoebe: Oh! Yeah, yknow you and Ross are still married.
Rachel: What?!!
Phoebe: Just kidding!
Rachel: Ohh! Oh God! (Laughs her way into the living room.)

Opening Credits
[Scene: Central Perk, Joey, Monica, Rachel, and Chandler are all there as Phoebe enters dejectedly.]
Chandler: Hey!
Phoebe: Hi.
Monica: Hey!
Chandler: Oh, whats the matter?
Phoebe: Well, you know that psychic I see?
Chandler: Yeah?

Chandler: What?!
Phoebe: Yeah, and I know you guys dont know a lot about psychic readings, but that one is pretty much the worse one you can get.
Monica: Phoebe thats crazy!
Joey: I cant believe she would say that too you.
Rachel: Yeah honey you dont believe her do you?
Phoebe: I dontshe said yknow that Id have triplets! But she also said one of them would be black.
Chandler: Just out of curiosity did she tell you how youre gonna go?
 I mean Ive only got a week left, yknow? Ive really gotta start living now! (So she picks up the latest copy of Car and Driver (a U.S. auto magazine), leans back, and starts reading.)
Ross: (entering) Hey everyone!
Chandler: Oh hi!

(They pause to think about it.)
All: Oh thatd be great. Sure!
Ross: (he starts reading directly from his cards word for word very quietly) "There are three primary theories concerning sediment flow rate. Each of these theories can be further subcategorized into two distinct "
Phoebe: Oh, this is it.
Ross: (continuing) " subcategories. The first of these subcategories is "
Joey: (interrupting him) Uh Ross! Are there uh, are there naked chicks on that piece of paper?
Ross: No! Why?
Joey: Well, Ive just never seen a guy stare so hard at a piece of paper that didnt have naked chicks on it.
Ross: Ohh! Okay! Okay. (Resumes reading word for word from the card) "There are three (pauses and looks at Joey) primary theories concerning sediment flow rate. (Pauses and darts his eyes between Chandler and Rachel.) (Rachel starts laughing) Each of these theories (glances at Phoebe) can be further subcategorized (glances at Chandler) into "
Chandler: Why dont you open with a joke?
Ross: Open with a joke? Its a university, not a comedy club!
Chandler: Wait a minute, hold the phone! Youre not talking about Chuckles University?!
Ross: (gets up) Okay!
All: Ohh! Were kidding! Oh, were kidding!
Rachel: Ross, hey you know what might make it less boring?
Ross: Thank you!
Rachel: Some uh, some visual aides.
Joey: Oh-ooh-ooh! Yknow whats a good visual aide?
Ross: Please dont say naked chicks.
Joey: Why not?!
Ross: I-I-I dont even know why I bother to talk to you guys about it. Yknow what? Im just gonna do it on my own with no naked chicks.
Chandler: Thats the way I did it til I was 19.
[Scene: Chandler and Joey's, Joey is playing that string game with the two hands and the weird crossing patterns as Chandler enters with the mail.]
Chandler: Hey.
Joey: Hey! Any good mail?
Chandler: Yes, you got something from the Screen Actors Guild.
Joey: Ooh, its probably a residual check, hey can you open it for me, Im kinda .
Chandler: (opens and reads it) "Benefits lapsed."
Joey: Hmm thats weird. I dont remember being in a move called benefits lapsed.
Chandler: Okay, its not a check. Theyre saying your health insurance expired because, you didnt work enough last year.
Joey: Let me see that!
Chandler: All right.
Joey: (reads it) Oh, I cant believe this! This sucks! When I had insurance I could get hit by a bus or catch on fire, yknow? And it wouldnt matter. Now I gotta be careful?!
Chandler: Im sorry man, theres never a good time to (pauses) stop catching on fire.
Joey: All right well, I guess I gotta go get a job. Im gonna go see my agent.
Chandler: Okay, make sure you look both ways before you cross the street.
Joey: (mocks him, in a whiney voice) look both ways before you cross the street. (Turns and walks headlong into the closed door.)
[Scene: Monica and Rachel's, Phoebe enters to find Rachel still packing.]
Phoebe: Hey!
 How are you doing?
Phoebe: Ugh, its so exhausting waiting for death. Ohh, by the way, do you think you could(Groans, hacks, and then freezes with her eyes open and her tongue hanging out.)
Rachel: Pheebs, what-what are you doing?
Phoebe: I was preparing you for mydidnt you think I was dead? Did that not come off?
 I thought wed lost you forever.
Phoebe: Yeah, thanks. And listen, can you do me a favor? Could you just umm, wake me up in a couple hours, yknow if you can.
(Phoebe goes and lies down as Rachel opens the drawer Monica hid the candlesticks in and as Monica walks out of her room.)
Rachel: Monica!
Monica: Hmm? (Rachel holds up the candlesticks.)
Rachel: Did-did you take these back?
Monica: No-no, I-I just, I liked them so much that I went out and bought some for myself.
Rachel: Oh yeah, theyre really great! Arent they?
Monica: I loved them!
Rachel: Yeah. (Monica walks away) Nice try! (Rachel puts them in a box.)
Ross: (entering) Hello!
Monica: Hey!
Rachel: Hey!
Monica: Howd the lecture go?
Ross: It went great! And I didnt need any jokes or naked chicks either!
Rachel: Wow, thats great Ross, Im sorry we werent more supportive before.
Ross: I knew all I had to do was let the material speak for itself. Everyones all, "Ross you have to be funny and sexy." Well, I proved them wrong! And now, Im gonna pass the news onto Joey and Chandler.
Monica: That youre not funny or sexy?
Ross: Thats right!
[Scene: Estelle Leonard Theatrical Agency, Joey is there to see his agent.]
Joey: (entering) Hey Estelle, listen
Estelle: Well! Well! Well! Joey Tribbiani! So you came back huh? They think they can do better but they all come crawling back to Estelle!
Joey: What are you talkin about? I never left you! Youve always been my agent!
Estelle: Really?!
Joey: Yeah!
Estelle: Oh well, no harm, no foul.
Joey: Estelle, you gotta get me some work. I-I lost my health insurance.
Estelle: All right, first thing we gotta do, damage control.
Joey: Why?
Estelle: Well, I think uhh, someone out there may have been bad mouthing you all over town.
Joey: Bastard!
[Scene: Chandler and Joey's, Chandler enters to find Joey lying in the fetus position on the floor.]
Chandler: Hey!
Joey: (in obvious pain) Hey!
Chandler: Thats great, but shouldnt you be on the toilet right now?
Joey: What?!
Chandler: Whats wrong with you?
Joey: Nothing! Well, I-I got this blinding pain in my stomach when I was lifting weights before, then I uh passed out and uh, havent been able to stand up since. But um, I dont think its anything serious.
Chandler: This sounds like a hernia. You have toyou-you go to the doctor!
Joey: No way! Kay look, if I have to go to the doctor for anything its gonna be for this thing sticking out of my stomach! (Rolls over and shows Chandler.)
Chandler: Thats a hernia.
Joey: Why did I have to start working out again? (Looks at the weights he was using.)
[Scene: a NYU lecture hall, Rachel and Monica are arriving to talk to Ross after the lecture, but are there early.]
Rachel: Well, were a little early, the lecture doesnt end for 15 minutes.
Monica: Yeah, but yknow we could sneak in and watch.
Rachel: Yeah, we could. Oh hey look! Theres some Kappa Kappa Deltas! I was a Kappa. (to them) Hey sisters! (They ignore her.) (To Monica) Wow, we really are bitches.
(They enter the lecture hall to find Ross speaking in an English accent for some unknown reason.)
Ross: (to the class) Right! So when Rigby got his samples back from the laboratory he made a startling discovery! What he believed to be igneous, was in fact sedimentary. Imagine his consternation when(sees Monica and Rachel.)
Commercial Break
[Scene: a NYU lecture hall, the scene is continued from earlier, only Ross has dismissed the class and is now talking to Monica and Rachel.]

Ross: Look, I was nervous! You guys had me all worried I was going to be boring! I got up there and they were all like staring at me. I opened my mouth and this British accent just came out.
Rachel: Yeah, and not a very good one.
Ross: Will you-will you please?
(Another professor walks down from the back of the lecture hall.)
The Professor: Dr. Geller, Kurt Rathman, Im a professor in the paleontology department here.
Ross: Oh.
The Professor: Do you have a moment to talk about your lecture?
Ross: (in his British accent) Im sorry, Ive got plans with my sister.
Monica: (in an Irish accent) Monica Gellerrr. (She rolls her R)
Ross: (in accent) Right, will you excuse us for one moment? (Takes Monica aside.) (In his normal voice.) What are you doing?
Monica: (normal voice) Oh, you can have an accent and I cant?! (To an exiting student in accent.) Top O the morning to ya laddies!
Ross: Just please stop!
(They turn back to Rachel and Professor Rathman.)
Rachel: (in an Indian accent) Yes, yes, Bombay is bery, bery nice time of year.
[Scene: Central Perk, Chandler is reading on the couch while Joey, still suffering from his hernia, is returning with coffee for them both. After a series of grunts and groans he manages to painfully walk back from the counter, sit down, and slide Chandler his coffee.]
Chandler: Hey, will you grab me a cruller? (Joey starts to groan and get up.) Sit down! Will you go to the hospital?!
Joey: Dude! Hernia operations cost like, a lot probably. Besides its getting darker and more painful, that means its healing.
Chandler: I will loan you the money. Just go to the hospital and lets just get that thing pushed back in.
Joey: Thank you, but it would take me forever to pay you that money back and I dont want that hanging over my head. Okay? Besides, as soon as my insurance kicks in I can get all the free operations I want! Yeah, Im thinking Ill probably start with that laser eye surgery too.
(Phoebe enters.)
Phoebe: Hey!
Chandler: Hey.
Joey: Hey!
Phoebe: Whats going on?
Chandler: Oh Joeys got a really bad hernia, but thats nothing a little laser eye surgery wont fix!

Phoebe: Hey! Maybe youll die!
Joey: Sure, now Im scared.
Phoebe: No, we can go together! Just dont wait too long though, okay? Cause Im outta here sometime before Friday.
Joey: Yeah, but I dont wanna die!
Phoebe: No-no, itll be fun! We can come back and we can haunt these guys!
[Scene: Monica and Rachel's, Monica and Rachel are having a tug-of-war over the disputed candlesticks.]
Monica: Gimme em!
Rachel: No! They are mine!
Monica: You stole them from me!
Rachel: You stole them from me!!
Monica: Gimme them!
(With one last mighty tug the combatants lose their grip and split, each holding one candlestick.)
Monica: You just wanna each take one?
Rachel: Yeah that seems fair. We never use them.
Ross: (entering) Look, I really need some help, okay? Why? Why did I have to speak in a British accent?! What do I do?
Rachel: Well
Monica: Why dont you phase it out? Yeah, fade the accent out and people will think youre, yknow, that youre adjusting to life in America.
 I mean theyre probably not even listening!
Ross: Theyre not listening too me?
Rachel: Of course theyre listening to you! Everybody listens to you.
Ross: Monica you really think I should try this phasing out thing?
Monica: I think you look fine.
[Scene: Casting Director #1s office, Joey is on his first audition. His partner is an 8-year-old boy.]
Casting Director #1: Whenever youre ready.
Joey: (in a gravely, painful voice) Okay. "Hey, Timmy, Ive got a surprise for you."
Casting Director #1: Hold it. Im sorry, the surprise is a new swing set, if you could play it a little less intense?
Joey: Oh yeah, sure, no problem, Ill justhold on one second. (He turns around and puts his hand in his pants and groans in relief.) (In a relaxed voice.) "Hey Timmy, Ive got a surprise for you!"
Casting Director #1: Oh my God!!
(Joey pulls his hand out and reverts back to intense pain.)
[Scene: Casting Director #2s office, Joey is on his second audition. This one is for Purina One Dog Chow, an actual item. Please note the gratuitous product placement.]
Joey: So thats why I feed my dog Purina One! Pick up a bag today! (He turns, looks at the bag and realizes he wont be able to pick it up.)
Casting Director #2: Thats where you pick up the bag.
Joey: Exactly.
Casting Director #2: No, the line is pick a bag, so you need to pick up the bag.
Joey: Or, I could just point to it! Huh? Blah, blah, blah, Purina One, point to a bag today. (She just looks at him.) I didnt get it, did I?
Casting Director #2: No.
Joey: Yeah, okay. (Leaves)
[Scene: Casting Director #3s office, Joey is entering.]
Joey: Hi. Im Joey Tribbiani; Im here to audition for (Groans) man.
Casting Director #3: You mean dying man?
Joey: Yes!
[Scene: Monica and Rachel's, Monica and Rachel are playing phone pranks on Ross.]
Monica: Okay, come on, do it one more time!
Rachel: Really? Really?!
Monica: Yes!
Rachel: Okay! (Picks up the phone and starts dialing.) (In an Irish accent) "Hello Ross, this is Dr. McNeeley from the Fake Accent University, wed like you to come on board with us full time! (Hangs up.)
Phoebe: (entering) Hey!
Rachel: Hey!
Phoebe: Listen to this! My reading was wrong, Im not going die!
Rachel: Really?! How do you know?
Phoebe: Because my psychic is dead! She mustve read the cards wrong!
Rachel: Oh, Im sorry.
Phoebe: Eh, better her than me! Hey, lets bake cookies!
[Scene: Silvercup Studios, Joey has won the part of dying man and is now able to play the role he was injured for. Chandler is helping to carry him in.]
Chandler: Listen, Im really glad you got the part.
Joey: (barely audible through the pain) Thank you.
Chandler: But are you sure you can do this?
Joey: Yeah! And hey, thanks for coming with me. And thanks again for helping me take a shower.
(Chandler steps away quickly.)
Chandler: Now, is that never talking about it again?!
Joey: (to the director) Hiya!
The Director: Hey Joey, were ready for ya! (Joey stumbles over) Joey, this is Alex hes going to be playing your son.
Joey: Hi Alex! (to the director) And uh, as you can see my hands are not in my pants. (Holds them both up.)
The Director: Okay. (to Alex) All right uh, Alex now when Joey says his line, "Take good care of your Momma son," thats your cue to cry. Got it? (Alex nods yes.) All right, lets do this.
(Joey lies down on the gurney.)
A Crew Member: (with that board thingy) Scene 5, take 1.
The Director: And Action!
Joey: "Take could care of your Momma son." (Alex just looks at him and the director motions for him to continue so he tries it again.) "Take could care of your Momma son." (Alex does nothing.) "Come on son! Your Mommas good people!"
The Director: Cut! Alex, remember youre supposed to cry. Can you cry for us this time?
Alex: Okay.
The Director: All right, from the top.
A Crew Member: Scene 5, take 2.
[Time lapse.]

The Director: All right! Lets try this again! You ready Joe?
Joey: Ah, just one thing umm, is it all right with you if I, if I scream right up until you say action?
The Director: Uh sure.
Joey: Okay. (Starts screaming.)
The Director: Action!
Joey: (he stops screaming at action) "Take good care of your Momma son." (Again Alex does nothing.)
The Director: Cut!!!!!!!!!! (Joey starts screaming again.)
(Chandler decides to help out.)
Chandler: Im sorry!  (He does.) Take a look at this kiddo. (Alex finally starts crying.) We have a crying child!
[Scene: Ross and Rachels apartment, Rachel is unpacking as the phone rings.]
Rachel: (answering it) Hello?
Russell: (Rosss divorce lawyer.) Hello, is Ross there?
Rachel: Uh no, hes not. Can I take a message?
Russell: Yes, this Russell, Rosss divorce lawyer, just tell him that since I havent heard from him, I assume hes decided to give the marriage a try.
Rachel: Ross got married againNooooooo!!!!!!!!!
[Scene: a NYU lecture hall, Ross is trying to phase out his accent.]
Ross: (in his head) All right, keep going. We are phasing the accent out, phasing it out. So without out re-testing the results in the laboratory (pronounced the British way) the team would never have identified (British) the initial errors in their carbon dating analysis (British). Were there any questions at this point? (One student raises his hand.) Yes. (Points to him.)
A Student: Whats happening to your accent?
Ross: (British) Come again? Whats-whats this nonsense? (Giggles.) (American.) All right, Im-Im not English. Im from Long Island. I was really nervous and the accent just uh, just came out. Im sorry. So, if we could just get back to the lecture. Umm, were there any questions? (Everyone raises their hands) About paleontology. (They all put their hands down.) All right, look I was just trying to make a good first impression.  But what you guys think of me is really important because Im-Im hoping to get a permanent job here. So if you just give me another chance to make a good impression
(At this moment Rachel bursts through the door. Needless to say, shes not in the best of moods having just found out Rosss dirty little secret.)
Rachel: Ross!! Are you crazy?! I am still your wife!! What, were you just never gonna tell me?!!
Ross: (in the accent again) Well, hello Rachel!
Ending Credits
[Scene: Chandler and Joey's, Joey is holding a football helmet; and apparently, in a rather disgusting scene, Joey wants Phoebe to beat him senseless. (Luckily it isnt a long trip.) Because hes made a miraculous recovery from his hernia and wants to take advantage of all those free surgeries he can get now since hes re-established his health insurance.]
Phoebe: Have you really done this before?
Joey: Yeah! Yeah! Yeah! You just take a big, big swing. Now, dont hold back. (He dons his protective helmet (Why, I have no clue.) and Phoebe picks up a wooden baseball bat and starts to swing as Chandler and Monica enter.)
Phoebe: Hey!
Joey: Hey-hey-hey!
Chandler: What are you doing?
Phoebe: Were just celebrating that Joey got his health insurance back.
Chandler: Oh, all right.
(Decided that they are less than human as well, Chandler picks up a golf club and Monica a frying pan, to join in on the fun of beating their good friend to within an inch of his life!)
End


Yelp Map
Examples
Where are the first 100 businesses in Phoenix?
Questions
Where are all the McDonloads in Phoenix?
Where are all the Starbucks in Phoenix?
Where are all the McDonloads and Starbucks in Phoenix?
- McDonloads (blue circles)
- Starbucks (green circles)
What are the star ratings of a sample of 200 businesses in Phonenix?
- represent star rating using the brightness of red
How are Starbucks located with respect to the city center of Phonenix?
- draw a line from each Starbucks to the city center
How is the distance from the city center related to the number of reviews?
- same as above, but represent the number of reviews using the size of each circle
Where are good restaurants in Phoenix?
- a restaurant is a business that belongs to the "Restaurants" category
- a good restaurant is defined as one with at least 3.5 star ratings and at least 5 reviews
What are the open/close statues of good restaurants in Phoenix?
- based on the previous map, mark open using green, close using red
What are the UPS stores and what are their coverages?
- coverage is defined as within a 5000 meter radius
Where are McDonald's and Burger Kings competing nearby?
- nearby is defined as within 1000 meters


EXAMPLES
Ownership
1) Description
The ownership example is used to illustrate the concept of Shared Ownership, controlled
through QoS, in DDS.
2) Design
It consists of 4 units :
- CheckStatus : provides return status checking
- DDSEntityManager : implements a class providing operations to setup DCPS
entities(creation, deletion)
- Publisher application implements the 2 publishers sharing the same topic.
- Subscriber implements the subscriber.
3) Scenario
Two StockQuote Publishers of different ownership strengths publish topics with the same
keyfields. The subscriber will receive the topics from the publisher with higher strength.
In this example :
- a publisher "pub1" having an ownership strength set to 5 sends periodically 20
StockQuotes at a period of 200ms.
- after 2 seconds a second publisher "pub2" with a higher strength (10) sends 5
StockQuotes at a period of 200ms. When receiving a topic, the subscriber will display the :
- the key field (always "MSFT")
- the price field
- the publisher name ("pub1" or "pub2")
The publisher will receive :
- first StockQuotes from "pub1" (during the first 2 seconds)
- then from "pub2"
- then from "pub1" again when "pub2" stops.
Running of examples in Standalone Mode
Running the examples in a Posix environment
Environment Setup
Let's call OpenSplice_install_dir the OpenSplice installation directory.
The OpenSplice environment variables must be set in order for the examples to build/run correctly.
To do this, open a terminal and source the "OpenSplice_install_dir/release.com" script supplied with the distribution.
C and C++ Executables
Building the examples is described on the Summary page
Two executables and a library are generated in the standalone directory when the example is built:
For C++
- sacpp_ownership_pub
- sacpp_ownership_sub
- libsacpp_ownership_types.so
For C
- sac_ownership_pub
- sac_ownership_sub
- libsac_ownership_types.so
Java executables
Building the examples is described on the Summary page
Three jars are generated in the java/standalone or java5 directory when the example is built:
For Java
- saj_ownership_sub.jar
- saj_ownership_pub.jar
- saj_ownership_types.jar
For Java5
- java5_Ownership_sub.jar
- java5_Ownership_pub.jar
ISO C++ 2 Executables
Building the examples is described on the Summary page
Two executables are generated in the isocpp2 directory when the example is built:
Running the example
Ensure that the environment for OpenSplice is set up correctly as described above for each new terminal used.
It is recommended that you run the subscriber and publisher in separate terminals to avoid mixing the output
Running in single process (heap memory) configuration : the application starts OpenSplice middleware
- OpenSplice is deployed in this mode by default.
- The OpenSplice daemon should not be started manually. Instead the OpenSplice middleware and optional services are implicitly started by the single process applications as required
- Open 2 or more terminals. Set up the environment and go to the example directory as described above
Running in multiple process shared memory configuration
To enable deployment in this mode, an OpenSplice configuration file must be selected that has shared memory support e.g. one of the ospl_shmem xml configuration files found in the OpenSplice_install_dir/etc/config directory.
- Open 2 or more terminals. In each terminal:
- Setup the environment and go to the example directory as described above
- Set the required configuration file e.g. OSPL_URI=file://$OSPL_HOME/etc/config/ospl_shmem_ddsi.xml
- Start the OpenSplice daemon. You can do this by typing ospl start
Starting the subscriber and publisher
- In the first terminal start the subscriber by running either
- sac_ownership_sub for C
- sacpp_ownership_sub for C++
- java -jar saj_ownership_sub.jar for Java
- java -jar sub/java5_Ownership_sub.jar for Java5
- subscriber for ISO C++ 2
- In a second terminal start the publisher by running either
- sac_ownership_pub pub1 5 40 1 for C
- sacpp_ownership_pub pub1 5 40 1 for C++
- java -jar saj_ownership_pub.jar pub1 5 40 1 for Java
- java -jar pub/java5_Ownership_pub.jar pub1 5 40 1 for Java5
- publisher pub1 5 40 1 for ISO C++ 2
In another terminal start the publisher by running either
- sac_ownership_pub pub2 10 5 0 for C
- sacpp_ownership_pub pub2 10 5 0 for C++
- java -jar saj_ownership_pub.jar pub2 10 5 0 for Java
- java -jar pub/java5_Ownership_pub.jar pub2 10 5 0 for Java5
- publisher pub2 10 5 0 for ISO C++ 2
Publisher usage, e.g.:
sac_ownership_pub [publisher_name] [ownership_strength] [nb_iterations] [stop_subscriber_flag]
publisher_name
ownership_strength
nb_iterations : number of sending message iterations
stop_subscriber_flag : indicates if the publisher has to send a message to tell the subscriber to stop
Running C/C++/C#/ISO C++ 2/Java examples on Windows
Environment Setup
Let's call OpenSplice_install_dir the OpenSplice installation directory.
The OpenSplice environment variables must be set in order for the examples to run correctly.
To do this open an OpenSplice Command Prompt which will set up the environment variables for OpenSplice automatically. The OpenSplice Command Prompt can be selected from the start menu. Alternatively, open a windows Command Prompt and execute the "OpenSplice_install_dir\release.bat" batch script supplied with the distribution.
C/C++/C# Executables
Building the examples is described on the Summary page
Two executables are generated in the standalone directory when the example is built:
For C
- sac_ownership_sub.exe
- sac_ownership_pub.exe
For C++
- sacpp_ownership_sub.exe
- sacpp_ownership_pub.exe
For C#
- sacs_ownership_sub.exe
- sacs_ownership_pub.exe
Java Executables
Building the examples is described on the Summary page
Three jars are generated in the java/standalone or java5 directory when the example is built:
For Java
- saj_ownership_sub.jar
- saj_ownership_pub.jar
- saj_ownership_types.jar
For Java5
- java5_Ownership_sub.jar
- java5_Ownership_pub.jar
ISO C++ 2 Executables
Building the examples is described on the Summary page
Two executables are generated in the isocpp2 directory when the example is built:
- publisher.exe
- subscriber.exe
Running the C/C++/C#/ISO C++ 2/Java Examples
Ensure that the environment for OpenSplice is set up correctly as described above for each new command prompt used.
The following steps describe how to run the examples:
Running in single process (heap memory) configuration : the application starts OpenSplice middleware
- OpenSplice is deployed in this mode by default.
- The OpenSplice daemon should not be started manually. Instead the OpenSplice middleware and optional services are implicitly started by the single process applications as required
- Open 2 or more OpenSplice Command Prompts and go to the example directory as described above
Running in multiple process shared memory configuration
To enable deployment in this mode, an OpenSplice configuration file must be selected that has shared memory support e.g. one of the ospl_shmem xml configuration files found in the OpenSplice_install_dir\etc\config directory.
- Open 2 or more OpenSplice Command Prompts. In each window:
- Go to the example directory as described above
- Set the required configuration file e.g. set OSPL_URI=file://%OSPL_HOME%\etc\config\ospl_shmem_ddsi.xml
- Start the OpenSplice daemon. You can do this by typing ospl start
Starting the subscriber and publisher
- In the first terminal start the subscriber by running either
- sac_ownership_sub for C
- sacpp_ownership_sub for C++
- sacs_ownership_sub for C#
- java -jar saj_ownership_sub.jar for Java
- java -jar sub/java5_Ownership_sub.jar for Java5
- subscriber for ISO C++ 2
- In a second terminal start the publisher by running either
- sac_ownership_pub pub1 5 40 1 for C
- sacpp_ownership_pub pub1 5 40 1 for C++
- sacs_ownership_pub pub1 5 40 1 for C#
- java -jar saj_ownership_pub.jar pub1 5 40 1 for Java
- java -jar pub/java5_Ownership_pub.jar pub1 5 40 1 for Java5
- publisher pub1 5 40 1 for ISO C++ 2
In another terminal start the publisher by running either
- sac_ownership_pub pub2 10 5 0 for C
- sacpp_ownership_pub pub2 10 5 0 for C++
- sacs_ownership_pub pub2 10 5 0 for C#
- java -jar saj_ownership_pub.jar pub2 10 5 0 for Java
- java -jar pub/java5_Ownership_pub.jar pub2 10 5 0 for Java5
- publisher pub2 10 5 0 for ISO C++ 2
Publisher usage, e.g.:
sac_ownership_pub [publisher_name] [ownership_strength] [nb_iterations] [stop_subscriber_flag]
publisher_name
ownership_strength
nb_iterations : number of sending message iterations
stop_subscriber_flag : indicates if the publisher has to sent a message to tell the subscriber to stop


ContextLogger2 OAQ (Occasionally Asked Questions)
Wed Sep 15 17:44:41 2010
- Is introducing new sensors easy?
- We've tried to avoid any arduous requirements that would make it harder to implement new sensors than it already is.
- Basically, sensor scanners may be implemented in C, C++, or Lua. They are objects for which at least two operations must be defined, namely create and destroy, but there is no particular class interface to implement or anything. They must observe for sensor events without busy looping or blocking the main thread; typically on Symbian they would play ball with the Symbian event loop. There is no requirement as to sensor data representation, the scanner must simply insert the data into an SQLite database using whatever format or schema they like. Errors are generally to be handled internally, and possibly logged; there is the option of requesting the whole logger process to exit, to possibly be recreated later by the watchdog. That is basically it.
- How much data does CL2 approximately collect per week?
- A lot depends on the sensor set used, the sampling frequency, and the amount of activity on the phone, but for instance one 1-month long test run yielded slightly less than 2 MB worth of data.
- Is installation only a matter of installing a single client on the device, without anything else being required?
- Things are almost that simple but not quite. Only a single piece of client software is required to collect data, but that client must be started somehow. The different options include:
- One option is to embed the client in another application, in which case it will run when the host application is running.
- There is also the option of building the client with a (very basic) GUI of its own, in which case it can be started and stopped easily, and can run independent of any other application.
- A typical solution would be to install the watchdog program, which takes care of starting the logger client.
- Yet another option is to install the provided launcher application, and use that to control the logger client.
- Does CL also collect the UIDs of applications (so that one need not identify focused applications based on their name alone).
- Is it possible to send trial users questions by having CL2 present pop-up dialogs to the users? In other words, is "experience sampling" supported?
- No, and this feature is not on the roadmap.
- What devices are supported?
- In principle all S60 3rd and 5th Edition devices should be supported, at least when it comes to basic functionality. (The software may work on Symbian^3 devices, but we have yet to test this.) Not all functionality is necessarily available on all devices, as some of the functionality is implemented in terms of APIs that are not available on all platform versions. Also, we have not tested the software on the multitude of different S60 phones. We primarily test on S60 3rd FP1 and S60 5th devices.
- What format is the data in?
- In SQLite3 database file format. The format is, to our knowledge, platform independent.
- The database schemas we are using are rather simplistic, but these can be changed as required to better support efficient on-device queries.
- How can one get access to the data?
- One can simply copy the data file off the device. There is also support for uploading said files automatically at predefined times via HTTP or HTTP over SSL.
- Support for doing queries on the active dataset from other local applications (via the Symbian client/server protocol) and from remote applications (via XMPP) is partially implemented.
- Who owns the data?
- This is not our concern. The data collected by CL2 does not go to HIIT servers unless CL2 is specifically configured to upload it there.
- Is the privacy and anonymity of users guaranteed?
- The data that is on the device is not encrypted. Uploads are optional, and can optionally be done over SSL. SSL provides server authentication and confidenciality of the data while in transit. A username is sent alongside each upload.
- These factors are just one part of the overall privacy/anonymity picture, and as such neither guarantee or preclude privacy and anonymity of users.
- Is it possible for users to view the data being collected regarding their device use?
- There is no plan to provide a user-friendly interface for this purpose, but neither are we planning to take steps to prevent people from being able to access the data.
- Something to note, though, is that once a chunk of data is uploaded to a server, the local copy is deleted.
- Does the software really work on the Nokia N80?
- Yes, but the system software has to be bug-free enough, so upgrade to more recent firmware as necessary. Version 5.0719.0.2 at least should work, but is not available for all regions, so you may have to change the product code of your phone to be able to get the upgrade.
Tero Hasu


Results
The below video demonstrates how correct words are predicted from sequence of 4 letters. We provided a series of characters 'b','a','y','d' and it displayed "BAD" as the corrected output.
1. HoG + SVM works really well on the Treisch dataset as it is nicely centered. But, when the model trained on this dataset is used in a live video, the predictions fail.
2. HoG + SVM has slightly worse accuracy for in-set when trained using our dataset. But the model trained using this dataset works a lot better with live video.
Dataset
In-Set Accuracy
Live-Video Accuracy
Triesch
87%
40%
4-Letter Dataset
80%
65%
9-Letter Dataset
78%
61%
Initially we started training out models with only 4 different letters. However this was not enough as when the hands were changed(right -> left), the accuracy of the classifier fell. We also included height, width and the ratio of the bounding box in training the classifier. These features were given more significance as they were better spread out as seen from the PCA plot.
Another problem we faced was to find letter boundaries, this was done using edge filtering. Since edge filtering was used we were not able to form words where a certain letter is consecutively repeated. To remove this drawback and also to include a word auto-correct feature, we implemented a word speller(using autocorrect library in python). The combination of letter edge filtering along with word prediction enabled us to create words using fingerspelling gestures. Additionally, it also increased our overall datasets spread as more letters could be incorporated into words due to the auto-correct feature.
The below video demonstrates how correct words are predicted from sequence of 4 letters. We provided a series of characters 'b','a','y','d' and it displayed "BAD" as the corrected output.
VIDEO
Conclusion
In this project we have demonstrated an application of Hand-Gesture recognition in ASL fingerspelling by detecting 9 letters of the English alphabet. Future work will primarily comprise of expanding the dataset to include more letters.


{% extends 'layout.html' %} {% block content %}
| Your Song Answer | Was your song correct? | Correct Song | Your Artist Answer | Was your artist correct? | Correct Artist | Marks Scored (/10) | Date Attempted |
|---|---|---|---|---|---|---|---|
| {{ result.answerSong }} | {{ "Yes" if result.isAnswerSongCorrect else "No" }} | {{ result.correctSongName }} | {{ result.answerArtist }} | {{ "Yes" if result.isAnswerArtistCorrect else "No" }} | {{ result.correctArtist }} | {{ result.isAnswerArtistCorrect*5 + result.isAnswerSongCorrect*5}} | {{ result.date_created|datetimeformat }} |


To start out with, I wanted to see how quickly I could get a really simple version of Pong working. I ended up using only behaviors and hacked together the working version below in about an hour.
This approach has a lot of flaws. The code for each behavior is pretty specific to this implementation, and I couldn't so something like change the field size in the stylesheet without causing the demo to fail. At this point we also haven't implemented a complete solution because there is no AI opponent, and there are no rounds, just one never-ending game.
What I DO have however is a set of scoped behaviors which I can use to create multiple games on the same page. That counts for something right? I also have a demo that looks a lot like Pong that I can build on for the next version that will tackle some of the architechture problems in this iteration.


Contributing to Sphinx¶
There are many ways you can contribute to Sphinx, be it filing bug reports or feature requests, writing new documentation or submitting patches for new or fixed behavior. This guide serves to illustrate how you can get started with this.
Getting help¶
The Sphinx community maintains a number of mailing lists and IRC channels.
- Stack Overflow with tag python-sphinx
Questions and answers about use and development.
- sphinx-users<EMAIL_ADDRESS>Mailing list for user support.
- sphinx-dev<EMAIL_ADDRESS>Mailing list for development related discussions.
- #sphinx-doc on irc.freenode.net
IRC channel for development questions and user support.
Bug Reports and Feature Requests¶
If you have encountered a problem with Sphinx or have an idea for a new feature, please submit it to the issue tracker on GitHub or discuss it on the sphinx-dev mailing list.
For bug reports, please include the output produced during the build process and also the log file Sphinx creates after it encounters an unhandled exception. The location of this file should be shown towards the end of the error message.
Including or providing a link to the source files involved may help us fix the issue. If possible, try to create a minimal project that produces the error and post that instead.
Writing code¶
The Sphinx source code is managed using Git and is hosted on GitHub. The recommended way for new contributors to submit code to Sphinx is to fork this repository and submit a pull request after committing changes to their fork. The pull request will then need to be approved by one of the core developers before it is merged into the main repository.
Getting started¶
Before starting on a patch, we recommend checking for open issues or open a fresh issue to start a discussion around a feature idea or a bug. If you feel uncomfortable or uncertain about an issue or your changes, feel free to email the sphinx-dev mailing list.
These are the basic steps needed to start developing on Sphinx.
Create an account on GitHub.
Fork the main Sphinx repository (sphinx-doc/sphinx) using the GitHub interface.
Clone the forked repository to your machine.
git clone https://github.com/USERNAME/sphinx cd sphinx
Checkout the appropriate branch.
Sphinx adopts Semantic Versioning 2.0.0 (refs: https://semver.org/ ).
For changes that preserves backwards-compatibility of API and features, they should be included in the next MINOR release, use the
A.x
branch.git checkout A.x
For incompatible or other substantial changes that should wait until the next MAJOR release, use the
master
branch.For urgent release, a new PATCH branch must be branched from the newest release tag (see Sphinx’s release process for detail).
Setup a virtual environment.
This is not necessary for unit testing, thanks to
tox
, but it is necessary if you wish to runsphinx-build
locally or run unit tests without the help oftox
:virtualenv ~/.venv . ~/.venv/bin/activate pip install -e .
Create a new working branch. Choose any name you like.
git checkout -b feature-xyz
Hack, hack, hack.
Write your code along with tests that shows that the bug was fixed or that the feature works as expected.
Add a bullet point to
CHANGES
if the fix or feature is not trivial (small doc updates, typo fixes), then commit:git commit -m '#42: Add useful new feature that does this.'
GitHub recognizes certain phrases that can be used to automatically update the issue tracker. For example:
git commit -m 'Closes #42: Fix invalid markup in docstring of Foo.bar.'
would close issue #42.
Push changes in the branch to your forked repository on GitHub:
git push origin feature-xyz
Submit a pull request from your branch to the respective branch (
master
orA.x
).Wait for a core developer to review your changes.
Coding style¶
Please follow these guidelines when writing code for Sphinx:
Try to use the same code style as used in the rest of the project.
For non-trivial changes, please update the
CHANGES
file. If your changes alter existing behavior, please document this.New features should be documented. Include examples and use cases where appropriate. If possible, include a sample that is displayed in the generated output.
When adding a new configuration variable, be sure to document it and update
sphinx/cmd/quickstart.py
if it’s important enough.Add appropriate unit tests.
Style and type checks can be run using tox
:
tox -e mypy
tox -e flake8
Unit tests¶
Sphinx is tested using pytest for Python code and Karma for JavaScript.
To run Python unit tests, we recommend using tox
, which provides a number
of targets and allows testing against multiple different Python environments:
To list all possible targets:
tox -av
To run unit tests for a specific Python version, such as Python 3.6:
tox -e py36
To run unit tests for a specific Python version and turn on deprecation warnings on so they’re shown in the test output:
PYTHONWARNINGS=all tox -e py36
Arguments to
pytest
can be passed viatox
, e.g. in order to run a particular test:tox -e py36 tests/test_module.py::test_new_feature
You can also test by installing dependencies in your local environment:
pip install .[test]
To run JavaScript tests, use npm
:
npm install
npm run test
New unit tests should be included in the tests
directory where
necessary:
For bug fixes, first add a test that fails without your changes and passes after they are applied.
Tests that need a
sphinx-build
run should be integrated in one of the existing test modules if possible. New tests that to@with_app
and thenbuild_all
for a few assertions are not good since the test suite should not take more than a minute to run.
New in version 1.8: Sphinx also runs JavaScript tests.
New in version 1.6: sphinx.testing
is added as a experimental.
Changed in version 1.5.2: Sphinx was switched from nose to pytest.
Utility functions and pytest fixtures for testing are provided in
sphinx.testing
. If you are a developer of Sphinx extensions, you can write
unit tests with using pytest. At this time, sphinx.testing
will help your
test implementation.
How to use pytest fixtures that are provided by sphinx.testing
? You can
require 'sphinx.testing.fixtures'
in your test modules or conftest.py
files like this:
pytest_plugins = 'sphinx.testing.fixtures'
If you want to know more detailed usage, please refer to tests/conftest.py
and other test_*.py
files under tests
directory.
Writing documentation¶
You can build documentation using tox
:
tox -e docs
Translations¶
The parts of messages in Sphinx that go into builds are translated into several
locales. The translations are kept as gettext .po
files translated from the
master template sphinx/locale/sphinx.pot
.
Sphinx uses Babel to extract messages
and maintain the catalog files. It is integrated in setup.py
:
Use
python setup.py extract_messages
to update the.pot
template.Use
python setup.py update_catalog
to update all existing language catalogs insphinx/locale/*/LC_MESSAGES
with the current messages in the template file.Use
python setup.py compile_catalog
to compile the.po
files to binary.mo
files and.js
files.
When an updated .po
file is submitted, run compile_catalog to commit both
the source and the compiled catalogs.
When a new locale is submitted, add a new directory with the ISO 639-1 language
identifier and put sphinx.po
in there. Don’t forget to update the possible
values for :confval:`language` in doc/usage/configuration.rst
.
The Sphinx core messages can also be translated on Transifex. There tx
client tool,
which is provided by the transifex_client
Python package, can be used to
pull translations in .po
format from Transifex. To do this, go to
sphinx/locale
and then run tx pull -f -l LANG
where LANG
is an
existing language identifier. It is good practice to run python setup.py
update_catalog
afterwards to make sure the .po
file has the canonical
Babel formatting.
Debugging tips¶
Delete the build cache before building documents if you make changes in the code by running the command
make clean
or using thesphinx-build -E
option.Use the
sphinx-build -P
option to runpdb
on exceptions.Use
node.pformat()
andnode.asdom().toxml()
to generate a printable representation of the document structure.Set the configuration variable :confval:`keep_warnings` to
True
so warnings will be displayed in the generated output.Set the configuration variable :confval:`nitpicky` to
True
so that Sphinx will complain about references without a known target.Set the debugging options in the Docutils configuration file.
JavaScript stemming algorithms in
sphinx/search/*.py
(excepten.py
) are generated by this modified snowballcode generator. Generated JSX files are in this repository. You can get the resulting JavaScript files using the following command:npm install node_modules/.bin/grunt build # -> dest/*.global.js